Explorar el Código

解决冲突,删除不需编译的文件

lixioayao hace 6 años
padre
commit
afa4e0f573

+ 8 - 21
.gitignore

@@ -1,13 +1,18 @@
 .*
 *.o
-*bak
+*.log
+*.a
+*.bak
 *.sh
 *.out
 *.raw
+*.scan
+*.in
+*.m4
+*.status
+autom4te.cache/*
 /.deps/
 /bak/
-config.log
-config.status
 test
 yals
 async
@@ -17,23 +22,5 @@ CMakeFiles/
 .idea/
 .git/
 .vscode/
-*/*/output.*
-*/output.*
-*/*/traces.*
-*/traces.*
-output.*
-traces.*
-Makefile.in
-aclocal.m4
-*/aclocal.m4
-*/COPYING
-*/INSTALL
-autom4te.cache/*
-db/autom4te.cache/*
-*/autom4te.cache/*
-db/autom4te.cache/*.*
-traces.*
-output.*
-db/autom4te.cache/output.0
 
 

+ 0 - 1
a.sh

@@ -1 +0,0 @@
-g++ ant.cpp point.cpp -std=c++11 -I../include -lzlog -D_TEST

+ 0 - 944
aclocal.m4

@@ -1,944 +0,0 @@
-# generated automatically by aclocal 1.12.3 -*- Autoconf -*-
-
-# Copyright (C) 1996-2012 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.
-
-# 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.
-
-m4_ifndef([AC_AUTOCONF_VERSION],
-  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
-[m4_warning([this file was generated for autoconf 2.69.
-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'.])])
-
-# Copyright (C) 2002-2012 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.
-
-# AM_AUTOMAKE_VERSION(VERSION)
-# ----------------------------
-# Automake X.Y traces this macro to ensure aclocal.m4 has been
-# generated from the m4 files accompanying Automake X.Y.
-# (This private macro should not be called outside this file.)
-AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.12'
-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.12.3], [],
-      [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 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.12.3])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 -*-
-
-# Copyright (C) 2001-2012 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.
-
-# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
-# $ac_aux_dir to '$srcdir/foo'.  In other projects, it is set to
-# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
-#
-# Of course, Automake must honor this variable whenever it calls a
-# tool from the auxiliary directory.  The problem is that $srcdir (and
-# therefore $ac_aux_dir as well) can be either absolute or relative,
-# depending on how configure is run.  This is pretty annoying, since
-# it makes $ac_aux_dir quite unusable in subdirectories: in the top
-# source directory, any form will work fine, but in subdirectories a
-# relative path needs to be adjusted first.
-#
-# $ac_aux_dir/missing
-#    fails when called from a subdirectory if $ac_aux_dir is relative
-# $top_srcdir/$ac_aux_dir/missing
-#    fails if $ac_aux_dir is absolute,
-#    fails when called from a subdirectory in a VPATH build with
-#          a relative $ac_aux_dir
-#
-# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
-# are both prefixed by $srcdir.  In an in-source build this is usually
-# harmless because $srcdir is '.', but things will broke when you
-# start a VPATH build or use an absolute $srcdir.
-#
-# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
-# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
-#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
-# and then we would define $MISSING as
-#   MISSING="\${SHELL} $am_aux_dir/missing"
-# This will work as long as MISSING is not called from configure, because
-# unfortunately $(top_srcdir) has no meaning in configure.
-# However there are other variables, like CC, which are often used in
-# configure, and could therefore not use this "fixed" $ac_aux_dir.
-#
-# Another solution, used here, is to always expand $ac_aux_dir to an
-# absolute PATH.  The drawback is that using absolute paths prevent a
-# configured tree to be moved without reconfiguration.
-
-AC_DEFUN([AM_AUX_DIR_EXPAND],
-[dnl Rely on autoconf to set up CDPATH properly.
-AC_PREREQ([2.50])dnl
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
-])
-
-# AM_CONDITIONAL                                            -*- Autoconf -*-
-
-# Copyright (C) 1997-2012 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.
-
-# AM_CONDITIONAL(NAME, SHELL-CONDITION)
-# -------------------------------------
-# Define a conditional.
-AC_DEFUN([AM_CONDITIONAL],
-[AC_PREREQ([2.52])dnl
- m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
-       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
-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='#'
-else
-  $1_TRUE='#'
-  $1_FALSE=
-fi
-AC_CONFIG_COMMANDS_PRE(
-[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
-  AC_MSG_ERROR([[conditional "$1" was never defined.
-Usually this means the macro was only invoked conditionally.]])
-fi])])
-
-# Copyright (C) 1999-2012 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.
-
-
-# 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,
-# will think it sees a *use*, and therefore will trigger all it's
-# C support machinery.  Also note that it means that autoscan, seeing
-# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
-
-
-# _AM_DEPENDENCIES(NAME)
-# ----------------------
-# See how the compiler implements dependency checking.
-# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
-# We try a few techniques and use that to set a single cache variable.
-#
-# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
-# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
-# dependency, and given that the user is not expected to run this macro,
-# just rely on AC_PROG_CC.
-AC_DEFUN([_AM_DEPENDENCIES],
-[AC_REQUIRE([AM_SET_DEPDIR])dnl
-AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
-AC_REQUIRE([AM_MAKE_INCLUDE])dnl
-AC_REQUIRE([AM_DEP_TRACK])dnl
-
-m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
-      [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
-      [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
-      [$1], [OBJCXX], [depcc="$OBJCXX" 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=])
-
-AC_CACHE_CHECK([dependency style of $depcc],
-               [am_cv_$1_dependencies_compiler_type],
-[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".
-  rm -rf conftest.dir
-  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
-
-  am_cv_$1_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
-  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
-    # 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 10 /bin/sh.
-      echo '/* dummy */' > 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
-	break
-      fi
-      ;;
-    msvc7 | msvc7msys | 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
-    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_$1_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_$1_dependencies_compiler_type=none
-fi
-])
-AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
-AM_CONDITIONAL([am__fastdep$1], [
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
-])
-
-
-# AM_SET_DEPDIR
-# -------------
-# Choose a directory name for dependency files.
-# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
-AC_DEFUN([AM_SET_DEPDIR],
-[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
-])
-
-
-# AM_DEP_TRACK
-# ------------
-AC_DEFUN([AM_DEP_TRACK],
-[AC_ARG_ENABLE([dependency-tracking], [dnl
-AS_HELP_STRING(
-  [--enable-dependency-tracking],
-  [do not reject slow dependency extractors])
-AS_HELP_STRING(
-  [--disable-dependency-tracking],
-  [speeds up one-time build])])
-if test "x$enable_dependency_tracking" != xno; then
-  am_depcomp="$ac_aux_dir/depcomp"
-  AMDEPBACKSLASH='\'
-  am__nodep='_no'
-fi
-AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-AC_SUBST([AMDEPBACKSLASH])dnl
-_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
-AC_SUBST([am__nodep])dnl
-_AM_SUBST_NOTMAKE([am__nodep])dnl
-])
-
-# Generate code to set up dependency tracking.              -*- Autoconf -*-
-
-# Copyright (C) 1999-2012 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.
-
-
-# _AM_OUTPUT_DEPENDENCY_COMMANDS
-# ------------------------------
-AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
-[{
-  # 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"`
-    # 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'`; 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
-}
-])# _AM_OUTPUT_DEPENDENCY_COMMANDS
-
-
-# AM_OUTPUT_DEPENDENCY_COMMANDS
-# -----------------------------
-# This macro should only be invoked once -- use via AC_REQUIRE.
-#
-# This code is only required when automatic dependency tracking
-# is enabled.  FIXME.  This creates each '.P' file that we will
-# need in order to bootstrap the dependency handling code.
-AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
-[AC_CONFIG_COMMANDS([depfiles],
-     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
-     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
-])
-
-# Do all the work for Automake.                             -*- Autoconf -*-
-
-# Copyright (C) 1996-2012 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.
-
-# 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.
-
-# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
-# AM_INIT_AUTOMAKE([OPTIONS])
-# -----------------------------------------------
-# The call with PACKAGE and VERSION arguments is the old style
-# call (pre autoconf-2.50), which is being phased out.  PACKAGE
-# and VERSION should now be passed to AC_INIT and removed from
-# the call to AM_INIT_AUTOMAKE.
-# We support both call styles for the transition.  After
-# the next Automake release, Autoconf can make the AC_INIT
-# 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.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
-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
-if test -z "$CYGPATH_W"; then
-  if (cygpath --version) >/dev/null 2>/dev/null; then
-    CYGPATH_W='cygpath -w'
-  else
-    CYGPATH_W=echo
-  fi
-fi
-AC_SUBST([CYGPATH_W])
-
-# Define the identity of the package.
-dnl Distinguish between old-style and new-style calls.
-m4_ifval([$2],
-[AC_DIAGNOSE([obsolete],
-[$0: two- and three-arguments forms are deprecated.  For more info, see:
-http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_INIT_AUTOMAKE-invocation])
-m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
- 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], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
-  [ok:ok],,
-  [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
-
-_AM_IF_OPTION([no-define],,
-[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
- AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
-
-# Some tools Automake needs.
-AC_REQUIRE([AM_SANITY_CHECK])dnl
-AC_REQUIRE([AC_ARG_PROGRAM])dnl
-AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
-AM_MISSING_PROG([AUTOCONF], [autoconf])
-AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
-AM_MISSING_PROG([AUTOHEADER], [autoheader])
-AM_MISSING_PROG([MAKEINFO], [makeinfo])
-AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
-AC_REQUIRE([AC_PROG_MKDIR_P])dnl
-# For better backward compatibility.  To be removed once Automake 1.9.x
-# dies out for good.  For more background, see:
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
-AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
-# We need awk for the "check" target.  The system "awk" is bad on
-# some platforms.
-AC_REQUIRE([AC_PROG_AWK])dnl
-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([no-dependencies],,
-[AC_PROVIDE_IFELSE([AC_PROG_CC],
-		  [_AM_DEPENDENCIES([CC])],
-		  [m4_define([AC_PROG_CC],
-			     m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_CXX],
-		  [_AM_DEPENDENCIES([CXX])],
-		  [m4_define([AC_PROG_CXX],
-			     m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_OBJC],
-		  [_AM_DEPENDENCIES([OBJC])],
-		  [m4_define([AC_PROG_OBJC],
-			     m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
-dnl Support for Objective C++ was only introduced in Autoconf 2.65,
-dnl but we still cater to Autoconf 2.62.
-m4_ifdef([AC_PROG_OBJCXX],
-[AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
-		  [_AM_DEPENDENCIES([OBJCXX])],
-		  [m4_define([AC_PROG_OBJCXX],
-			     m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])])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.
-# This file resides in the same directory as the config header
-# that is generated.  The stamp files are numbered to have different names.
-
-# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
-# loop where config.status creates the headers, so we can generate
-# 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
-    $_am_arg | $_am_arg:* )
-      break ;;
-    * )
-      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
-  esac
-done
-echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-
-# Copyright (C) 2001-2012 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.
-
-# AM_PROG_INSTALL_SH
-# ------------------
-# Define $install_sh.
-AC_DEFUN([AM_PROG_INSTALL_SH],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-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-2012 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.
-
-# Check whether the underlying file-system supports filenames
-# with a leading dot.  For instance MS-DOS doesn't.
-AC_DEFUN([AM_SET_LEADING_DOT],
-[rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
-  am__leading_dot=.
-else
-  am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-AC_SUBST([am__leading_dot])])
-
-# Check to see how 'make' treats includes.	            -*- Autoconf -*-
-
-# Copyright (C) 2001-2012 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.
-
-# AM_MAKE_INCLUDE()
-# -----------------
-# Check to see how make treats includes.
-AC_DEFUN([AM_MAKE_INCLUDE],
-[am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
-	@echo this is the am__doit target
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-AC_MSG_CHECKING([for style of include used by $am_make])
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# 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
-   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])
-AC_MSG_RESULT([$_am_result])
-rm -f confinc confmf
-])
-
-# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
-
-# Copyright (C) 1997-2012 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.
-
-# AM_MISSING_PROG(NAME, PROGRAM)
-# ------------------------------
-AC_DEFUN([AM_MISSING_PROG],
-[AC_REQUIRE([AM_MISSING_HAS_RUN])
-$1=${$1-"${am_missing_run}$2"}
-AC_SUBST($1)])
-
-# AM_MISSING_HAS_RUN
-# ------------------
-# Define MISSING if not defined so far and test if it supports --run.
-# 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
-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 "
-else
-  am_missing_run=
-  AC_MSG_WARN(['missing' script is too old or missing])
-fi
-])
-
-# Helper functions for option handling.                     -*- Autoconf -*-
-
-# Copyright (C) 2001-2012 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.
-
-# _AM_MANGLE_OPTION(NAME)
-# -----------------------
-AC_DEFUN([_AM_MANGLE_OPTION],
-[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
-
-# _AM_SET_OPTION(NAME)
-# --------------------
-# Set option NAME.  Presently that only means defining a flag for this option.
-AC_DEFUN([_AM_SET_OPTION],
-[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
-
-# _AM_SET_OPTIONS(OPTIONS)
-# ------------------------
-# OPTIONS is a space-separated list of Automake options.
-AC_DEFUN([_AM_SET_OPTIONS],
-[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
-
-# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
-# -------------------------------------------
-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
-AC_DEFUN([_AM_IF_OPTION],
-[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-
-# Check to make sure that the build environment is sane.    -*- Autoconf -*-
-
-# Copyright (C) 1996-2012 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.
-
-# AM_SANITY_CHECK
-# ---------------
-AC_DEFUN([AM_SANITY_CHECK],
-[AC_MSG_CHECKING([whether build environment is sane])
-# 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 (
-   am_has_slept=no
-   for am_try in 1 2; do
-     echo "timestamp, slept: $am_has_slept" > conftest.file
-     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`
-     fi
-     if test "$[*]" != "X $srcdir/configure conftest.file" \
-	&& test "$[*]" != "X conftest.file $srcdir/configure"; then
-
-	# If neither matched, then we have a broken ls.  This can happen
-	# 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".
-	AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
-  alias in your environment])
-     fi
-     if test "$[2]" = conftest.file || test $am_try -eq 2; then
-       break
-     fi
-     # Just in case.
-     sleep 1
-     am_has_slept=yes
-   done
-   test "$[2]" = conftest.file
-   )
-then
-   # Ok.
-   :
-else
-   AC_MSG_ERROR([newly created file is older than distributed files!
-Check your system clock])
-fi
-AC_MSG_RESULT([yes])
-# If we didn't sleep, we still need to ensure time stamps of config.status and
-# generated files are strictly newer.
-am_sleep_pid=
-if grep 'slept: no' conftest.file >/dev/null 2>&1; then
-  ( sleep 1 ) &
-  am_sleep_pid=$!
-fi
-AC_CONFIG_COMMANDS_PRE(
-  [AC_MSG_CHECKING([that generated files are newer than configure])
-   if test -n "$am_sleep_pid"; then
-     # Hide warnings about reused PIDs.
-     wait $am_sleep_pid 2>/dev/null
-   fi
-   AC_MSG_RESULT([done])])
-rm -f conftest.file
-])
-
-# Copyright (C) 2001-2012 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.
-
-# AM_PROG_INSTALL_STRIP
-# ---------------------
-# One issue with vendor 'install' (even GNU) is that you can't
-# specify the program used to strip binaries.  This is especially
-# annoying in cross-compiling environments, where the build's strip
-# is unlikely to handle the host's binaries.
-# Fortunately install-sh will honor a STRIPPROG variable, so we
-# always use install-sh in "make install-strip", and initialize
-# STRIPPROG with the value of the STRIP variable (set by the user).
-AC_DEFUN([AM_PROG_INSTALL_STRIP],
-[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-# 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.
-dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
-if test "$cross_compiling" != no; then
-  AC_CHECK_TOOL([STRIP], [strip], :)
-fi
-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-AC_SUBST([INSTALL_STRIP_PROGRAM])])
-
-# Copyright (C) 2006-2012 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.
-
-# _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-2012 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.
-
-# _AM_PROG_TAR(FORMAT)
-# --------------------
-# Check how to create a tarball in format FORMAT.
-# FORMAT should be one of 'v7', 'ustar', or 'pax'.
-#
-# Substitute a variable $(am__tar) that is a command
-# writing to stdout a FORMAT-tarball containing the directory
-# $tardir.
-#     tardir=directory && $(am__tar) > result.tar
-#
-# Substitute a variable $(am__untar) that extract such
-# a tarball read from stdin.
-#     $(am__untar) < result.tar
-AC_DEFUN([_AM_PROG_TAR],
-[# Always define AMTAR for backward compatibility.  Yes, it's still used
-# in the wild :-(  We should find a proper way to deprecate it ...
-AC_SUBST([AMTAR], ['$${TAR-tar}'])
-m4_if([$1], [v7],
-     [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
-     [m4_case([$1], [ustar],, [pax],,
-              [m4_fatal([Unknown tar format])])
-AC_MSG_CHECKING([how to create a $1 tar archive])
-# Loop over all known methods to create a tar archive until one works.
-_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
-_am_tools=${am_cv_prog_tar_$1-$_am_tools}
-# Do not fold the above two line into one, because Tru64 sh and
-# Solaris sh will not grok spaces in the rhs of '-'.
-for _am_tool in $_am_tools
-do
-  case $_am_tool in
-  gnutar)
-    for _am_tar in tar gnutar gtar;
-    do
-      AM_RUN_LOG([$_am_tar --version]) && break
-    done
-    am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
-    am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
-    am__untar="$_am_tar -xf -"
-    ;;
-  plaintar)
-    # Must skip GNU tar: if it does not support --format= it doesn't create
-    # ustar tarball either.
-    (tar --version) >/dev/null 2>&1 && continue
-    am__tar='tar chf - "$$tardir"'
-    am__tar_='tar chf - "$tardir"'
-    am__untar='tar xf -'
-    ;;
-  pax)
-    am__tar='pax -L -x $1 -w "$$tardir"'
-    am__tar_='pax -L -x $1 -w "$tardir"'
-    am__untar='pax -r'
-    ;;
-  cpio)
-    am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
-    am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
-    am__untar='cpio -i -H $1 -d'
-    ;;
-  none)
-    am__tar=false
-    am__tar_=false
-    am__untar=false
-    ;;
-  esac
-
-  # If the value was cached, stop now.  We just wanted to have am__tar
-  # and am__untar set.
-  test -n "${am_cv_prog_tar_$1}" && break
-
-  # tar/untar a dummy directory, and stop if the command works
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  echo GrepMe > conftest.dir/file
-  AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
-  rm -rf conftest.dir
-  if test -s conftest.tar; then
-    AM_RUN_LOG([$am__untar <conftest.tar])
-    grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
-  fi
-done
-rm -rf conftest.dir
-
-AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
-AC_MSG_RESULT([$am_cv_prog_tar_$1])])
-AC_SUBST([am__tar])
-AC_SUBST([am__untar])
-]) # _AM_PROG_TAR
-

+ 206 - 0
ant.cppbak

@@ -0,0 +1,206 @@
+
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+#include "ant.h"
+
+int site::index()const
+{
+	return m_algo+(m_num_dims<<1);
+}
+
+sit_list*sit_list::instance()
+{
+	static sit_list _impl;
+	//_impl.load_from_db();
+	return &_impl;
+}
+site::site(int id)
+	:m_algo(0)
+	,m_num_dims(0)
+    ,m_id(id)
+    ,m_path_empty(true)
+{
+
+}
+const algo_config&site::config()const
+{
+	return g_config[index()];
+}
+
+const site& sit_list::operator[](int id) const
+{
+    return m_list[id];
+} 
+static int str_split(char*s,char**rc)
+{
+	char**o=rc;
+
+	for(;*s;)
+	{
+		*o=strtok_r(s,",",&s);
+		o++;
+	}
+
+	return o-rc;
+}
+
+//1, 101, 1, '101-1', 4727, 75, 0, 0, '2017-08-29 10:21:14'
+void sit_list::read_sit_list(const char*fname)
+{
+	FILE*fp=fopen(fname,"r");
+	char buf[512];
+	int t,id;
+	char* s[20];
+	while(fgets(buf,sizeof(buf),fp))
+	{
+		t=str_split(buf,&s[0]);
+		if(t<8)
+			continue;
+
+		id=atoi(s[1]);
+		if(id>(int)m_list.size())
+			continue;
+
+		int antid=atoi(s[2])-1;
+		if(antid>=2)
+			continue;
+
+		m_list[id].m_id=id;
+		m_list[id].m_ant[antid].set(atof(s[4]),-atof(s[5]));
+	}
+
+	for(auto&sit:m_list)
+	{
+		if(sit.m_id==-1)
+			continue;
+
+		if(sit.m_ant[0]==sit.m_ant[1])
+		{
+			printf("%d分站天线坐标相等.\n",sit.m_id);
+		}
+
+		sit.set( (sit.m_ant[0].x+sit.m_ant[1].x)/2,(sit.m_ant[0].y+sit.m_ant[1].y)/2);
+	}
+
+	fclose(fp);
+}
+void sit_list::read_ant_path(const char*fname)
+{
+	FILE*fp=fopen(fname,"r");
+	char buf[512],*p;
+	int t,id,pid;
+	char* s[20];
+	while((p=fgets(buf,sizeof(buf),fp)))
+	{
+		t=str_split(buf,&s[0]);
+		if(t<9)
+			continue;
+
+		id=atoi(s[0]);
+		if(id>(int)m_list.size())
+			continue;
+
+		pid=atoi(s[1]);
+		if(pid>2)
+          continue;
+
+        point p1(atof(s[2]),-atof(s[3]));
+        point p2(atof(s[5]),-atof(s[6]));
+        
+        if(pid == 0)
+        {
+            line_v l(p1,p2);
+            {
+                point px = l.line::projection(m_list[id]);
+                m_list[id].set(px);
+                for(int i=0;i<2;i++)
+                {
+                    path p;
+                    p.m_slope[0] = atof(s[8]);
+                    p.m_line[0] = line_v(px,l[i]);
+                    m_list[id].m_ant[i].m_path.push_back(p);
+                }
+            }
+        }
+        else 
+        {
+            ant &a = pid<0?m_list[id].m_ant[0]:m_list[id].m_ant[1];
+            if(a.m_path.size()!=0)
+            {
+                path &p = a.m_path[0];
+                p.m_line[abs(pid)-1] = line_v(p1,p2);
+                p.m_slope[abs(pid)-1] = atof(s[8]);
+            }
+            else
+            {
+                path p;
+                p.m_line[abs(pid)-1] = line_v(p1,p2);
+                p.m_slope[abs(pid)-1] = atof(s[8]);
+                a.m_path.push_back(p);
+            }
+            if(abs(pid)==1)
+				 m_list[id].set(p1);
+        }
+	}
+	fclose(fp);
+
+	for(auto&s:m_list)
+	{
+		if(s.m_id==-1)
+			continue;
+        s.swap();
+		if((s.path(0).empty() && s.path(1).empty()))
+			continue;
+        s.m_path_empty=false; 
+
+        for(auto &a:s.m_ant)
+        for(auto &p:a.m_path)
+        {
+            if(!p.m_line[0].empty())
+            {
+                point px = p.m_line[0].line::projection(a);
+                p.m_line[0]=line_v(px,p.m_line[0][1]);
+            }
+        }
+        std_info("%s",s.to_string().c_str());
+        //std_info("%f----%f",s.x,s.y);
+	}
+}
+
+
+
+loc_message::loc_message()
+	 :m_num_ticks(0)
+{
+}
+int loc_message::tool_index()const
+{
+	return m_sit.index();
+}
+
+algo_config site::g_config[]=
+{
+	{ "tof-1",  1, 2, 0.1, 1 },
+	{ "tdoa-1", 2, 2, 0.1, 1 },
+	{ "tof-2",  2, 3, 0.1, 1 },
+	{ "tdoa-2", 3, 3, 0.1, 1 },
+	{ "tof-3",  3, 4, 0.1, 1 },
+	{ "tdoa-3", 4, 4, 0.1, 1 }
+};
+
+template<> std::shared_ptr<sit_list> 
+single_base<sit_list, int, std::shared_ptr<site>>::m_instance=std::make_shared<sit_list>();
+#ifdef _TEST
+int main()
+{
+	log_init("./log.ini");
+    sit_list *sl = sit_list::instance();
+	sl->load("data_reader_antenna.txt","path_tof.txt");
+    (*sl)[219].solving(0,100);
+    (*sl)[219].solving(1,100.5);
+    std_info("---%d",(*sl)[209].m_ant[0].m_path.size());
+    std_info("---%d",(*sl)[209][0].size());
+    std_info("---%s",(*sl)[209][0][0][0].to_string().c_str());
+}
+#endif

+ 293 - 0
ant.hbak

@@ -0,0 +1,293 @@
+#ifndef _ANT_LIST_HPP_
+#define _ANT_LIST_HPP_
+
+#include <math.h>
+#include <array>
+#include <deque>
+#include <tuple>
+#include <memory>
+#include <algorithm>
+#include <sstream>
+#include "log.h"
+#include "line.h"
+#include "point.h"
+#include "write-copy.h"
+
+struct path
+{
+    std::array<line_v,2>	m_line; 
+    std::array<double,2>    m_slope;
+    path()
+    {
+        for(auto &d:m_slope)
+            d=0;
+    }
+    std::string to_str() const
+    {
+        std::stringstream ss;
+        for(int i=0;i<2;i++)
+        {
+            ss<<"line:" <<m_line[i].to_string()<<"slope:"<<m_slope[i]<< " cos:"<<m_line[i].cos()<<" sin:"<<m_line[i].sin()<<" | ";
+        }
+        return ss.str();
+    }
+    bool vaild() const
+    {
+        return !m_line[0].empty();
+    }
+    line_v & operator[](int i)
+    {
+        return m_line[i];
+    }
+    const line_v & operator[](int i) const 
+    {
+        return m_line[i];
+    }
+   
+};
+//?
+struct algo_config
+{
+	const char*desc;
+	int min_msg_cnt;
+	int best_msg_cnt;
+	double min_wait_time;
+	double max_wait_time;
+};
+//
+struct ant :point
+{
+	std::vector<path> m_path;
+    path & operator[](int i)
+    {
+        return m_path[i];
+    }
+    const path & operator[](int i) const
+    {
+        return m_path[i];
+    }
+    size_t size() const
+    {
+        return m_path.size();
+    }
+    std::vector<point> getsol(const double &dist) const
+    {
+        std::vector<point> v;
+        for(const auto & p : m_path)
+        {
+            double d  = dist;
+            if(p.vaild())
+            {
+                point pt;
+                if(dist <= p.m_line[0].length() || (dist > p.m_line[0].length() && p.m_line[1].empty()))        
+                {
+                    d += d*p.m_slope[0];
+                    pt = point(p.m_line[0][0].x + d*p.m_line[0].cos() , p.m_line[0][0].y + d*p.m_line[0].sin());
+                }
+                else
+                {
+                    d -= p.m_line[0].length();
+                    d += d*p.m_slope[1];
+                    pt = point(p.m_line[1][0].x+d*p.m_line[1].cos(),p.m_line[1][0].y+d*p.m_line[1].sin());
+                }
+                v.push_back(pt);
+                std_info("get_sol:x:%.2f,y:%.2f",pt.x,pt.y);
+            }
+            else
+                std_error("%s","ant::getsol empty path..");
+        }
+        return std::move(v);
+    }
+
+};
+
+struct site:point
+{
+	static algo_config g_config[];
+	int      m_algo;			//TOF:0,TDOA:1
+	int      m_num_dims;	    //1维:0,2维:1,3维:2
+    double  m_scale = 2.0;  // 地图比例尺
+
+	point    m_position;
+	int index()const;
+	const algo_config&config()const;
+
+	site(int id=-1);
+
+	mutable double m_height=1.5;
+	int m_id;
+	bool m_path_empty;
+	std::array<ant,2> m_ant;
+
+	mutable double m_ant_dist=0;
+	mutable double m_ant_dist_sum_new=0;
+	mutable int m_ant_dist_cnt_new=0;
+
+    point get_dstp(const point pt) const 
+    {
+        point tmp;
+        for(const auto & p : m_ant[0].m_path)
+        {
+            for(int i=0;i<2;i++)
+            {
+                if(!p[i].empty())
+                {
+                    if(p[i].contain(pt,0.01))
+                    {
+                        //if(i==0)
+                         // return *this;
+                        //else
+                          tmp = p[i][0];
+                    }
+                }
+            }
+        }
+        return tmp;
+    }
+
+	void count_ant_dist(double dist_tof1, double dist_tof2)const
+	{
+		if(dist_tof1<10 || dist_tof2<10)
+			return;
+		double dist = fabs(dist_tof1 - dist_tof2);
+		if(dist>5)
+			return;
+		m_ant_dist_sum_new += dist;
+		m_ant_dist_cnt_new++;
+		
+		if(m_ant_dist_cnt_new >= 2500)
+		{
+			m_ant_dist = m_ant_dist_sum_new / m_ant_dist_cnt_new;
+			m_ant_dist_sum_new = 0;
+			m_ant_dist_cnt_new = 0;
+		}
+	}
+    void swap()
+    {
+       auto v0 =  m_ant[0].m_path;
+       auto v1 =  m_ant[1].m_path;
+       std::copy (std::begin(v0),std::end(v0),std::back_inserter(m_ant[1].m_path));
+       std::copy (std::begin(v1),std::end(v1),std::back_inserter(m_ant[0].m_path));
+    }
+	double ant_dist()const
+	{
+		return m_ant[0].dist(m_ant[1]);
+	}
+	
+	bool is_path_empty()const
+	{
+        return m_path_empty;
+	}
+
+	bool have_valid_path()const
+	{
+        return m_id != -1 && ant_dist() > 0.1;
+	}
+
+	std::string to_string()const
+	{
+        std::stringstream ss;
+        ss<<"site_id:"<<m_id<<"x:"<<x<<" y: "<<y;
+        for(const auto a:m_ant)
+        {  
+            ss<<"<";
+            for(const auto p:a.m_path)
+            {
+                ss<<"{"<<p.to_str()<<"}";
+            }
+            ss<<">";
+        }
+        return ss.str();
+	}
+
+	const point&path(int i)const
+	{
+        static point p;
+        if(i>=(int)m_ant[0].m_path.size())
+            return p ;
+		return m_ant[0].m_path[i].m_line[0][1];
+	}
+
+    std::vector<point> solving(int ant_id, double dist)const
+	{
+        const ant &a = m_ant[ant_id];
+        if(dist<50 && dist>0)
+		{
+			if(dist<m_height)
+			{
+				m_height=dist;
+				dist=0;				
+			}
+			else
+			{
+				dist=sqrt(dist*dist-m_height*m_height);
+			}
+		}
+        return std::move(a.getsol(dist));
+   	}
+    ant operator[](int i)
+    {
+        return m_ant[i];
+    }
+    const ant operator[](int i) const
+    {
+        return m_ant[i];
+    }
+};
+
+
+struct sit_list:single_base<sit_list,int,std::shared_ptr<site>>
+{
+
+	const site& operator[](int id) const;
+	static void load(const char*ant_file,const char*path_file)
+	{
+		read_sit_list(ant_file);
+		read_ant_path(path_file);
+	}
+
+	static void load_from_db()
+	{
+		load("data_reader_antenna.txt","path_tof.txt");
+	}
+
+	static void read_sit_list(const char*fname);
+	static void read_ant_path(const char*fname);
+};
+
+struct loc_message
+{
+	site     m_sit;
+	uint64_t m_num_ticks; //tof时间片m_tof或tdoa相对root时间
+	uint64_t m_loc_time;
+	uint32_t m_card_id;
+	int32_t	 m_card_ct;
+	int8_t   m_card_type;
+	int8_t   m_ant_id;
+	int16_t  m_rav;
+	int16_t  m_acc;
+	uint16_t m_sync_ct;
+	uint16_t m_rssi;
+
+
+	loc_message();
+	loc_message(site s,uint64_t num_ticks,uint64_t timestamp,
+			uint32_t cardid,int32_t ct,int8_t type,int8_t antid,	
+			int16_t rav,int16_t acc,uint16_t sync_ct,uint16_t rssi)
+		:m_sit(s)
+		 ,m_num_ticks(num_ticks)
+         ,m_loc_time(timestamp)
+        ,m_card_id(cardid)
+        ,m_card_ct(ct)
+        ,m_card_type(type)
+        ,m_ant_id(antid)
+        ,m_rav(rav)
+        ,m_acc(acc)
+        ,m_sync_ct(sync_ct)
+        ,m_rssi(rssi)
+	{}
+	int tool_index()const;
+};
+
+#endif
+

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 6452
autom4te.cache/output.0


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 6452
autom4te.cache/output.1


+ 0 - 237
autom4te.cache/requests

@@ -1,237 +0,0 @@
-# This file was generated.
-# It contains the lists of macros which have been traced.
-# It can be safely removed.
-
-@request = (
-             bless( [
-                      '0',
-                      1,
-                      [
-                        '/usr/share/autoconf'
-                      ],
-                      [
-                        '/usr/share/autoconf/autoconf/autoconf.m4f',
-                        '/usr/share/aclocal-1.12/amversion.m4',
-                        '/usr/share/aclocal-1.12/auxdir.m4',
-                        '/usr/share/aclocal-1.12/cond.m4',
-                        '/usr/share/aclocal-1.12/depend.m4',
-                        '/usr/share/aclocal-1.12/depout.m4',
-                        '/usr/share/aclocal-1.12/init.m4',
-                        '/usr/share/aclocal-1.12/install-sh.m4',
-                        '/usr/share/aclocal-1.12/lead-dot.m4',
-                        '/usr/share/aclocal-1.12/make.m4',
-                        '/usr/share/aclocal-1.12/missing.m4',
-                        '/usr/share/aclocal-1.12/options.m4',
-                        '/usr/share/aclocal-1.12/runlog.m4',
-                        '/usr/share/aclocal-1.12/sanity.m4',
-                        '/usr/share/aclocal-1.12/silent.m4',
-                        '/usr/share/aclocal-1.12/strip.m4',
-                        '/usr/share/aclocal-1.12/substnot.m4',
-                        '/usr/share/aclocal-1.12/tar.m4',
-                        'configure.ac'
-                      ],
-                      {
-                        'm4_pattern_forbid' => 1,
-                        'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
-                        '_AM_SET_OPTION' => 1,
-                        'AC_DEFUN' => 1,
-                        'AM_INIT_AUTOMAKE' => 1,
-                        'AM_AUTOMAKE_VERSION' => 1,
-                        'AM_MISSING_HAS_RUN' => 1,
-                        'AM_SUBST_NOTMAKE' => 1,
-                        'AM_MISSING_PROG' => 1,
-                        'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
-                        'AC_DEFUN_ONCE' => 1,
-                        'AM_PROG_INSTALL_STRIP' => 1,
-                        '_m4_warn' => 1,
-                        'AM_SANITY_CHECK' => 1,
-                        'AM_SILENT_RULES' => 1,
-                        'include' => 1,
-                        '_AM_PROG_TAR' => 1,
-                        'AM_AUX_DIR_EXPAND' => 1,
-                        'AM_DEP_TRACK' => 1,
-                        '_AM_SET_OPTIONS' => 1,
-                        'AM_RUN_LOG' => 1,
-                        '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
-                        '_AM_IF_OPTION' => 1,
-                        '_AM_SUBST_NOTMAKE' => 1,
-                        '_AM_AUTOCONF_VERSION' => 1,
-                        'm4_pattern_allow' => 1,
-                        '_AM_MANGLE_OPTION' => 1,
-                        'AM_SET_LEADING_DOT' => 1,
-                        'AM_CONDITIONAL' => 1,
-                        'AM_SET_DEPDIR' => 1,
-                        '_AM_DEPENDENCIES' => 1,
-                        'AM_PROG_INSTALL_SH' => 1,
-                        'm4_include' => 1,
-                        '_AC_AM_CONFIG_HEADER_HOOK' => 1,
-                        'AU_DEFUN' => 1,
-                        'AM_MAKE_INCLUDE' => 1
-                      }
-                    ], 'Autom4te::Request' ),
-             bless( [
-                      '1',
-                      1,
-                      [
-                        '/usr/share/autoconf'
-                      ],
-                      [
-                        '/usr/share/autoconf/autoconf/autoconf.m4f',
-                        'aclocal.m4',
-                        'configure.ac'
-                      ],
-                      {
-                        '_LT_AC_TAGCONFIG' => 1,
-                        'AM_PROG_F77_C_O' => 1,
-                        'm4_pattern_forbid' => 1,
-                        'AC_CANONICAL_TARGET' => 1,
-                        'AC_CONFIG_LIBOBJ_DIR' => 1,
-                        'AM_EXTRA_RECURSIVE_TARGETS' => 1,
-                        'AC_PROG_LIBTOOL' => 1,
-                        'AM_PROG_MKDIR_P' => 1,
-                        'AM_AUTOMAKE_VERSION' => 1,
-                        'AC_CHECK_HEADERS' => 1,
-                        'LT_CONFIG_LTDL_DIR' => 1,
-                        'm4_sinclude' => 1,
-                        'AC_PROG_CXX' => 1,
-                        'AM_NLS' => 1,
-                        '_m4_warn' => 1,
-                        'AC_PREREQ' => 1,
-                        'AM_PROG_CXX_C_O' => 1,
-                        '_AM_MAKEFILE_INCLUDE' => 1,
-                        'AM_PROG_MOC' => 1,
-                        'AC_TYPE_INT64_T' => 1,
-                        'LT_INIT' => 1,
-                        'AC_LIBSOURCE' => 1,
-                        'AM_PROG_FC_C_O' => 1,
-                        'AC_CANONICAL_BUILD' => 1,
-                        'AC_CONFIG_AUX_DIR' => 1,
-                        '_AM_SUBST_NOTMAKE' => 1,
-                        'm4_pattern_allow' => 1,
-                        'sinclude' => 1,
-                        'AC_TYPE_UINT64_T' => 1,
-                        'AC_DEFINE_TRACE_LITERAL' => 1,
-                        'AC_TYPE_INT16_T' => 1,
-                        'AC_PROG_CC' => 1,
-                        '_AM_COND_ELSE' => 1,
-                        'AC_SUBST_TRACE' => 1,
-                        'AC_INIT' => 1,
-                        '_AM_COND_IF' => 1,
-                        'AC_SUBST' => 1,
-                        'AC_CANONICAL_HOST' => 1,
-                        'AC_FC_SRCEXT' => 1,
-                        'AM_INIT_AUTOMAKE' => 1,
-                        'AC_CONFIG_SUBDIRS' => 1,
-                        'AM_PATH_GUILE' => 1,
-                        'AC_TYPE_INT8_T' => 1,
-                        'AC_FUNC_REALLOC' => 1,
-                        'AC_TYPE_SIZE_T' => 1,
-                        'AC_REQUIRE_AUX_FILE' => 1,
-                        'AC_CONFIG_LINKS' => 1,
-                        'LT_SUPPORTED_TAG' => 1,
-                        'AM_MAINTAINER_MODE' => 1,
-                        'AC_TYPE_UINT32_T' => 1,
-                        'AC_FC_PP_DEFINE' => 1,
-                        'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
-                        'AM_MAKEFILE_INCLUDE' => 1,
-                        'AC_PROG_CPP' => 1,
-                        'AC_C_INLINE' => 1,
-                        '_AM_COND_ENDIF' => 1,
-                        'AM_ENABLE_MULTILIB' => 1,
-                        'AM_SILENT_RULES' => 1,
-                        'AC_CONFIG_FILES' => 1,
-                        'include' => 1,
-                        'AC_TYPE_INT32_T' => 1,
-                        'AM_PROG_AR' => 1,
-                        'AM_GNU_GETTEXT' => 1,
-                        'AC_FUNC_MALLOC' => 1,
-                        'AC_FC_FREEFORM' => 1,
-                        'AC_FC_PP_SRCEXT' => 1,
-                        'AH_OUTPUT' => 1,
-                        'AM_PROG_CC_C_O' => 1,
-                        'AM_XGETTEXT_OPTION' => 1,
-                        'AC_CANONICAL_SYSTEM' => 1,
-                        'AM_CONDITIONAL' => 1,
-                        'AC_FUNC_MKTIME' => 1,
-                        'AC_CONFIG_HEADERS' => 1,
-                        'AC_TYPE_UINT16_T' => 1,
-                        'AM_POT_TOOLS' => 1,
-                        'm4_include' => 1,
-                        'AC_CHECK_HEADER_STDBOOL' => 1,
-                        'AC_CHECK_FUNCS' => 1,
-                        'AC_TYPE_UINT8_T' => 1
-                      }
-                    ], 'Autom4te::Request' ),
-             bless( [
-                      '2',
-                      1,
-                      [
-                        '/usr/share/autoconf'
-                      ],
-                      [
-                        '/usr/share/autoconf/autoconf/autoconf.m4f',
-                        '-',
-                        '/usr/share/aclocal-1.13/internal/ac-config-macro-dirs.m4',
-                        '/usr/share/aclocal-1.13/amversion.m4',
-                        '/usr/share/aclocal-1.13/auxdir.m4',
-                        '/usr/share/aclocal-1.13/cond.m4',
-                        '/usr/share/aclocal-1.13/depend.m4',
-                        '/usr/share/aclocal-1.13/depout.m4',
-                        '/usr/share/aclocal-1.13/init.m4',
-                        '/usr/share/aclocal-1.13/install-sh.m4',
-                        '/usr/share/aclocal-1.13/lead-dot.m4',
-                        '/usr/share/aclocal-1.13/make.m4',
-                        '/usr/share/aclocal-1.13/missing.m4',
-                        '/usr/share/aclocal-1.13/options.m4',
-                        '/usr/share/aclocal-1.13/runlog.m4',
-                        '/usr/share/aclocal-1.13/sanity.m4',
-                        '/usr/share/aclocal-1.13/silent.m4',
-                        '/usr/share/aclocal-1.13/strip.m4',
-                        '/usr/share/aclocal-1.13/substnot.m4',
-                        '/usr/share/aclocal-1.13/tar.m4',
-                        'configure.ac'
-                      ],
-                      {
-                        'm4_pattern_forbid' => 1,
-                        'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
-                        '_AM_SET_OPTION' => 1,
-                        'AC_DEFUN' => 1,
-                        'AM_INIT_AUTOMAKE' => 1,
-                        'AM_AUTOMAKE_VERSION' => 1,
-                        'AM_MISSING_HAS_RUN' => 1,
-                        'AM_SUBST_NOTMAKE' => 1,
-                        'AM_MISSING_PROG' => 1,
-                        'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
-                        'AC_DEFUN_ONCE' => 1,
-                        '_AM_CONFIG_MACRO_DIRS' => 1,
-                        'AM_PROG_INSTALL_STRIP' => 1,
-                        '_m4_warn' => 1,
-                        'AM_SANITY_CHECK' => 1,
-                        'AM_SILENT_RULES' => 1,
-                        'include' => 1,
-                        '_AM_PROG_TAR' => 1,
-                        'AM_AUX_DIR_EXPAND' => 1,
-                        'AM_DEP_TRACK' => 1,
-                        '_AM_SET_OPTIONS' => 1,
-                        '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
-                        'AM_RUN_LOG' => 1,
-                        'AC_CONFIG_MACRO_DIR' => 1,
-                        '_AM_IF_OPTION' => 1,
-                        '_AM_SUBST_NOTMAKE' => 1,
-                        'm4_pattern_allow' => 1,
-                        '_AM_AUTOCONF_VERSION' => 1,
-                        '_AM_MANGLE_OPTION' => 1,
-                        'AM_CONDITIONAL' => 1,
-                        'AM_SET_LEADING_DOT' => 1,
-                        'AC_CONFIG_MACRO_DIR_TRACE' => 1,
-                        'AM_SET_DEPDIR' => 1,
-                        '_AM_DEPENDENCIES' => 1,
-                        'm4_include' => 1,
-                        'AM_PROG_INSTALL_SH' => 1,
-                        '_AC_AM_CONFIG_HEADER_HOOK' => 1,
-                        'AU_DEFUN' => 1,
-                        'AM_MAKE_INCLUDE' => 1
-                      }
-                    ], 'Autom4te::Request' )
-           );
-

+ 0 - 864
autom4te.cache/traces.0

@@ -1,864 +0,0 @@
-m4trace:/usr/share/aclocal-1.12/amversion.m4:14: -1- AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.12'
-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.12.3], [],
-      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
-])
-m4trace:/usr/share/aclocal-1.12/amversion.m4:33: -1- AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.12.3])dnl
-m4_ifndef([AC_AUTOCONF_VERSION],
-  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
-m4trace:/usr/share/aclocal-1.12/auxdir.m4:47: -1- AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly.
-AC_PREREQ([2.50])dnl
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
-])
-m4trace:/usr/share/aclocal-1.12/cond.m4:12: -1- AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl
- m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
-       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
-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='#'
-else
-  $1_TRUE='#'
-  $1_FALSE=
-fi
-AC_CONFIG_COMMANDS_PRE(
-[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
-  AC_MSG_ERROR([[conditional "$1" was never defined.
-Usually this means the macro was only invoked conditionally.]])
-fi])])
-m4trace:/usr/share/aclocal-1.12/depend.m4:26: -1- AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl
-AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
-AC_REQUIRE([AM_MAKE_INCLUDE])dnl
-AC_REQUIRE([AM_DEP_TRACK])dnl
-
-m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
-      [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
-      [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
-      [$1], [OBJCXX], [depcc="$OBJCXX" 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=])
-
-AC_CACHE_CHECK([dependency style of $depcc],
-               [am_cv_$1_dependencies_compiler_type],
-[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".
-  rm -rf conftest.dir
-  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
-
-  am_cv_$1_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
-  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
-    # 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 10 /bin/sh.
-      echo '/* dummy */' > 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
-	break
-      fi
-      ;;
-    msvc7 | msvc7msys | 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
-    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_$1_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_$1_dependencies_compiler_type=none
-fi
-])
-AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
-AM_CONDITIONAL([am__fastdep$1], [
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
-])
-m4trace:/usr/share/aclocal-1.12/depend.m4:163: -1- AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
-])
-m4trace:/usr/share/aclocal-1.12/depend.m4:171: -1- AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl
-AS_HELP_STRING(
-  [--enable-dependency-tracking],
-  [do not reject slow dependency extractors])
-AS_HELP_STRING(
-  [--disable-dependency-tracking],
-  [speeds up one-time build])])
-if test "x$enable_dependency_tracking" != xno; then
-  am_depcomp="$ac_aux_dir/depcomp"
-  AMDEPBACKSLASH='\'
-  am__nodep='_no'
-fi
-AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-AC_SUBST([AMDEPBACKSLASH])dnl
-_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
-AC_SUBST([am__nodep])dnl
-_AM_SUBST_NOTMAKE([am__nodep])dnl
-])
-m4trace:/usr/share/aclocal-1.12/depout.m4:12: -1- AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{
-  # 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"`
-    # 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'`; 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
-}
-])
-m4trace:/usr/share/aclocal-1.12/depout.m4:71: -1- AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles],
-     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
-     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
-])
-m4trace:/usr/share/aclocal-1.12/init.m4:23: -1- AC_DEFUN([AM_INIT_AUTOMAKE], [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
-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
-if test -z "$CYGPATH_W"; then
-  if (cygpath --version) >/dev/null 2>/dev/null; then
-    CYGPATH_W='cygpath -w'
-  else
-    CYGPATH_W=echo
-  fi
-fi
-AC_SUBST([CYGPATH_W])
-
-# Define the identity of the package.
-dnl Distinguish between old-style and new-style calls.
-m4_ifval([$2],
-[AC_DIAGNOSE([obsolete],
-[$0: two- and three-arguments forms are deprecated.  For more info, see:
-http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_INIT_AUTOMAKE-invocation])
-m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
- 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], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
-  [ok:ok],,
-  [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
-
-_AM_IF_OPTION([no-define],,
-[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
- AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
-
-# Some tools Automake needs.
-AC_REQUIRE([AM_SANITY_CHECK])dnl
-AC_REQUIRE([AC_ARG_PROGRAM])dnl
-AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
-AM_MISSING_PROG([AUTOCONF], [autoconf])
-AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
-AM_MISSING_PROG([AUTOHEADER], [autoheader])
-AM_MISSING_PROG([MAKEINFO], [makeinfo])
-AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
-AC_REQUIRE([AC_PROG_MKDIR_P])dnl
-# For better backward compatibility.  To be removed once Automake 1.9.x
-# dies out for good.  For more background, see:
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
-AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
-# We need awk for the "check" target.  The system "awk" is bad on
-# some platforms.
-AC_REQUIRE([AC_PROG_AWK])dnl
-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([no-dependencies],,
-[AC_PROVIDE_IFELSE([AC_PROG_CC],
-		  [_AM_DEPENDENCIES([CC])],
-		  [m4_define([AC_PROG_CC],
-			     m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_CXX],
-		  [_AM_DEPENDENCIES([CXX])],
-		  [m4_define([AC_PROG_CXX],
-			     m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_OBJC],
-		  [_AM_DEPENDENCIES([OBJC])],
-		  [m4_define([AC_PROG_OBJC],
-			     m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
-dnl Support for Objective C++ was only introduced in Autoconf 2.65,
-dnl but we still cater to Autoconf 2.62.
-m4_ifdef([AC_PROG_OBJCXX],
-[AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
-		  [_AM_DEPENDENCIES([OBJCXX])],
-		  [m4_define([AC_PROG_OBJCXX],
-			     m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])])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
-])
-m4trace:/usr/share/aclocal-1.12/init.m4:140: -1- 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
-    $_am_arg | $_am_arg:* )
-      break ;;
-    * )
-      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
-  esac
-done
-echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-m4trace:/usr/share/aclocal-1.12/install-sh.m4:11: -1- AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-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])])
-m4trace:/usr/share/aclocal-1.12/lead-dot.m4:10: -1- AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
-  am__leading_dot=.
-else
-  am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-AC_SUBST([am__leading_dot])])
-m4trace:/usr/share/aclocal-1.12/make.m4:12: -1- AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
-	@echo this is the am__doit target
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-AC_MSG_CHECKING([for style of include used by $am_make])
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# 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
-   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])
-AC_MSG_RESULT([$_am_result])
-rm -f confinc confmf
-])
-m4trace:/usr/share/aclocal-1.12/missing.m4:11: -1- AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN])
-$1=${$1-"${am_missing_run}$2"}
-AC_SUBST($1)])
-m4trace:/usr/share/aclocal-1.12/missing.m4:20: -1- AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-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 "
-else
-  am_missing_run=
-  AC_MSG_WARN(['missing' script is too old or missing])
-fi
-])
-m4trace:/usr/share/aclocal-1.12/options.m4:11: -1- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
-m4trace:/usr/share/aclocal-1.12/options.m4:17: -1- AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])])
-m4trace:/usr/share/aclocal-1.12/options.m4:23: -1- AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
-m4trace:/usr/share/aclocal-1.12/options.m4:29: -1- AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-m4trace:/usr/share/aclocal-1.12/runlog.m4:12: -1- AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
-   ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-   (exit $ac_status); }])
-m4trace:/usr/share/aclocal-1.12/sanity.m4:11: -1- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane])
-# 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 (
-   am_has_slept=no
-   for am_try in 1 2; do
-     echo "timestamp, slept: $am_has_slept" > conftest.file
-     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`
-     fi
-     if test "$[*]" != "X $srcdir/configure conftest.file" \
-	&& test "$[*]" != "X conftest.file $srcdir/configure"; then
-
-	# If neither matched, then we have a broken ls.  This can happen
-	# 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".
-	AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
-  alias in your environment])
-     fi
-     if test "$[2]" = conftest.file || test $am_try -eq 2; then
-       break
-     fi
-     # Just in case.
-     sleep 1
-     am_has_slept=yes
-   done
-   test "$[2]" = conftest.file
-   )
-then
-   # Ok.
-   :
-else
-   AC_MSG_ERROR([newly created file is older than distributed files!
-Check your system clock])
-fi
-AC_MSG_RESULT([yes])
-# If we didn't sleep, we still need to ensure time stamps of config.status and
-# generated files are strictly newer.
-am_sleep_pid=
-if grep 'slept: no' conftest.file >/dev/null 2>&1; then
-  ( sleep 1 ) &
-  am_sleep_pid=$!
-fi
-AC_CONFIG_COMMANDS_PRE(
-  [AC_MSG_CHECKING([that generated files are newer than configure])
-   if test -n "$am_sleep_pid"; then
-     # Hide warnings about reused PIDs.
-     wait $am_sleep_pid 2>/dev/null
-   fi
-   AC_MSG_RESULT([done])])
-rm -f conftest.file
-])
-m4trace:/usr/share/aclocal-1.12/silent.m4:12: -1- AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl
-AS_HELP_STRING(
-  [--enable-silent-rules],
-  [less verbose build output (undo: "make V=1")])
-AS_HELP_STRING(
-  [--disable-silent-rules],
-  [verbose build output (undo: "make V=0")])dnl
-])
-case $enable_silent_rules in @%:@ (((
-  yes) AM_DEFAULT_VERBOSITY=0;;
-   no) AM_DEFAULT_VERBOSITY=1;;
-    *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
-esac
-dnl
-dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
-dnl do not support nested variable expansions.
-dnl See automake bug#9928 and bug#10237.
-am_make=${MAKE-make}
-AC_CACHE_CHECK([whether $am_make supports nested variables],
-   [am_cv_make_support_nested_variables],
-   [if AS_ECHO([['TRUE=$(BAR$(V))
-BAR0=false
-BAR1=true
-V=1
-am__doit:
-	@$(TRUE)
-.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
-  am_cv_make_support_nested_variables=yes
-else
-  am_cv_make_support_nested_variables=no
-fi])
-if test $am_cv_make_support_nested_variables = yes; then
-  dnl Using '$V' instead of '$(V)' breaks IRIX make.
-  AM_V='$(V)'
-  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
-else
-  AM_V=$AM_DEFAULT_VERBOSITY
-  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
-fi
-AC_SUBST([AM_V])dnl
-AM_SUBST_NOTMAKE([AM_V])dnl
-AC_SUBST([AM_DEFAULT_V])dnl
-AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
-AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
-AM_BACKSLASH='\'
-AC_SUBST([AM_BACKSLASH])dnl
-_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
-])
-m4trace:/usr/share/aclocal-1.12/strip.m4:17: -1- AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-# 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.
-dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
-if test "$cross_compiling" != no; then
-  AC_CHECK_TOOL([STRIP], [strip], :)
-fi
-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-AC_SUBST([INSTALL_STRIP_PROGRAM])])
-m4trace:/usr/share/aclocal-1.12/substnot.m4:12: -1- AC_DEFUN([_AM_SUBST_NOTMAKE])
-m4trace:/usr/share/aclocal-1.12/substnot.m4:17: -1- AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
-m4trace:/usr/share/aclocal-1.12/tar.m4:22: -1- AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility.  Yes, it's still used
-# in the wild :-(  We should find a proper way to deprecate it ...
-AC_SUBST([AMTAR], ['$${TAR-tar}'])
-m4_if([$1], [v7],
-     [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
-     [m4_case([$1], [ustar],, [pax],,
-              [m4_fatal([Unknown tar format])])
-AC_MSG_CHECKING([how to create a $1 tar archive])
-# Loop over all known methods to create a tar archive until one works.
-_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
-_am_tools=${am_cv_prog_tar_$1-$_am_tools}
-# Do not fold the above two line into one, because Tru64 sh and
-# Solaris sh will not grok spaces in the rhs of '-'.
-for _am_tool in $_am_tools
-do
-  case $_am_tool in
-  gnutar)
-    for _am_tar in tar gnutar gtar;
-    do
-      AM_RUN_LOG([$_am_tar --version]) && break
-    done
-    am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
-    am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
-    am__untar="$_am_tar -xf -"
-    ;;
-  plaintar)
-    # Must skip GNU tar: if it does not support --format= it doesn't create
-    # ustar tarball either.
-    (tar --version) >/dev/null 2>&1 && continue
-    am__tar='tar chf - "$$tardir"'
-    am__tar_='tar chf - "$tardir"'
-    am__untar='tar xf -'
-    ;;
-  pax)
-    am__tar='pax -L -x $1 -w "$$tardir"'
-    am__tar_='pax -L -x $1 -w "$tardir"'
-    am__untar='pax -r'
-    ;;
-  cpio)
-    am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
-    am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
-    am__untar='cpio -i -H $1 -d'
-    ;;
-  none)
-    am__tar=false
-    am__tar_=false
-    am__untar=false
-    ;;
-  esac
-
-  # If the value was cached, stop now.  We just wanted to have am__tar
-  # and am__untar set.
-  test -n "${am_cv_prog_tar_$1}" && break
-
-  # tar/untar a dummy directory, and stop if the command works
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  echo GrepMe > conftest.dir/file
-  AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
-  rm -rf conftest.dir
-  if test -s conftest.tar; then
-    AM_RUN_LOG([$am__untar <conftest.tar])
-    grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
-  fi
-done
-rm -rf conftest.dir
-
-AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
-AC_MSG_RESULT([$am_cv_prog_tar_$1])])
-AC_SUBST([am__tar])
-AC_SUBST([am__untar])
-])
-m4trace:configure.ac:5: -1- m4_pattern_forbid([^_?A[CHUM]_])
-m4trace:configure.ac:5: -1- m4_pattern_forbid([_AC_])
-m4trace:configure.ac:5: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^AS_FLAGS$])
-m4trace:configure.ac:5: -1- m4_pattern_forbid([^_?m4_])
-m4trace:configure.ac:5: -1- m4_pattern_forbid([^dnl$])
-m4trace:configure.ac:5: -1- m4_pattern_forbid([^_?AS_])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^SHELL$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PATH_SEPARATOR$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_NAME$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_VERSION$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_STRING$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_URL$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^exec_prefix$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^prefix$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^program_transform_name$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^bindir$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^sbindir$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^libexecdir$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^datarootdir$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^datadir$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^sysconfdir$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^sharedstatedir$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^localstatedir$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^includedir$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^oldincludedir$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^docdir$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^infodir$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^htmldir$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^dvidir$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^pdfdir$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^psdir$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^libdir$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^localedir$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^mandir$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_NAME$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_VERSION$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_STRING$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_URL$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^DEFS$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^ECHO_C$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^ECHO_N$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^ECHO_T$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^LIBS$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^build_alias$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^host_alias$])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^target_alias$])
-m4trace:configure.ac:8: -1- AM_INIT_AUTOMAKE([foreign -Wall])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$])
-m4trace:configure.ac:8: -1- AM_SET_CURRENT_AUTOMAKE_VERSION
-m4trace:configure.ac:8: -1- AM_AUTOMAKE_VERSION([1.12.3])
-m4trace:configure.ac:8: -1- _AM_AUTOCONF_VERSION([2.69])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^INSTALL_DATA$])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^am__isrc$])
-m4trace:configure.ac:8: -1- _AM_SUBST_NOTMAKE([am__isrc])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^CYGPATH_W$])
-m4trace:configure.ac:8: -1- _AM_SET_OPTIONS([foreign -Wall])
-m4trace:configure.ac:8: -1- _AM_SET_OPTION([foreign])
-m4trace:configure.ac:8: -2- _AM_MANGLE_OPTION([foreign])
-m4trace:configure.ac:8: -1- _AM_SET_OPTION([-Wall])
-m4trace:configure.ac:8: -2- _AM_MANGLE_OPTION([-Wall])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^PACKAGE$])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^VERSION$])
-m4trace:configure.ac:8: -1- _AM_IF_OPTION([no-define], [], [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
- AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])
-m4trace:configure.ac:8: -2- _AM_MANGLE_OPTION([no-define])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^PACKAGE$])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^VERSION$])
-m4trace:configure.ac:8: -1- AM_SANITY_CHECK
-m4trace:configure.ac:8: -1- AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
-m4trace:configure.ac:8: -1- AM_MISSING_HAS_RUN
-m4trace:configure.ac:8: -1- AM_AUX_DIR_EXPAND
-m4trace:configure.ac:8: -1- m4_pattern_allow([^ACLOCAL$])
-m4trace:configure.ac:8: -1- AM_MISSING_PROG([AUTOCONF], [autoconf])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^AUTOCONF$])
-m4trace:configure.ac:8: -1- AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^AUTOMAKE$])
-m4trace:configure.ac:8: -1- AM_MISSING_PROG([AUTOHEADER], [autoheader])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^AUTOHEADER$])
-m4trace:configure.ac:8: -1- AM_MISSING_PROG([MAKEINFO], [makeinfo])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^MAKEINFO$])
-m4trace:configure.ac:8: -1- AM_PROG_INSTALL_SH
-m4trace:configure.ac:8: -1- m4_pattern_allow([^install_sh$])
-m4trace:configure.ac:8: -1- AM_PROG_INSTALL_STRIP
-m4trace:configure.ac:8: -1- m4_pattern_allow([^STRIP$])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^MKDIR_P$])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^mkdir_p$])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^AWK$])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^SET_MAKE$])
-m4trace:configure.ac:8: -1- AM_SET_LEADING_DOT
-m4trace:configure.ac:8: -1- m4_pattern_allow([^am__leading_dot$])
-m4trace:configure.ac:8: -1- _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
-			     [_AM_PROG_TAR([v7])])])
-m4trace:configure.ac:8: -2- _AM_MANGLE_OPTION([tar-ustar])
-m4trace:configure.ac:8: -1- _AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])
-m4trace:configure.ac:8: -2- _AM_MANGLE_OPTION([tar-pax])
-m4trace:configure.ac:8: -1- _AM_PROG_TAR([v7])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^AMTAR$])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^am__tar$])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^am__untar$])
-m4trace:configure.ac:8: -1- _AM_IF_OPTION([no-dependencies], [], [AC_PROVIDE_IFELSE([AC_PROG_CC],
-		  [_AM_DEPENDENCIES([CC])],
-		  [m4_define([AC_PROG_CC],
-			     m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_CXX],
-		  [_AM_DEPENDENCIES([CXX])],
-		  [m4_define([AC_PROG_CXX],
-			     m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_OBJC],
-		  [_AM_DEPENDENCIES([OBJC])],
-		  [m4_define([AC_PROG_OBJC],
-			     m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
-dnl Support for Objective C++ was only introduced in Autoconf 2.65,
-dnl but we still cater to Autoconf 2.62.
-m4_ifdef([AC_PROG_OBJCXX],
-[AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
-		  [_AM_DEPENDENCIES([OBJCXX])],
-		  [m4_define([AC_PROG_OBJCXX],
-			     m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])])dnl
-])
-m4trace:configure.ac:8: -2- _AM_MANGLE_OPTION([no-dependencies])
-m4trace:configure.ac:8: -1- _AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])
-m4trace:configure.ac:8: -2- _AM_MANGLE_OPTION([silent-rules])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^CXX$])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^CXXFLAGS$])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^LDFLAGS$])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^LIBS$])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^CXX$])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^ac_ct_CXX$])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^EXEEXT$])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^OBJEXT$])
-m4trace:configure.ac:12: -1- _AM_DEPENDENCIES([CXX])
-m4trace:configure.ac:12: -1- AM_SET_DEPDIR
-m4trace:configure.ac:12: -1- m4_pattern_allow([^DEPDIR$])
-m4trace:configure.ac:12: -1- AM_OUTPUT_DEPENDENCY_COMMANDS
-m4trace:configure.ac:12: -1- AM_MAKE_INCLUDE
-m4trace:configure.ac:12: -1- m4_pattern_allow([^am__include$])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^am__quote$])
-m4trace:configure.ac:12: -1- AM_DEP_TRACK
-m4trace:configure.ac:12: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^AMDEP_TRUE$])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^AMDEP_FALSE$])
-m4trace:configure.ac:12: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE])
-m4trace:configure.ac:12: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^AMDEPBACKSLASH$])
-m4trace:configure.ac:12: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^am__nodep$])
-m4trace:configure.ac:12: -1- _AM_SUBST_NOTMAKE([am__nodep])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^CXXDEPMODE$])
-m4trace:configure.ac:12: -1- AM_CONDITIONAL([am__fastdepCXX], [
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^am__fastdepCXX_TRUE$])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^am__fastdepCXX_FALSE$])
-m4trace:configure.ac:12: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_TRUE])
-m4trace:configure.ac:12: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_FALSE])
-m4trace:configure.ac:13: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:13: -1- m4_pattern_allow([^CFLAGS$])
-m4trace:configure.ac:13: -1- m4_pattern_allow([^LDFLAGS$])
-m4trace:configure.ac:13: -1- m4_pattern_allow([^LIBS$])
-m4trace:configure.ac:13: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.ac:13: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:13: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:13: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:13: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:13: -1- m4_pattern_allow([^ac_ct_CC$])
-m4trace:configure.ac:13: -1- _AM_DEPENDENCIES([CC])
-m4trace:configure.ac:13: -1- m4_pattern_allow([^CCDEPMODE$])
-m4trace:configure.ac:13: -1- AM_CONDITIONAL([am__fastdepCC], [
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CC_dependencies_compiler_type" = gcc3])
-m4trace:configure.ac:13: -1- m4_pattern_allow([^am__fastdepCC_TRUE$])
-m4trace:configure.ac:13: -1- m4_pattern_allow([^am__fastdepCC_FALSE$])
-m4trace:configure.ac:13: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE])
-m4trace:configure.ac:13: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE])
-m4trace:configure.ac:15: -1- m4_pattern_allow([^HAVE_LIBEV$])
-m4trace:configure.ac:16: -1- m4_pattern_allow([^HAVE_LIBZLOG$])
-m4trace:configure.ac:19: -1- m4_pattern_allow([^CPP$])
-m4trace:configure.ac:19: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.ac:19: -1- m4_pattern_allow([^CPP$])
-m4trace:configure.ac:19: -1- m4_pattern_allow([^GREP$])
-m4trace:configure.ac:19: -1- m4_pattern_allow([^EGREP$])
-m4trace:configure.ac:19: -1- m4_pattern_allow([^STDC_HEADERS$])
-m4trace:configure.ac:22: -1- m4_pattern_allow([^HAVE__BOOL$])
-m4trace:configure.ac:24: -1- m4_pattern_allow([^int16_t$])
-m4trace:configure.ac:25: -1- m4_pattern_allow([^int32_t$])
-m4trace:configure.ac:26: -1- m4_pattern_allow([^int64_t$])
-m4trace:configure.ac:27: -1- m4_pattern_allow([^int8_t$])
-m4trace:configure.ac:28: -1- m4_pattern_allow([^size_t$])
-m4trace:configure.ac:29: -1- m4_pattern_allow([^uint16_t$])
-m4trace:configure.ac:30: -1- m4_pattern_allow([^_UINT32_T$])
-m4trace:configure.ac:30: -1- m4_pattern_allow([^uint32_t$])
-m4trace:configure.ac:31: -1- m4_pattern_allow([^_UINT64_T$])
-m4trace:configure.ac:31: -1- m4_pattern_allow([^uint64_t$])
-m4trace:configure.ac:32: -1- m4_pattern_allow([^_UINT8_T$])
-m4trace:configure.ac:32: -1- m4_pattern_allow([^uint8_t$])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^HAVE_STDLIB_H$])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^HAVE_MALLOC$])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^HAVE_MALLOC$])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^malloc$])
-m4trace:configure.ac:36: -1- m4_pattern_allow([^HAVE_STDLIB_H$])
-m4trace:configure.ac:36: -1- m4_pattern_allow([^HAVE_REALLOC$])
-m4trace:configure.ac:36: -1- m4_pattern_allow([^HAVE_REALLOC$])
-m4trace:configure.ac:36: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.ac:36: -1- m4_pattern_allow([^realloc$])
-m4trace:configure.ac:40: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.ac:40: -1- m4_pattern_allow([^LTLIBOBJS$])
-m4trace:configure.ac:40: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])
-m4trace:configure.ac:40: -1- m4_pattern_allow([^am__EXEEXT_TRUE$])
-m4trace:configure.ac:40: -1- m4_pattern_allow([^am__EXEEXT_FALSE$])
-m4trace:configure.ac:40: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE])
-m4trace:configure.ac:40: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE])
-m4trace:configure.ac:40: -1- _AM_OUTPUT_DEPENDENCY_COMMANDS

+ 0 - 573
autom4te.cache/traces.1

@@ -1,573 +0,0 @@
-m4trace:configure.ac:4: -1- AC_PREREQ([2.69])
-m4trace:configure.ac:5: -1- AC_INIT([yals], [1.0], [BUG-REPORT-ADDRESS])
-m4trace:configure.ac:5: -1- m4_pattern_forbid([^_?A[CHUM]_])
-m4trace:configure.ac:5: -1- m4_pattern_forbid([_AC_])
-m4trace:configure.ac:5: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^AS_FLAGS$])
-m4trace:configure.ac:5: -1- m4_pattern_forbid([^_?m4_])
-m4trace:configure.ac:5: -1- m4_pattern_forbid([^dnl$])
-m4trace:configure.ac:5: -1- m4_pattern_forbid([^_?AS_])
-m4trace:configure.ac:5: -1- AC_SUBST([SHELL])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([SHELL])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^SHELL$])
-m4trace:configure.ac:5: -1- AC_SUBST([PATH_SEPARATOR])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PATH_SEPARATOR])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PATH_SEPARATOR$])
-m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME],      ['AC_PACKAGE_NAME'])])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_NAME])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_NAME$])
-m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME],   ['AC_PACKAGE_TARNAME'])])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_TARNAME])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
-m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION],   ['AC_PACKAGE_VERSION'])])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_VERSION])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_VERSION$])
-m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING],    ['AC_PACKAGE_STRING'])])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_STRING])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_STRING$])
-m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
-m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL],       ['AC_PACKAGE_URL'])])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_URL])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_URL$])
-m4trace:configure.ac:5: -1- AC_SUBST([exec_prefix], [NONE])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([exec_prefix])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^exec_prefix$])
-m4trace:configure.ac:5: -1- AC_SUBST([prefix], [NONE])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([prefix])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^prefix$])
-m4trace:configure.ac:5: -1- AC_SUBST([program_transform_name], [s,x,x,])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([program_transform_name])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^program_transform_name$])
-m4trace:configure.ac:5: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([bindir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^bindir$])
-m4trace:configure.ac:5: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([sbindir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^sbindir$])
-m4trace:configure.ac:5: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([libexecdir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^libexecdir$])
-m4trace:configure.ac:5: -1- AC_SUBST([datarootdir], ['${prefix}/share'])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([datarootdir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^datarootdir$])
-m4trace:configure.ac:5: -1- AC_SUBST([datadir], ['${datarootdir}'])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([datadir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^datadir$])
-m4trace:configure.ac:5: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([sysconfdir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^sysconfdir$])
-m4trace:configure.ac:5: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([sharedstatedir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^sharedstatedir$])
-m4trace:configure.ac:5: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([localstatedir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^localstatedir$])
-m4trace:configure.ac:5: -1- AC_SUBST([includedir], ['${prefix}/include'])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([includedir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^includedir$])
-m4trace:configure.ac:5: -1- AC_SUBST([oldincludedir], ['/usr/include'])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([oldincludedir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^oldincludedir$])
-m4trace:configure.ac:5: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME],
-				     ['${datarootdir}/doc/${PACKAGE_TARNAME}'],
-				     ['${datarootdir}/doc/${PACKAGE}'])])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([docdir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^docdir$])
-m4trace:configure.ac:5: -1- AC_SUBST([infodir], ['${datarootdir}/info'])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([infodir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^infodir$])
-m4trace:configure.ac:5: -1- AC_SUBST([htmldir], ['${docdir}'])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([htmldir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^htmldir$])
-m4trace:configure.ac:5: -1- AC_SUBST([dvidir], ['${docdir}'])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([dvidir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^dvidir$])
-m4trace:configure.ac:5: -1- AC_SUBST([pdfdir], ['${docdir}'])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([pdfdir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^pdfdir$])
-m4trace:configure.ac:5: -1- AC_SUBST([psdir], ['${docdir}'])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([psdir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^psdir$])
-m4trace:configure.ac:5: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([libdir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^libdir$])
-m4trace:configure.ac:5: -1- AC_SUBST([localedir], ['${datarootdir}/locale'])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([localedir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^localedir$])
-m4trace:configure.ac:5: -1- AC_SUBST([mandir], ['${datarootdir}/man'])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([mandir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^mandir$])
-m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_NAME$])
-m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
-@%:@undef PACKAGE_NAME])
-m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
-m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
-@%:@undef PACKAGE_TARNAME])
-m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_VERSION$])
-m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
-@%:@undef PACKAGE_VERSION])
-m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_STRING$])
-m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
-@%:@undef PACKAGE_STRING])
-m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
-m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
-@%:@undef PACKAGE_BUGREPORT])
-m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_URL$])
-m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */
-@%:@undef PACKAGE_URL])
-m4trace:configure.ac:5: -1- AC_SUBST([DEFS])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([DEFS])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^DEFS$])
-m4trace:configure.ac:5: -1- AC_SUBST([ECHO_C])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([ECHO_C])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^ECHO_C$])
-m4trace:configure.ac:5: -1- AC_SUBST([ECHO_N])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([ECHO_N])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^ECHO_N$])
-m4trace:configure.ac:5: -1- AC_SUBST([ECHO_T])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([ECHO_T])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^ECHO_T$])
-m4trace:configure.ac:5: -1- AC_SUBST([LIBS])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([LIBS])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^LIBS$])
-m4trace:configure.ac:5: -1- AC_SUBST([build_alias])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([build_alias])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^build_alias$])
-m4trace:configure.ac:5: -1- AC_SUBST([host_alias])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([host_alias])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^host_alias$])
-m4trace:configure.ac:5: -1- AC_SUBST([target_alias])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([target_alias])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^target_alias$])
-m4trace:configure.ac:8: -1- AM_INIT_AUTOMAKE([foreign -Wall])
-m4trace:configure.ac:8: -1- AC_PREREQ([2.62])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$])
-m4trace:configure.ac:8: -1- AM_AUTOMAKE_VERSION([1.12.3])
-m4trace:configure.ac:8: -1- AC_REQUIRE_AUX_FILE([install-sh])
-m4trace:configure.ac:8: -1- AC_SUBST([INSTALL_PROGRAM])
-m4trace:configure.ac:8: -1- AC_SUBST_TRACE([INSTALL_PROGRAM])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
-m4trace:configure.ac:8: -1- AC_SUBST([INSTALL_SCRIPT])
-m4trace:configure.ac:8: -1- AC_SUBST_TRACE([INSTALL_SCRIPT])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
-m4trace:configure.ac:8: -1- AC_SUBST([INSTALL_DATA])
-m4trace:configure.ac:8: -1- AC_SUBST_TRACE([INSTALL_DATA])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^INSTALL_DATA$])
-m4trace:configure.ac:8: -1- AC_SUBST([am__isrc], [' -I$(srcdir)'])
-m4trace:configure.ac:8: -1- AC_SUBST_TRACE([am__isrc])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^am__isrc$])
-m4trace:configure.ac:8: -1- _AM_SUBST_NOTMAKE([am__isrc])
-m4trace:configure.ac:8: -1- AC_SUBST([CYGPATH_W])
-m4trace:configure.ac:8: -1- AC_SUBST_TRACE([CYGPATH_W])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^CYGPATH_W$])
-m4trace:configure.ac:8: -1- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])
-m4trace:configure.ac:8: -1- AC_SUBST_TRACE([PACKAGE])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^PACKAGE$])
-m4trace:configure.ac:8: -1- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])
-m4trace:configure.ac:8: -1- AC_SUBST_TRACE([VERSION])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^VERSION$])
-m4trace:configure.ac:8: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^PACKAGE$])
-m4trace:configure.ac:8: -1- AH_OUTPUT([PACKAGE], [/* Name of package */
-@%:@undef PACKAGE])
-m4trace:configure.ac:8: -1- AC_DEFINE_TRACE_LITERAL([VERSION])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^VERSION$])
-m4trace:configure.ac:8: -1- AH_OUTPUT([VERSION], [/* Version number of package */
-@%:@undef VERSION])
-m4trace:configure.ac:8: -1- AC_PREREQ([2.50])
-m4trace:configure.ac:8: -1- AC_REQUIRE_AUX_FILE([missing])
-m4trace:configure.ac:8: -1- AC_SUBST([ACLOCAL])
-m4trace:configure.ac:8: -1- AC_SUBST_TRACE([ACLOCAL])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^ACLOCAL$])
-m4trace:configure.ac:8: -1- AC_SUBST([AUTOCONF])
-m4trace:configure.ac:8: -1- AC_SUBST_TRACE([AUTOCONF])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^AUTOCONF$])
-m4trace:configure.ac:8: -1- AC_SUBST([AUTOMAKE])
-m4trace:configure.ac:8: -1- AC_SUBST_TRACE([AUTOMAKE])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^AUTOMAKE$])
-m4trace:configure.ac:8: -1- AC_SUBST([AUTOHEADER])
-m4trace:configure.ac:8: -1- AC_SUBST_TRACE([AUTOHEADER])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^AUTOHEADER$])
-m4trace:configure.ac:8: -1- AC_SUBST([MAKEINFO])
-m4trace:configure.ac:8: -1- AC_SUBST_TRACE([MAKEINFO])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^MAKEINFO$])
-m4trace:configure.ac:8: -1- AC_SUBST([install_sh])
-m4trace:configure.ac:8: -1- AC_SUBST_TRACE([install_sh])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^install_sh$])
-m4trace:configure.ac:8: -1- AC_SUBST([STRIP])
-m4trace:configure.ac:8: -1- AC_SUBST_TRACE([STRIP])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^STRIP$])
-m4trace:configure.ac:8: -1- AC_SUBST([INSTALL_STRIP_PROGRAM])
-m4trace:configure.ac:8: -1- AC_SUBST_TRACE([INSTALL_STRIP_PROGRAM])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$])
-m4trace:configure.ac:8: -1- AC_REQUIRE_AUX_FILE([install-sh])
-m4trace:configure.ac:8: -1- AC_SUBST([MKDIR_P])
-m4trace:configure.ac:8: -1- AC_SUBST_TRACE([MKDIR_P])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^MKDIR_P$])
-m4trace:configure.ac:8: -1- AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
-m4trace:configure.ac:8: -1- AC_SUBST_TRACE([mkdir_p])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^mkdir_p$])
-m4trace:configure.ac:8: -1- AC_SUBST([AWK])
-m4trace:configure.ac:8: -1- AC_SUBST_TRACE([AWK])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^AWK$])
-m4trace:configure.ac:8: -1- AC_SUBST([SET_MAKE])
-m4trace:configure.ac:8: -1- AC_SUBST_TRACE([SET_MAKE])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^SET_MAKE$])
-m4trace:configure.ac:8: -1- AC_SUBST([am__leading_dot])
-m4trace:configure.ac:8: -1- AC_SUBST_TRACE([am__leading_dot])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^am__leading_dot$])
-m4trace:configure.ac:8: -1- AC_SUBST([AMTAR], ['$${TAR-tar}'])
-m4trace:configure.ac:8: -1- AC_SUBST_TRACE([AMTAR])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^AMTAR$])
-m4trace:configure.ac:8: -1- AC_SUBST([am__tar])
-m4trace:configure.ac:8: -1- AC_SUBST_TRACE([am__tar])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^am__tar$])
-m4trace:configure.ac:8: -1- AC_SUBST([am__untar])
-m4trace:configure.ac:8: -1- AC_SUBST_TRACE([am__untar])
-m4trace:configure.ac:8: -1- m4_pattern_allow([^am__untar$])
-m4trace:configure.ac:12: -1- AC_PROG_CXX
-m4trace:configure.ac:12: -1- AC_SUBST([CXX])
-m4trace:configure.ac:12: -1- AC_SUBST_TRACE([CXX])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^CXX$])
-m4trace:configure.ac:12: -1- AC_SUBST([CXXFLAGS])
-m4trace:configure.ac:12: -1- AC_SUBST_TRACE([CXXFLAGS])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^CXXFLAGS$])
-m4trace:configure.ac:12: -1- AC_SUBST([LDFLAGS])
-m4trace:configure.ac:12: -1- AC_SUBST_TRACE([LDFLAGS])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^LDFLAGS$])
-m4trace:configure.ac:12: -1- AC_SUBST([LIBS])
-m4trace:configure.ac:12: -1- AC_SUBST_TRACE([LIBS])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^LIBS$])
-m4trace:configure.ac:12: -1- AC_SUBST([CPPFLAGS])
-m4trace:configure.ac:12: -1- AC_SUBST_TRACE([CPPFLAGS])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.ac:12: -1- AC_SUBST([CXX])
-m4trace:configure.ac:12: -1- AC_SUBST_TRACE([CXX])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^CXX$])
-m4trace:configure.ac:12: -1- AC_SUBST([ac_ct_CXX])
-m4trace:configure.ac:12: -1- AC_SUBST_TRACE([ac_ct_CXX])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^ac_ct_CXX$])
-m4trace:configure.ac:12: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
-m4trace:configure.ac:12: -1- AC_SUBST_TRACE([EXEEXT])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^EXEEXT$])
-m4trace:configure.ac:12: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
-m4trace:configure.ac:12: -1- AC_SUBST_TRACE([OBJEXT])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^OBJEXT$])
-m4trace:configure.ac:12: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])
-m4trace:configure.ac:12: -1- AC_SUBST_TRACE([DEPDIR])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^DEPDIR$])
-m4trace:configure.ac:12: -1- AC_SUBST([am__include])
-m4trace:configure.ac:12: -1- AC_SUBST_TRACE([am__include])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^am__include$])
-m4trace:configure.ac:12: -1- AC_SUBST([am__quote])
-m4trace:configure.ac:12: -1- AC_SUBST_TRACE([am__quote])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^am__quote$])
-m4trace:configure.ac:12: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-m4trace:configure.ac:12: -1- AC_PREREQ([2.52])
-m4trace:configure.ac:12: -1- AC_SUBST([AMDEP_TRUE])
-m4trace:configure.ac:12: -1- AC_SUBST_TRACE([AMDEP_TRUE])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^AMDEP_TRUE$])
-m4trace:configure.ac:12: -1- AC_SUBST([AMDEP_FALSE])
-m4trace:configure.ac:12: -1- AC_SUBST_TRACE([AMDEP_FALSE])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^AMDEP_FALSE$])
-m4trace:configure.ac:12: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE])
-m4trace:configure.ac:12: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE])
-m4trace:configure.ac:12: -1- AC_SUBST([AMDEPBACKSLASH])
-m4trace:configure.ac:12: -1- AC_SUBST_TRACE([AMDEPBACKSLASH])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^AMDEPBACKSLASH$])
-m4trace:configure.ac:12: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])
-m4trace:configure.ac:12: -1- AC_SUBST([am__nodep])
-m4trace:configure.ac:12: -1- AC_SUBST_TRACE([am__nodep])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^am__nodep$])
-m4trace:configure.ac:12: -1- _AM_SUBST_NOTMAKE([am__nodep])
-m4trace:configure.ac:12: -1- AC_SUBST([CXXDEPMODE], [depmode=$am_cv_CXX_dependencies_compiler_type])
-m4trace:configure.ac:12: -1- AC_SUBST_TRACE([CXXDEPMODE])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^CXXDEPMODE$])
-m4trace:configure.ac:12: -1- AM_CONDITIONAL([am__fastdepCXX], [
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3])
-m4trace:configure.ac:12: -1- AC_PREREQ([2.52])
-m4trace:configure.ac:12: -1- AC_SUBST([am__fastdepCXX_TRUE])
-m4trace:configure.ac:12: -1- AC_SUBST_TRACE([am__fastdepCXX_TRUE])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^am__fastdepCXX_TRUE$])
-m4trace:configure.ac:12: -1- AC_SUBST([am__fastdepCXX_FALSE])
-m4trace:configure.ac:12: -1- AC_SUBST_TRACE([am__fastdepCXX_FALSE])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^am__fastdepCXX_FALSE$])
-m4trace:configure.ac:12: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_TRUE])
-m4trace:configure.ac:12: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_FALSE])
-m4trace:configure.ac:13: -1- AC_PROG_CC
-m4trace:configure.ac:13: -1- AC_SUBST([CC])
-m4trace:configure.ac:13: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:13: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:13: -1- AC_SUBST([CFLAGS])
-m4trace:configure.ac:13: -1- AC_SUBST_TRACE([CFLAGS])
-m4trace:configure.ac:13: -1- m4_pattern_allow([^CFLAGS$])
-m4trace:configure.ac:13: -1- AC_SUBST([LDFLAGS])
-m4trace:configure.ac:13: -1- AC_SUBST_TRACE([LDFLAGS])
-m4trace:configure.ac:13: -1- m4_pattern_allow([^LDFLAGS$])
-m4trace:configure.ac:13: -1- AC_SUBST([LIBS])
-m4trace:configure.ac:13: -1- AC_SUBST_TRACE([LIBS])
-m4trace:configure.ac:13: -1- m4_pattern_allow([^LIBS$])
-m4trace:configure.ac:13: -1- AC_SUBST([CPPFLAGS])
-m4trace:configure.ac:13: -1- AC_SUBST_TRACE([CPPFLAGS])
-m4trace:configure.ac:13: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.ac:13: -1- AC_SUBST([CC])
-m4trace:configure.ac:13: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:13: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:13: -1- AC_SUBST([CC])
-m4trace:configure.ac:13: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:13: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:13: -1- AC_SUBST([CC])
-m4trace:configure.ac:13: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:13: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:13: -1- AC_SUBST([CC])
-m4trace:configure.ac:13: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:13: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:13: -1- AC_SUBST([ac_ct_CC])
-m4trace:configure.ac:13: -1- AC_SUBST_TRACE([ac_ct_CC])
-m4trace:configure.ac:13: -1- m4_pattern_allow([^ac_ct_CC$])
-m4trace:configure.ac:13: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type])
-m4trace:configure.ac:13: -1- AC_SUBST_TRACE([CCDEPMODE])
-m4trace:configure.ac:13: -1- m4_pattern_allow([^CCDEPMODE$])
-m4trace:configure.ac:13: -1- AM_CONDITIONAL([am__fastdepCC], [
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CC_dependencies_compiler_type" = gcc3])
-m4trace:configure.ac:13: -1- AC_PREREQ([2.52])
-m4trace:configure.ac:13: -1- AC_SUBST([am__fastdepCC_TRUE])
-m4trace:configure.ac:13: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE])
-m4trace:configure.ac:13: -1- m4_pattern_allow([^am__fastdepCC_TRUE$])
-m4trace:configure.ac:13: -1- AC_SUBST([am__fastdepCC_FALSE])
-m4trace:configure.ac:13: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE])
-m4trace:configure.ac:13: -1- m4_pattern_allow([^am__fastdepCC_FALSE$])
-m4trace:configure.ac:13: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE])
-m4trace:configure.ac:13: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE])
-m4trace:configure.ac:15: -1- AH_OUTPUT([HAVE_LIBEV], [/* Define to 1 if you have the `ev\' library (-lev). */
-@%:@undef HAVE_LIBEV])
-m4trace:configure.ac:15: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBEV])
-m4trace:configure.ac:15: -1- m4_pattern_allow([^HAVE_LIBEV$])
-m4trace:configure.ac:16: -1- AH_OUTPUT([HAVE_LIBZLOG], [/* Define to 1 if you have the `zlog\' library (-lzlog). */
-@%:@undef HAVE_LIBZLOG])
-m4trace:configure.ac:16: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBZLOG])
-m4trace:configure.ac:16: -1- m4_pattern_allow([^HAVE_LIBZLOG$])
-m4trace:configure.ac:19: -1- AC_CHECK_HEADERS([arpa/inet.h fcntl.h netinet/in.h stdint.h string.h sys/socket.h unistd.h])
-m4trace:configure.ac:19: -1- AH_OUTPUT([HAVE_ARPA_INET_H], [/* Define to 1 if you have the <arpa/inet.h> header file. */
-@%:@undef HAVE_ARPA_INET_H])
-m4trace:configure.ac:19: -1- AH_OUTPUT([HAVE_FCNTL_H], [/* Define to 1 if you have the <fcntl.h> header file. */
-@%:@undef HAVE_FCNTL_H])
-m4trace:configure.ac:19: -1- AH_OUTPUT([HAVE_NETINET_IN_H], [/* Define to 1 if you have the <netinet/in.h> header file. */
-@%:@undef HAVE_NETINET_IN_H])
-m4trace:configure.ac:19: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
-@%:@undef HAVE_STDINT_H])
-m4trace:configure.ac:19: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
-@%:@undef HAVE_STRING_H])
-m4trace:configure.ac:19: -1- AH_OUTPUT([HAVE_SYS_SOCKET_H], [/* Define to 1 if you have the <sys/socket.h> header file. */
-@%:@undef HAVE_SYS_SOCKET_H])
-m4trace:configure.ac:19: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
-@%:@undef HAVE_UNISTD_H])
-m4trace:configure.ac:19: -1- AC_PROG_CPP
-m4trace:configure.ac:19: -1- AC_SUBST([CPP])
-m4trace:configure.ac:19: -1- AC_SUBST_TRACE([CPP])
-m4trace:configure.ac:19: -1- m4_pattern_allow([^CPP$])
-m4trace:configure.ac:19: -1- AC_SUBST([CPPFLAGS])
-m4trace:configure.ac:19: -1- AC_SUBST_TRACE([CPPFLAGS])
-m4trace:configure.ac:19: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.ac:19: -1- AC_SUBST([CPP])
-m4trace:configure.ac:19: -1- AC_SUBST_TRACE([CPP])
-m4trace:configure.ac:19: -1- m4_pattern_allow([^CPP$])
-m4trace:configure.ac:19: -1- AC_SUBST([GREP])
-m4trace:configure.ac:19: -1- AC_SUBST_TRACE([GREP])
-m4trace:configure.ac:19: -1- m4_pattern_allow([^GREP$])
-m4trace:configure.ac:19: -1- AC_SUBST([EGREP])
-m4trace:configure.ac:19: -1- AC_SUBST_TRACE([EGREP])
-m4trace:configure.ac:19: -1- m4_pattern_allow([^EGREP$])
-m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
-m4trace:configure.ac:19: -1- m4_pattern_allow([^STDC_HEADERS$])
-m4trace:configure.ac:19: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
-@%:@undef STDC_HEADERS])
-m4trace:configure.ac:19: -1- AC_CHECK_HEADERS([sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-		  inttypes.h stdint.h unistd.h], [], [], [$ac_includes_default])
-m4trace:configure.ac:19: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
-@%:@undef HAVE_SYS_TYPES_H])
-m4trace:configure.ac:19: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
-@%:@undef HAVE_SYS_STAT_H])
-m4trace:configure.ac:19: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
-@%:@undef HAVE_STDLIB_H])
-m4trace:configure.ac:19: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
-@%:@undef HAVE_STRING_H])
-m4trace:configure.ac:19: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
-@%:@undef HAVE_MEMORY_H])
-m4trace:configure.ac:19: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
-@%:@undef HAVE_STRINGS_H])
-m4trace:configure.ac:19: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
-@%:@undef HAVE_INTTYPES_H])
-m4trace:configure.ac:19: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
-@%:@undef HAVE_STDINT_H])
-m4trace:configure.ac:19: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
-@%:@undef HAVE_UNISTD_H])
-m4trace:configure.ac:22: -1- AC_CHECK_HEADER_STDBOOL
-m4trace:configure.ac:22: -1- AC_DEFINE_TRACE_LITERAL([HAVE__BOOL])
-m4trace:configure.ac:22: -1- m4_pattern_allow([^HAVE__BOOL$])
-m4trace:configure.ac:22: -1- AH_OUTPUT([HAVE__BOOL], [/* Define to 1 if the system has the type `_Bool\'. */
-@%:@undef HAVE__BOOL])
-m4trace:configure.ac:23: -1- AC_C_INLINE
-m4trace:configure.ac:23: -1- AH_OUTPUT([inline], [/* Define to `__inline__\' or `__inline\' if that\'s what the C compiler
-   calls it, or to nothing if \'inline\' is not supported under any name.  */
-#ifndef __cplusplus
-#undef inline
-#endif])
-m4trace:configure.ac:24: -1- AC_TYPE_INT16_T
-m4trace:configure.ac:24: -1- AC_DEFINE_TRACE_LITERAL([int16_t])
-m4trace:configure.ac:24: -1- m4_pattern_allow([^int16_t$])
-m4trace:configure.ac:24: -1- AH_OUTPUT([int16_t], [/* Define to the type of a signed integer type of width exactly 16 bits if
-   such a type exists and the standard includes do not define it. */
-@%:@undef int16_t])
-m4trace:configure.ac:25: -1- AC_TYPE_INT32_T
-m4trace:configure.ac:25: -1- AC_DEFINE_TRACE_LITERAL([int32_t])
-m4trace:configure.ac:25: -1- m4_pattern_allow([^int32_t$])
-m4trace:configure.ac:25: -1- AH_OUTPUT([int32_t], [/* Define to the type of a signed integer type of width exactly 32 bits if
-   such a type exists and the standard includes do not define it. */
-@%:@undef int32_t])
-m4trace:configure.ac:26: -1- AC_TYPE_INT64_T
-m4trace:configure.ac:26: -1- AC_DEFINE_TRACE_LITERAL([int64_t])
-m4trace:configure.ac:26: -1- m4_pattern_allow([^int64_t$])
-m4trace:configure.ac:26: -1- AH_OUTPUT([int64_t], [/* Define to the type of a signed integer type of width exactly 64 bits if
-   such a type exists and the standard includes do not define it. */
-@%:@undef int64_t])
-m4trace:configure.ac:27: -1- AC_TYPE_INT8_T
-m4trace:configure.ac:27: -1- AC_DEFINE_TRACE_LITERAL([int8_t])
-m4trace:configure.ac:27: -1- m4_pattern_allow([^int8_t$])
-m4trace:configure.ac:27: -1- AH_OUTPUT([int8_t], [/* Define to the type of a signed integer type of width exactly 8 bits if such
-   a type exists and the standard includes do not define it. */
-@%:@undef int8_t])
-m4trace:configure.ac:28: -1- AC_TYPE_SIZE_T
-m4trace:configure.ac:28: -1- AC_DEFINE_TRACE_LITERAL([size_t])
-m4trace:configure.ac:28: -1- m4_pattern_allow([^size_t$])
-m4trace:configure.ac:28: -1- AH_OUTPUT([size_t], [/* Define to `unsigned int\' if <sys/types.h> does not define. */
-@%:@undef size_t])
-m4trace:configure.ac:29: -1- AC_TYPE_UINT16_T
-m4trace:configure.ac:29: -1- AC_DEFINE_TRACE_LITERAL([uint16_t])
-m4trace:configure.ac:29: -1- m4_pattern_allow([^uint16_t$])
-m4trace:configure.ac:29: -1- AH_OUTPUT([uint16_t], [/* Define to the type of an unsigned integer type of width exactly 16 bits if
-   such a type exists and the standard includes do not define it. */
-@%:@undef uint16_t])
-m4trace:configure.ac:30: -1- AC_TYPE_UINT32_T
-m4trace:configure.ac:30: -1- AC_DEFINE_TRACE_LITERAL([_UINT32_T])
-m4trace:configure.ac:30: -1- m4_pattern_allow([^_UINT32_T$])
-m4trace:configure.ac:30: -1- AH_OUTPUT([_UINT32_T], [/* Define for Solaris 2.5.1 so the uint32_t typedef from <sys/synch.h>,
-   <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
-   @%:@define below would cause a syntax error. */
-@%:@undef _UINT32_T])
-m4trace:configure.ac:30: -1- AC_DEFINE_TRACE_LITERAL([uint32_t])
-m4trace:configure.ac:30: -1- m4_pattern_allow([^uint32_t$])
-m4trace:configure.ac:30: -1- AH_OUTPUT([uint32_t], [/* Define to the type of an unsigned integer type of width exactly 32 bits if
-   such a type exists and the standard includes do not define it. */
-@%:@undef uint32_t])
-m4trace:configure.ac:31: -1- AC_TYPE_UINT64_T
-m4trace:configure.ac:31: -1- AC_DEFINE_TRACE_LITERAL([_UINT64_T])
-m4trace:configure.ac:31: -1- m4_pattern_allow([^_UINT64_T$])
-m4trace:configure.ac:31: -1- AH_OUTPUT([_UINT64_T], [/* Define for Solaris 2.5.1 so the uint64_t typedef from <sys/synch.h>,
-   <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
-   @%:@define below would cause a syntax error. */
-@%:@undef _UINT64_T])
-m4trace:configure.ac:31: -1- AC_DEFINE_TRACE_LITERAL([uint64_t])
-m4trace:configure.ac:31: -1- m4_pattern_allow([^uint64_t$])
-m4trace:configure.ac:31: -1- AH_OUTPUT([uint64_t], [/* Define to the type of an unsigned integer type of width exactly 64 bits if
-   such a type exists and the standard includes do not define it. */
-@%:@undef uint64_t])
-m4trace:configure.ac:32: -1- AC_TYPE_UINT8_T
-m4trace:configure.ac:32: -1- AC_DEFINE_TRACE_LITERAL([_UINT8_T])
-m4trace:configure.ac:32: -1- m4_pattern_allow([^_UINT8_T$])
-m4trace:configure.ac:32: -1- AH_OUTPUT([_UINT8_T], [/* Define for Solaris 2.5.1 so the uint8_t typedef from <sys/synch.h>,
-   <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
-   @%:@define below would cause a syntax error. */
-@%:@undef _UINT8_T])
-m4trace:configure.ac:32: -1- AC_DEFINE_TRACE_LITERAL([uint8_t])
-m4trace:configure.ac:32: -1- m4_pattern_allow([^uint8_t$])
-m4trace:configure.ac:32: -1- AH_OUTPUT([uint8_t], [/* Define to the type of an unsigned integer type of width exactly 8 bits if
-   such a type exists and the standard includes do not define it. */
-@%:@undef uint8_t])
-m4trace:configure.ac:35: -1- AC_FUNC_MALLOC
-m4trace:configure.ac:35: -1- AC_CHECK_HEADERS([stdlib.h])
-m4trace:configure.ac:35: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
-@%:@undef HAVE_STDLIB_H])
-m4trace:configure.ac:35: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDLIB_H])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^HAVE_STDLIB_H$])
-m4trace:configure.ac:35: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MALLOC])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^HAVE_MALLOC$])
-m4trace:configure.ac:35: -1- AH_OUTPUT([HAVE_MALLOC], [/* Define to 1 if your system has a GNU libc compatible `malloc\' function, and
-   to 0 otherwise. */
-@%:@undef HAVE_MALLOC])
-m4trace:configure.ac:35: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MALLOC])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^HAVE_MALLOC$])
-m4trace:configure.ac:35: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS malloc.$ac_objext"])
-m4trace:configure.ac:35: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.ac:35: -1- AC_LIBSOURCE([malloc.c])
-m4trace:configure.ac:35: -1- AC_DEFINE_TRACE_LITERAL([malloc])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^malloc$])
-m4trace:configure.ac:35: -1- AH_OUTPUT([malloc], [/* Define to rpl_malloc if the replacement function should be used. */
-@%:@undef malloc])
-m4trace:configure.ac:36: -1- AC_FUNC_REALLOC
-m4trace:configure.ac:36: -1- AC_CHECK_HEADERS([stdlib.h])
-m4trace:configure.ac:36: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
-@%:@undef HAVE_STDLIB_H])
-m4trace:configure.ac:36: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDLIB_H])
-m4trace:configure.ac:36: -1- m4_pattern_allow([^HAVE_STDLIB_H$])
-m4trace:configure.ac:36: -1- AC_DEFINE_TRACE_LITERAL([HAVE_REALLOC])
-m4trace:configure.ac:36: -1- m4_pattern_allow([^HAVE_REALLOC$])
-m4trace:configure.ac:36: -1- AH_OUTPUT([HAVE_REALLOC], [/* Define to 1 if your system has a GNU libc compatible `realloc\' function,
-   and to 0 otherwise. */
-@%:@undef HAVE_REALLOC])
-m4trace:configure.ac:36: -1- AC_DEFINE_TRACE_LITERAL([HAVE_REALLOC])
-m4trace:configure.ac:36: -1- m4_pattern_allow([^HAVE_REALLOC$])
-m4trace:configure.ac:36: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS realloc.$ac_objext"])
-m4trace:configure.ac:36: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.ac:36: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.ac:36: -1- AC_LIBSOURCE([realloc.c])
-m4trace:configure.ac:36: -1- AC_DEFINE_TRACE_LITERAL([realloc])
-m4trace:configure.ac:36: -1- m4_pattern_allow([^realloc$])
-m4trace:configure.ac:36: -1- AH_OUTPUT([realloc], [/* Define to rpl_realloc if the replacement function should be used. */
-@%:@undef realloc])
-m4trace:configure.ac:37: -1- AC_CHECK_FUNCS([inet_ntoa memset socket])
-m4trace:configure.ac:37: -1- AH_OUTPUT([HAVE_INET_NTOA], [/* Define to 1 if you have the `inet_ntoa\' function. */
-@%:@undef HAVE_INET_NTOA])
-m4trace:configure.ac:37: -1- AH_OUTPUT([HAVE_MEMSET], [/* Define to 1 if you have the `memset\' function. */
-@%:@undef HAVE_MEMSET])
-m4trace:configure.ac:37: -1- AH_OUTPUT([HAVE_SOCKET], [/* Define to 1 if you have the `socket\' function. */
-@%:@undef HAVE_SOCKET])
-m4trace:configure.ac:39: -1- AC_CONFIG_FILES([Makefile])
-m4trace:configure.ac:40: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
-m4trace:configure.ac:40: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.ac:40: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.ac:40: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
-m4trace:configure.ac:40: -1- AC_SUBST_TRACE([LTLIBOBJS])
-m4trace:configure.ac:40: -1- m4_pattern_allow([^LTLIBOBJS$])
-m4trace:configure.ac:40: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])
-m4trace:configure.ac:40: -1- AC_PREREQ([2.52])
-m4trace:configure.ac:40: -1- AC_SUBST([am__EXEEXT_TRUE])
-m4trace:configure.ac:40: -1- AC_SUBST_TRACE([am__EXEEXT_TRUE])
-m4trace:configure.ac:40: -1- m4_pattern_allow([^am__EXEEXT_TRUE$])
-m4trace:configure.ac:40: -1- AC_SUBST([am__EXEEXT_FALSE])
-m4trace:configure.ac:40: -1- AC_SUBST_TRACE([am__EXEEXT_FALSE])
-m4trace:configure.ac:40: -1- m4_pattern_allow([^am__EXEEXT_FALSE$])
-m4trace:configure.ac:40: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE])
-m4trace:configure.ac:40: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE])
-m4trace:configure.ac:40: -1- AC_SUBST_TRACE([top_builddir])
-m4trace:configure.ac:40: -1- AC_SUBST_TRACE([top_build_prefix])
-m4trace:configure.ac:40: -1- AC_SUBST_TRACE([srcdir])
-m4trace:configure.ac:40: -1- AC_SUBST_TRACE([abs_srcdir])
-m4trace:configure.ac:40: -1- AC_SUBST_TRACE([top_srcdir])
-m4trace:configure.ac:40: -1- AC_SUBST_TRACE([abs_top_srcdir])
-m4trace:configure.ac:40: -1- AC_SUBST_TRACE([builddir])
-m4trace:configure.ac:40: -1- AC_SUBST_TRACE([abs_builddir])
-m4trace:configure.ac:40: -1- AC_SUBST_TRACE([abs_top_builddir])
-m4trace:configure.ac:40: -1- AC_SUBST_TRACE([INSTALL])
-m4trace:configure.ac:40: -1- AC_SUBST_TRACE([MKDIR_P])

+ 945 - 0
card_path.cppbak

@@ -0,0 +1,945 @@
+#include <stdio.h>
+#include <algorithm>
+#include <unordered_map>
+#include <set>
+#include <memory>
+#include <atomic>
+#include <thread>
+#include "zlist.h"
+#include "line.h"
+#include "ant.h"
+
+#include "card_path.h"
+#include "visit.h"
+
+namespace{
+
+static const double PI=3.1416;
+inline bool eq(double a,double b,double e=0.0001)
+{
+	return fabs(a-b)<e;
+}
+
+struct vertex:point
+{
+	float level;
+	int sid0,sid1;
+	vertex()
+		:level(0)
+		,sid0(0)
+		,sid1(0)
+	{}
+
+	vertex(const point&pt,float level_=0,int site_id0=0,int site_id1=0)
+		:point(pt)
+		,level(level_)
+		,sid0(site_id0)
+		,sid1(site_id1)
+	{
+	}
+
+	std::string to_string()const
+	{
+		char buf[128];
+		sprintf(buf,"%.2f,%.3lf,%d,%d,%.2lf",x,y,sid0,sid1,level/PI*180);
+
+		return buf;
+	}
+};
+
+struct vertex_list;
+struct base_path:std::array<int,2>
+{
+	int sid;
+	base_path(int i1=-1,int i2=-1)
+	{
+		at(0)=i1;
+		at(1)=i2;
+	}
+
+	bool operator<(const base_path&o)const
+	{
+		int c=at(0)-o.at(0);
+		if(c!=0)
+			return c<0;
+
+		return at(1)-o.at(1)<0;
+	}
+
+	point  cross(const vertex_list&v_list, const base_path&o)const;
+	bool   contains(const vertex_list&v_list, const point&o, double e)const;
+	double arg(const vertex_list&v)const;
+	int    type(const vertex_list&v)const;
+	line_v as_line(const vertex_list&v)const;
+	int    level(const vertex_list&v)const;
+};
+
+struct vertex_list
+{
+	std::vector<vertex> v;
+
+	std::string to_string()const
+	{
+		std::string ret;
+		ret.reserve(1024);
+
+		char buf[128];
+		for(int i=0,len=v.size();i<len;i++)
+		{
+			sprintf(buf,"vertex:%3d,%s\n",i,v[i].to_string().c_str());
+
+			ret+=buf;
+		}
+
+		return std::move(ret);
+	}
+
+	void log()
+	{
+		printf("%s",to_string().c_str());
+	}
+
+
+	static unsigned hash(const point&p)
+	{
+		return (((((unsigned)p.x)>>2)<<16) + (((unsigned)p.y)>>2));
+	}
+
+	int find(const point&p,double x=1)const
+	{
+		int rc=-1;
+		double t;
+
+		for(int i=0,len=v.size();i<len;i++)
+		{
+			t=p.dist(v[i]);
+			if(t<x)
+			{
+				rc=i;
+				x=t;
+			}
+		}
+
+		return rc;
+	}
+
+	int add(const point&p,float level=0,int sid0=0,int sid1=0)
+	{
+		int i=find(p);
+
+		if(i<0)
+		{
+			v.push_back(vertex(p,level,sid0,sid1));
+			return v.size()-1;
+		}
+
+		vertex&v0=v[i];
+
+		v0.level=std::max(v0.level,level);
+
+		return i;
+	}
+
+	int size()const
+	{
+		return v.size();
+	}
+
+	const vertex&operator[](int i)const
+	{
+		return v[i];
+	}
+
+	vertex&operator[](int i)
+	{
+		return v[i];
+	}
+};
+
+int base_path::level(const vertex_list&v)const
+{
+	const vertex&p0=v[at(0)];
+	const vertex&p1=v[at(1)];
+
+	return p0.level+p1.level;
+}
+
+line_v base_path::as_line(const vertex_list&v)const
+{
+	const vertex&p0=v[at(0)];
+	const vertex&p1=v[at(1)];
+
+	return line_v(p0,p1);
+}
+
+double  base_path::arg(const vertex_list&v)const
+{
+	return as_line(v).arg();
+}
+
+bool  base_path::contains(const vertex_list&v, const point&o, double e)const
+{
+	return as_line(v).contain(o,e);
+}
+
+point  base_path::cross(const vertex_list&v, const base_path&o)const
+{
+	line_v l0=as_line(v);
+	line_v l1=o.as_line(v);
+
+	return l0.crossing(l1);
+}
+
+void log_path(const std::vector<base_path>&path,const vertex_list&v_list)
+{
+	printf("%s\n","----------------------------------------------------------------");
+	for(int i=0,len=path.size();i<len;i++)
+	{
+		double c=path[i].arg(v_list)/PI*180;
+		printf("base_path %.6lf, %03d,(%d,%s),(%d,%s)\n",c,i,path[i][0],v_list[path[i][0]].to_string().c_str(),path[i][1],v_list[path[i][1]].to_string().c_str());
+	}
+}
+struct handle_path :visitor<std::shared_ptr<site>>
+{
+	std::vector<base_path> ret;
+	bool visit(std::shared_ptr<site> sit)
+	{
+		//auto&s=sites[i];
+		const auto &s = *sit;
+
+		if(!s.have_valid_path())
+			continue;
+
+		if(s.path(0).empty()||s.path(1).empty())
+			continue;
+        if(s[0].size()<2)
+            continue;
+        line_v l000 = s[0][0][0];
+        line_v l010 = s[0][1][0];
+        if(l000.is_same(l010))
+        {
+            printf("same....%d",s.m_id);
+			int p0=v.add(point::min(s.path(0),s.path(1)),0,s.m_id);
+			int p1=v.add(point::max(s.path(0),s.path(1)),0,s.m_id);
+
+		    ret.push_back(base_path(p0,p1));
+			ret.back().sid=s.m_id;
+        }
+        else
+        {
+            point px = l000.line::crossing(l010);
+            for(int i=0;i<2;i++)
+            {
+			    int p0=v.add(point::min(px,s.path(i)),0,s.m_id);
+			    int p1=v.add(point::max(px,s.path(i)),0,s.m_id);
+
+		        ret.push_back(base_path(p0,p1));
+			    ret.back().sid=s.m_id;
+            }
+        }
+        for(int i=0;i<2;i++)
+        {
+            if(!s[0][i][1].empty())
+            {
+			    int p0=v.add(point::min(s[0][i][1][0],s[0][i][1][1]),0,s.m_id);
+			    int p1=v.add(point::max(s[0][i][1][0],s[0][i][1][1]),0,s.m_id);
+
+		        ret.push_back(base_path(p0,p1));
+			    ret.back().sid=s.m_id;
+            }
+        }
+		return true;
+	}
+};
+static std::vector<base_path> init_path(const sit_list&sites,vertex_list&v)
+{
+	std::vector<base_path> ret;
+//	for(uint32_t i=0;i<sites.m_list.size();i++)
+//	{
+//		auto&s=sites[i];
+//
+//		if(!s.have_valid_path())
+//			continue;
+//
+//		if(s.path(0).empty()||s.path(1).empty())
+//			continue;
+//        if(s[0].size()<2)
+//            continue;
+//        line_v l000 = s[0][0][0];
+//        line_v l010 = s[0][1][0];
+//        if(l000.is_same(l010))
+//        {
+//            printf("same....%d",s.m_id);
+//			int p0=v.add(point::min(s.path(0),s.path(1)),0,s.m_id);
+//			int p1=v.add(point::max(s.path(0),s.path(1)),0,s.m_id);
+//
+//		    ret.push_back(base_path(p0,p1));
+//			ret.back().sid=s.m_id;
+//        }
+//        else
+//        {
+//            point px = l000.line::crossing(l010);
+//            for(int i=0;i<2;i++)
+//            {
+//			    int p0=v.add(point::min(px,s.path(i)),0,s.m_id);
+//			    int p1=v.add(point::max(px,s.path(i)),0,s.m_id);
+//
+//		        ret.push_back(base_path(p0,p1));
+//			    ret.back().sid=s.m_id;
+//            }
+//        }
+//        for(int i=0;i<2;i++)
+//        {
+//            if(!s[0][i][1].empty())
+//            {
+//			    int p0=v.add(point::min(s[0][i][1][0],s[0][i][1][1]),0,s.m_id);
+//			    int p1=v.add(point::max(s[0][i][1][0],s[0][i][1][1]),0,s.m_id);
+//
+//		        ret.push_back(base_path(p0,p1));
+//			    ret.back().sid=s.m_id;
+//
+//            }
+//        }
+//    }
+
+/*
+
+		if(x.contain(s,2.5))
+		{
+			int p0=v.add(point::min(s.path(0),s.path(1)),0,s.m_id);
+			int p1=v.add(point::max(s.path(0),s.path(1)),0,s.m_id);
+
+		    ret.push_back(base_path(p0,p1));
+			ret.back().sid=s.m_id;
+			continue;
+		}
+
+		for(int j=0;j<2;j++)
+		{
+			if(!s.path(j).empty() && s.dist(s.path(j))<2)
+				continue;
+
+			point p=s.path(j);
+			int p0=v.add(point::min(s,p),0,s.m_id);
+			int p1=v.add(point::max(s,p),0,s.m_id);
+			ret.push_back(base_path(p0,p1));
+			ret.back().sid=s.m_id;
+		}
+	}
+*/
+	log_path(ret,v);
+    printf("++++++++++++++++++++++++++++++++++++++++++++");
+	std::sort(ret.begin(),ret.end());
+	log_path(ret,v);
+    printf("++++++++++++++++++++++++++++++++++++++++++++");
+	ret.erase(std::unique(ret.begin(),ret.end()),ret.end());
+	log_path(ret,v);
+    printf("++++++++++++++++++++++++++++++++++++++++++++");
+
+	std::sort(ret.begin(),ret.end(),[&v](const base_path&p1,const base_path&p2){
+		double arg=p1.arg(v)-p2.arg(v);
+
+		if(fabs(arg)<0.1)
+		{
+			return v[p1[0]]<v[p2[0]];
+		}
+
+		return arg<0;
+	});
+
+	log_path(ret,v);
+
+	for(int i=0,len=ret.size();i<len;i++)
+	{
+		line_v li=ret[i].as_line(v);
+		for(int j=i+1;j<len;j++)
+		{
+			line_v lj=ret[j].as_line(v);
+			if(!lj.is_same(li,2.5))
+				continue;
+
+			line_v ij=lj.projection(li);
+
+			if(ij.empty())
+				continue;
+
+			point p0=point::min(v[ret[j][0]],v[ret[i][0]]);
+			point p1=point::max(v[ret[j][1]],v[ret[i][1]]);
+
+			ret[j][0]=v.add(p0,0);
+			ret[j][1]=v.add(p1,0);
+
+			ret[i][0]=0;
+			ret[i][1]=0;
+			break;
+		}
+	}
+
+	ret.erase(std::remove_if(ret.begin(),ret.end(),[&v](const base_path&p){
+		return p[0]==0||p[1]==0;
+	}),ret.end());
+#ifdef __DEBUG__
+	std::sort(ret.begin(),ret.end(),[&v](const base_path&p1,const base_path&p2){
+		double arg=p1.arg(v)-p2.arg(v);
+
+		if(fabs(arg)<0.1)
+		{
+			return v[p1[0]]<v[p2[0]];
+		}
+
+		return arg<0;
+	});
+
+	log_path(ret,v);
+#endif
+
+	std::vector<std::vector<int>> p0(ret.size());
+	std::vector<base_path> ret2;
+	for(int i=0,len=ret.size();i<len;i++)
+	{
+		p0[i].push_back(ret[i][0]);
+		for(int j=i+1;j<len;j++)
+		{
+			if(i==j) continue;
+
+			point cr=ret[i].cross(v,ret[j]);
+			if(cr.empty())
+				continue;
+
+			double arg=fabs(ret[i].as_line(v).arg()-ret[j].as_line(v).arg());
+			while(arg>PI/2) 
+				arg-=PI/2;
+
+			if(arg/PI*180<5)//相交小于5度,不切分已有路径
+				continue;
+
+			int id=v.add(cr,arg,v[ret[i][0]].sid0,v[ret[j][0]].sid0);
+			p0[i].push_back(id);
+			p0[j].push_back(id);
+		}
+
+		p0[i].push_back(ret[i][1]);
+
+		std::sort(p0[i].begin(),p0[i].end(),[&v](int i0,int i1){
+			return v[i0]<v[i1];
+		});
+
+		auto it=std::unique(p0[i].begin(),p0[i].end());
+		p0[i].erase(it,p0[i].end());
+
+		for(int j=1,cnt=p0[i].size();j<cnt;j++)
+			ret2.push_back(base_path(p0[i][j-1],p0[i][j]));
+	}
+
+	ret2.erase(std::remove_if(ret2.begin(),ret2.end(),[&v](base_path&p){
+		point&p0=v[p[0]];
+		point&p1=v[p[1]];
+
+		return p0.dist(p1)<0.1;
+	}),ret2.end());
+
+	std::sort(ret2.begin(),ret2.end());
+	ret2.erase(std::unique(ret2.begin(),ret2.end()),ret2.end());
+
+/*
+	ret.clear();
+	for(int i=0,len=ret2.size();i<len;i++)
+	{
+		std::vector<line_v> tmp;
+		tmp.push_back(ret2[i].as_line(v));
+		for(int j=0;j<len;j++)
+		{
+			if(i==j) continue;
+
+			if(ret[j].level(v)<ret[i].level(v))
+				continue;
+
+			line l1=ret2[j].as_line(v);
+		}
+	}
+
+	std::sort(ret2.begin(),ret2.end(),[&v](base_path&p1,base_path&p2){
+		return p1.arg(v)<p2.arg(v);
+	});
+	*/
+
+#ifdef __DEBUG__
+	std::sort(ret2.begin(),ret2.end(),[&v](const base_path&p1,const base_path&p2){
+		double arg=p1.arg(v)-p2.arg(v);
+
+		if(fabs(arg)<0.1)
+		{
+			return v[p1[0]]<v[p2[0]];
+		}
+
+		return arg<0;
+	});
+
+	log_path(ret2,v);
+#endif
+
+	return std::move(ret2);
+}
+
+
+
+#if 0
+struct ghash
+{
+	static std::tuple<int,int> decode(unsigned h)
+	{
+		const uint64_t S=0x8000000000000000;
+
+		int x=0,y=0;
+		for(int i=0;i<64;i++)
+		{
+			x<<=1;
+			y<<=1;
+
+			if(h&S) 
+				x|=1;
+			h<<=1;
+
+			if(h&S) 
+				y|=1;
+			h<<=1;
+		}
+
+		return std::make_tuple(x-2147483648,y-2147483648);
+	}
+
+	static uint64_t encode(int64_t x, int64_t y)
+	{
+		return encode_(x+2147483648,y+2147483648);
+	}
+
+public: //test
+	static void test_code(int64_t x,int64_t y)
+	{
+		uint64_t h=ghash::encode(x,y);
+		auto t=ghash::decode(h);
+
+		printf("src x=%X,y=%X hash=%X,check x=%X,y=%X\n",x,y,h,std::get<0>(t),std::get<1>(t));
+	}
+
+	static void test()
+	{
+		for(int i=0;i<10;i++)
+		{
+			test_code((4<<i)-1,(4<<i)-1);
+			test_code((4<<i)-1,(4<<i));
+			test_code((4<<i)-1,(4<<i)-1);
+			test_code((4<<i),(4<<i)-1);
+		}
+	}
+private:
+	static unsigned encode_(unsigned short x, unsigned short y)
+	{
+		const unsigned S=0x8000;
+		unsigned r=0;
+		for(int i=0;i<16;i++)
+		{
+			r<<=2;
+			if(x&S)
+			{
+				r|=(y&S)?3:2;
+			}
+			else
+			{
+				if(y&S) r|=1;
+			}
+
+			x<<=1;
+			y<<=1;
+		}
+		
+		return r;
+	}
+};
+#endif
+
+
+struct geolist
+{
+	std::unordered_map<uint64_t,int> geo2path;
+public:
+
+	static uint64_t encode(double x0,double y0)
+	{
+		uint64_t x=(uint32_t)(x0*10);
+		uint64_t y=(uint32_t)(y0*10);
+
+		return (x<<32)|y;
+	}
+
+	int find(double x,double y)const
+	{
+		uint64_t h=encode(x,y);
+
+		auto it=geo2path.find(h);
+
+		if(it==geo2path.end())
+			return -1;
+
+		return it->second;
+	}
+
+	void add(double x,double y,int id)
+	{
+		uint64_t h=encode(x,y);
+		geo2path.insert(std::make_pair(h,id));
+	}
+
+	int size()
+	{
+		return geo2path.size();
+	}
+
+	void print()
+	{
+		for(auto it=geo2path.begin();it!=geo2path.end();++it)
+		{
+			//std::cout<<it->first<<"\n";
+            printf("%ld\n",it->first);
+		}
+	}
+
+	geolist()
+	{
+	}
+
+	~geolist()
+	{
+	}
+};
+
+struct graph
+{
+	vertex_list v;
+	std::vector<std::vector<int>>  d;   //索引为起始顶点,数组内容为目标点
+	std::vector<std::array<int,2>> l;	//bast_path list
+	geolist geo;
+
+	graph()
+	{}
+
+	void init(const vertex_list&v_,const std::vector<base_path>&bp)
+	{
+		for(auto&p:bp)
+		{
+			int from=v.add(v_[p[0]]);
+			int to=v.add(v_[p[1]]);
+
+			l.push_back({from,to});
+
+			int id=l.size()-1;
+
+			line_v lv(v[from],v[to]);
+
+			printf("line:%s\n",lv.to_string().c_str());
+
+			double cos=lv.cos_k();
+			double sin=lv.sin_k();
+
+			double x,y;
+			for(double r=0,len=lv.length();r<len+0.1;r+=0.05)
+			{
+				x=lv[0].x+r*cos;
+				y=lv[0].y+r*sin;
+
+//				printf("x=%lf,y=%lf\n",x,y);
+
+				for(int i=-1;i<=1;i++)
+				for(int j=-1;j<=1;j++)
+				{
+					geo.add(x+i/10.,y+j/10.,id);
+				}
+			}
+
+			add(from,to);
+		}
+	}
+
+	std::vector<line_v>  find_possible_path(const point&from,double dist) const
+	{
+		std::vector<line_v> ret;
+
+		int start_pt_id=v.find(from,dist);
+		if(start_pt_id==-1)
+			return std::move(ret);
+
+		point start_pt=v[start_pt_id];
+
+		for(uint32_t i=0;i<d[start_pt_id].size();i++)
+		{
+			ret.push_back(line_v(start_pt,v[d[start_pt_id][i]]));
+		}
+
+		return std::move(ret);
+	}
+
+	void add(int from,int to)
+	{
+		if((int)d.size()<=from) d.resize(from+1);
+		if((int)d.size()<=to) d.resize(to+1);
+
+		d[from].push_back(to);
+		d[to].push_back(from);
+	}
+
+	bool find(std::vector<int>&ret,int from,std::array<int,2>&to,std::set<int>&ex,int level)
+	{
+		if(level--<0)
+			return false;
+
+		ret.push_back(from);
+
+		for(int p:d[from]) //在当前路径
+		{
+			if(ex.find(p)!=ex.end()) //找过
+				continue;
+
+			if(p==to[0]||p==to[1])//找到
+				return true;
+//			{
+//				ret.push_back(p);
+//				return true;
+//			}
+		}
+
+		ex.insert(from);
+
+		for(int p:d[from])//在下级路径
+		{
+			if(ex.find(p)!=ex.end())//找过
+				continue;
+			if(find(ret,p,to,ex,level)) //找到
+			{
+				return true;
+			}
+		}
+
+		ret.pop_back();
+		return false;
+	}
+
+	bool is_at_path(const point&pt)const
+	{
+		return geo.find(pt.x,pt.y)>=0;
+	}
+
+	std::vector<point> find(const point&from,const point&to)
+	{
+		int f=geo.find(from.x,from.y);
+		int t=geo.find(to.x,to.y);
+
+		if(f<0 || t<0 || f==t)
+			return {};
+#if 0
+		std::vector<point> rc[2];
+		for(int i=0;i<2;i++)
+		{
+			std::vector<int> ret;
+			std::set<int> ex({l[f][1-i]});
+			if(find(ret,l[f][i],l[t],ex,2))
+			{
+				for(auto id:ret)
+					rc[i].push_back(v[id]);
+			}
+		}
+		if(!rc[0].empty() && (rc[1].empty() || rc[0].size() < rc[1].size()))
+			return std::move(rc[0]);
+		else if(!rc[1].empty())
+			return std::move(rc[1]);
+#endif
+		std::vector<int> ret;
+		int size=v.size();
+		std::vector<double> mat(size+1,-1);
+		std::vector<double> trace(size+1,-1);
+		std::vector<bool> val(size+2,false);
+		mat[l[t][0]]=to.dist(v[l[t][0]]);
+		mat[l[t][1]]=to.dist(v[l[t][1]]);
+		int f0=l[f][0],f1=l[f][1];
+		for(int i=0;i<2;i++)
+		{
+			if(mat[f0]!=-1 && mat[f1]!=-1)
+				break;
+			for(int j=0;j<size;j++)
+				if(mat[j]!=-1)val[j]=true;
+			for(int j=0;j<size;j++)
+			{
+				if(val[j]==false)continue;
+				for(unsigned int k=0;k<d[j].size();k++)
+				{
+					double dist=v[j].dist(v[d[j][k]]);
+					if(mat[d[j][k]]==-1 || mat[j]+dist < mat[d[j][k]])
+					{
+						mat[d[j][k]] = mat[j]+dist;
+						trace[d[j][k]] = j;
+					}
+				}
+			}
+		}
+		mat[f0]=mat[f0]+from.dist(v[l[f][0]]);
+		mat[f1]=mat[f1]+from.dist(v[l[f][1]]);
+		std::vector<point> rc;
+		if(mat[f0]!=-1 && (mat[f1]==-1 || mat[f0] < mat[f1]))
+		{
+			int temp=f0;
+			while(temp!=-1)
+			{
+				rc.push_back(v[temp]);
+				temp=trace[temp];
+			}
+			return std::move(rc);
+		}
+		else if(mat[f1]!=-1)
+		{
+			int temp=f1;
+			while(temp!=-1)
+			{
+				rc.push_back(v[temp]);
+				temp=trace[temp];
+			}
+			return std::move(rc);
+		}
+		return {};
+	}
+};
+
+
+std::atomic<int> g_init_flag(0);
+graph g_graph;
+
+}//namespace
+
+void card_path::init(const sit_list&sites)
+{
+    //Ensure only ont thread can init path.
+	int expect=0;
+	if(g_init_flag.compare_exchange_strong(expect,1))
+	{
+		vertex_list v_list;
+		v_list.add(point(0,0),0,-1);
+		//std::vector<base_path> opath=init_path(sites,v_list);
+		handle_path hp;
+		card_list::instance()->accept(hp);
+
+		g_graph.init(v_list,opath);
+
+		++g_init_flag;
+	}
+    //if != 2 then wait here until init over.
+	while(g_init_flag.load()!=2)
+	{
+		std::this_thread::sleep_for (std::chrono::seconds(1));
+	}
+}
+
+
+card_path&card_path::inst()
+{
+	static card_path path;
+	return path;
+}
+
+std::vector<point> card_path::find_path(const point&from,const point&to)const
+{
+	return g_graph.find(from,to);
+}
+
+bool card_path::is_at_path(const point&pt)const
+{
+	return g_graph.is_at_path(pt);
+}
+
+std::vector<line_v>  card_path::find_possible_path(const point&from,double dist) const
+{
+	return std::move(g_graph.find_possible_path(from,dist));
+}
+
+#ifdef __DEBUG__
+
+void test_at_path(card_path&cp,const point&pt)
+{
+	if(cp.is_at_path(pt))
+		printf("test (%.3lf,%.3lf) is-at-path:true\n",pt.x,pt.y);
+	else
+		printf("test (%.3lf,%.3lf) is-at-path:false\n",pt.x,pt.y);
+}
+
+void test_find_path(card_path&cp,const point&p1,const point&p2)
+{
+	printf("\nfind-path:  from=(%.3lf,%.3lf),to=(%.3lf,%.3lf)\n",p1.x,p1.y,p2.x,p2.y);
+	std::vector<point> rc=cp.find_path(p1,p2);
+	for(uint32_t i=0;i<rc.size();i++)
+		printf("x=%.3lf,y=%.3lf\n",rc[i].x,rc[i].y);
+}
+
+void test_find_poss_path(const card_path&cp ,const point&from)
+{
+	printf("\nfind-poss_path:  from=(%.3lf,%.3lf)\n",from.x,from.y);
+	std::vector<line_v> rc=cp.find_possible_path(from,3);
+	for(uint32_t i=0;i<rc.size();i++)
+	{
+		printf("poss path from=(%.3lf,%.3lf) to=(%.3lf,%.3lf)\n", rc[i][0].x,rc[i][0].y, rc[i][1].x,rc[i][1].y);
+	}
+}
+
+int main()
+{
+	std::unique_ptr<sit_list> sites(new sit_list());
+	sites->load("data_reader_antenna.txt","path_tof.txt");
+
+	card_path cp;
+
+	cp.init(*sites);
+#if 0
+	{
+		test_at_path(cp,point(4773.104654,-104.0887));
+
+		test_at_path(cp,point(4727,-74.8));
+		test_at_path(cp,point(4727,-75.0));
+		test_at_path(cp,point(4727,-75.2));
+		test_at_path(cp,point(4727,-75.8));
+		test_at_path(cp,point(4727,-90));
+		test_at_path(cp,point(4727,-89.6));
+		test_at_path(cp,point(4727,-89.8));
+		test_at_path(cp,point(4727,-90));
+		test_at_path(cp,point(4727,-90.2));
+		test_at_path(cp,point(4727,-90.4));
+	}
+#endif
+	//test_at_path(cp,point(4726.90,376.85));
+	test_find_path(cp,point(-227.6,174.9),point(-201.3,175.5));
+	test_find_path(cp,point(-227.625219,174.945670),point(-170.085722,176.101574));
+	test_find_path(cp,point(-393.1944,262.5324),point(-366.0754,274.1253));
+	//test_find_path(cp,point(4637.000000,-75),point(4727,135));
+#if 1
+	{
+		test_find_path(cp,point(4637.000000,-75),point(4727,135));
+		test_find_path(cp,point(4637.000000,-75),point(4727,120));
+		test_find_path(cp,point(4700,-75),point(4727,120));
+		test_find_path(cp,point(4725,-75),point(4727,135));
+		test_find_path(cp,point(4727,-89.7),point(6144.3,-523));
+	}
+#endif
+#if 0
+	{
+		test_find_poss_path(cp, point(4727,-89));
+		test_find_poss_path(cp, point(4727,-90));
+
+		test_find_poss_path(cp, point(4724,-75));
+		test_find_poss_path(cp, point(4725,-75));
+		test_find_poss_path(cp, point(4726,-75));
+		test_find_poss_path(cp, point(4727,-75));
+		test_find_poss_path(cp, point(4728,-75));
+		test_find_poss_path(cp, point(4727,-7));
+
+		test_find_poss_path(cp, point(4726.6,33));
+	}
+#endif
+	return 0;
+}
+#endif
+

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 4081
db/autom4te.cache/output.0


+ 0 - 227
db/autom4te.cache/traces.0

@@ -1,227 +0,0 @@
-m4trace:configure.ac:4: -1- AC_PREREQ([2.69])
-m4trace:configure.ac:5: -1- AC_INIT([libyadb.a], [1.0], [BUG-REPORT-ADDRESS])
-m4trace:configure.ac:5: -1- m4_pattern_forbid([^_?A[CHUM]_])
-m4trace:configure.ac:5: -1- m4_pattern_forbid([_AC_])
-m4trace:configure.ac:5: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^AS_FLAGS$])
-m4trace:configure.ac:5: -1- m4_pattern_forbid([^_?m4_])
-m4trace:configure.ac:5: -1- m4_pattern_forbid([^dnl$])
-m4trace:configure.ac:5: -1- m4_pattern_forbid([^_?AS_])
-m4trace:configure.ac:5: -1- AC_SUBST([SHELL])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([SHELL])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^SHELL$])
-m4trace:configure.ac:5: -1- AC_SUBST([PATH_SEPARATOR])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PATH_SEPARATOR])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PATH_SEPARATOR$])
-m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME],      ['AC_PACKAGE_NAME'])])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_NAME])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_NAME$])
-m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME],   ['AC_PACKAGE_TARNAME'])])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_TARNAME])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
-m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION],   ['AC_PACKAGE_VERSION'])])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_VERSION])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_VERSION$])
-m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING],    ['AC_PACKAGE_STRING'])])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_STRING])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_STRING$])
-m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
-m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL],       ['AC_PACKAGE_URL'])])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_URL])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_URL$])
-m4trace:configure.ac:5: -1- AC_SUBST([exec_prefix], [NONE])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([exec_prefix])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^exec_prefix$])
-m4trace:configure.ac:5: -1- AC_SUBST([prefix], [NONE])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([prefix])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^prefix$])
-m4trace:configure.ac:5: -1- AC_SUBST([program_transform_name], [s,x,x,])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([program_transform_name])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^program_transform_name$])
-m4trace:configure.ac:5: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([bindir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^bindir$])
-m4trace:configure.ac:5: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([sbindir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^sbindir$])
-m4trace:configure.ac:5: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([libexecdir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^libexecdir$])
-m4trace:configure.ac:5: -1- AC_SUBST([datarootdir], ['${prefix}/share'])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([datarootdir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^datarootdir$])
-m4trace:configure.ac:5: -1- AC_SUBST([datadir], ['${datarootdir}'])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([datadir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^datadir$])
-m4trace:configure.ac:5: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([sysconfdir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^sysconfdir$])
-m4trace:configure.ac:5: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([sharedstatedir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^sharedstatedir$])
-m4trace:configure.ac:5: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([localstatedir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^localstatedir$])
-m4trace:configure.ac:5: -1- AC_SUBST([includedir], ['${prefix}/include'])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([includedir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^includedir$])
-m4trace:configure.ac:5: -1- AC_SUBST([oldincludedir], ['/usr/include'])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([oldincludedir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^oldincludedir$])
-m4trace:configure.ac:5: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME],
-				     ['${datarootdir}/doc/${PACKAGE_TARNAME}'],
-				     ['${datarootdir}/doc/${PACKAGE}'])])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([docdir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^docdir$])
-m4trace:configure.ac:5: -1- AC_SUBST([infodir], ['${datarootdir}/info'])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([infodir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^infodir$])
-m4trace:configure.ac:5: -1- AC_SUBST([htmldir], ['${docdir}'])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([htmldir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^htmldir$])
-m4trace:configure.ac:5: -1- AC_SUBST([dvidir], ['${docdir}'])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([dvidir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^dvidir$])
-m4trace:configure.ac:5: -1- AC_SUBST([pdfdir], ['${docdir}'])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([pdfdir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^pdfdir$])
-m4trace:configure.ac:5: -1- AC_SUBST([psdir], ['${docdir}'])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([psdir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^psdir$])
-m4trace:configure.ac:5: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([libdir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^libdir$])
-m4trace:configure.ac:5: -1- AC_SUBST([localedir], ['${datarootdir}/locale'])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([localedir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^localedir$])
-m4trace:configure.ac:5: -1- AC_SUBST([mandir], ['${datarootdir}/man'])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([mandir])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^mandir$])
-m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_NAME$])
-m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
-@%:@undef PACKAGE_NAME])
-m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
-m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
-@%:@undef PACKAGE_TARNAME])
-m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_VERSION$])
-m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
-@%:@undef PACKAGE_VERSION])
-m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_STRING$])
-m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
-@%:@undef PACKAGE_STRING])
-m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
-m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
-@%:@undef PACKAGE_BUGREPORT])
-m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_URL$])
-m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */
-@%:@undef PACKAGE_URL])
-m4trace:configure.ac:5: -1- AC_SUBST([DEFS])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([DEFS])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^DEFS$])
-m4trace:configure.ac:5: -1- AC_SUBST([ECHO_C])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([ECHO_C])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^ECHO_C$])
-m4trace:configure.ac:5: -1- AC_SUBST([ECHO_N])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([ECHO_N])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^ECHO_N$])
-m4trace:configure.ac:5: -1- AC_SUBST([ECHO_T])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([ECHO_T])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^ECHO_T$])
-m4trace:configure.ac:5: -1- AC_SUBST([LIBS])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([LIBS])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^LIBS$])
-m4trace:configure.ac:5: -1- AC_SUBST([build_alias])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([build_alias])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^build_alias$])
-m4trace:configure.ac:5: -1- AC_SUBST([host_alias])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([host_alias])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^host_alias$])
-m4trace:configure.ac:5: -1- AC_SUBST([target_alias])
-m4trace:configure.ac:5: -1- AC_SUBST_TRACE([target_alias])
-m4trace:configure.ac:5: -1- m4_pattern_allow([^target_alias$])
-m4trace:configure.ac:12: -1- AC_PROG_CXX
-m4trace:configure.ac:12: -1- AC_SUBST([CXX])
-m4trace:configure.ac:12: -1- AC_SUBST_TRACE([CXX])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^CXX$])
-m4trace:configure.ac:12: -1- AC_SUBST([CXXFLAGS])
-m4trace:configure.ac:12: -1- AC_SUBST_TRACE([CXXFLAGS])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^CXXFLAGS$])
-m4trace:configure.ac:12: -1- AC_SUBST([LDFLAGS])
-m4trace:configure.ac:12: -1- AC_SUBST_TRACE([LDFLAGS])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^LDFLAGS$])
-m4trace:configure.ac:12: -1- AC_SUBST([LIBS])
-m4trace:configure.ac:12: -1- AC_SUBST_TRACE([LIBS])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^LIBS$])
-m4trace:configure.ac:12: -1- AC_SUBST([CPPFLAGS])
-m4trace:configure.ac:12: -1- AC_SUBST_TRACE([CPPFLAGS])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.ac:12: -1- AC_SUBST([CXX])
-m4trace:configure.ac:12: -1- AC_SUBST_TRACE([CXX])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^CXX$])
-m4trace:configure.ac:12: -1- AC_SUBST([ac_ct_CXX])
-m4trace:configure.ac:12: -1- AC_SUBST_TRACE([ac_ct_CXX])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^ac_ct_CXX$])
-m4trace:configure.ac:12: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
-m4trace:configure.ac:12: -1- AC_SUBST_TRACE([EXEEXT])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^EXEEXT$])
-m4trace:configure.ac:12: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
-m4trace:configure.ac:12: -1- AC_SUBST_TRACE([OBJEXT])
-m4trace:configure.ac:12: -1- m4_pattern_allow([^OBJEXT$])
-m4trace:configure.ac:13: -1- AC_PROG_CC
-m4trace:configure.ac:13: -1- AC_SUBST([CC])
-m4trace:configure.ac:13: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:13: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:13: -1- AC_SUBST([CFLAGS])
-m4trace:configure.ac:13: -1- AC_SUBST_TRACE([CFLAGS])
-m4trace:configure.ac:13: -1- m4_pattern_allow([^CFLAGS$])
-m4trace:configure.ac:13: -1- AC_SUBST([LDFLAGS])
-m4trace:configure.ac:13: -1- AC_SUBST_TRACE([LDFLAGS])
-m4trace:configure.ac:13: -1- m4_pattern_allow([^LDFLAGS$])
-m4trace:configure.ac:13: -1- AC_SUBST([LIBS])
-m4trace:configure.ac:13: -1- AC_SUBST_TRACE([LIBS])
-m4trace:configure.ac:13: -1- m4_pattern_allow([^LIBS$])
-m4trace:configure.ac:13: -1- AC_SUBST([CPPFLAGS])
-m4trace:configure.ac:13: -1- AC_SUBST_TRACE([CPPFLAGS])
-m4trace:configure.ac:13: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.ac:13: -1- AC_SUBST([CC])
-m4trace:configure.ac:13: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:13: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:13: -1- AC_SUBST([CC])
-m4trace:configure.ac:13: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:13: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:13: -1- AC_SUBST([CC])
-m4trace:configure.ac:13: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:13: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:13: -1- AC_SUBST([CC])
-m4trace:configure.ac:13: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:13: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:13: -1- AC_SUBST([ac_ct_CC])
-m4trace:configure.ac:13: -1- AC_SUBST_TRACE([ac_ct_CC])
-m4trace:configure.ac:13: -1- m4_pattern_allow([^ac_ct_CC$])
-m4trace:configure.ac:15: -1- AC_SUBST([RANLIB])
-m4trace:configure.ac:15: -1- AC_SUBST_TRACE([RANLIB])
-m4trace:configure.ac:15: -1- m4_pattern_allow([^RANLIB$])
-m4trace:configure.ac:17: -1- AC_CONFIG_FILES([Makefile])
-m4trace:configure.ac:18: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^LIB@&t@OBJS$])
-m4trace:configure.ac:18: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([LTLIBOBJS])
-m4trace:configure.ac:18: -1- m4_pattern_allow([^LTLIBOBJS$])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([top_builddir])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([top_build_prefix])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([srcdir])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([abs_srcdir])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([top_srcdir])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([abs_top_srcdir])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([builddir])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([abs_builddir])
-m4trace:configure.ac:18: -1- AC_SUBST_TRACE([abs_top_builddir])

+ 13 - 13
db/autom4te.cache/output.2

@@ -1,6 +1,6 @@
 @%:@! /bin/sh
 @%:@ Guess values for system-dependent variables and create Makefiles.
-@%:@ Generated by GNU Autoconf 2.69 for libyadb.a 1.0.
+@%:@ Generated by GNU Autoconf 2.69 for libwebsocket.a 1.0.
 @%:@
 @%:@ Report bugs to <BUG-REPORT-ADDRESS>.
 @%:@ 
@@ -577,14 +577,14 @@ MFLAGS=
 MAKEFLAGS=
 
 # Identity of this package.
-PACKAGE_NAME='libyadb.a'
-PACKAGE_TARNAME='libyadb-a'
+PACKAGE_NAME='libwebsocket.a'
+PACKAGE_TARNAME='libwebsocket-a'
 PACKAGE_VERSION='1.0'
-PACKAGE_STRING='libyadb.a 1.0'
+PACKAGE_STRING='libwebsocket.a 1.0'
 PACKAGE_BUGREPORT='BUG-REPORT-ADDRESS'
 PACKAGE_URL=''
 
-ac_unique_file="db_tool.cpp"
+ac_unique_file="wsClient.cpp"
 ac_subst_vars='am__EXEEXT_FALSE
 am__EXEEXT_TRUE
 LTLIBOBJS
@@ -1230,7 +1230,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures libyadb.a 1.0 to adapt to many kinds of systems.
+\`configure' configures libwebsocket.a 1.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1278,7 +1278,7 @@ Fine tuning of the installation directories:
   --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/libyadb-a@:>@
+  --docdir=DIR            documentation root @<:@DATAROOTDIR/doc/libwebsocket-a@:>@
   --htmldir=DIR           html documentation [DOCDIR]
   --dvidir=DIR            dvi documentation [DOCDIR]
   --pdfdir=DIR            pdf documentation [DOCDIR]
@@ -1296,7 +1296,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of libyadb.a 1.0:";;
+     short | recursive ) echo "Configuration of libwebsocket.a 1.0:";;
    esac
   cat <<\_ACEOF
 
@@ -1386,7 +1386,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-libyadb.a configure 1.0
+libwebsocket.a configure 1.0
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1479,7 +1479,7 @@ 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 libyadb.a $as_me 1.0, which was
+It was created by libwebsocket.a $as_me 1.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2304,7 +2304,7 @@ fi
 
 
 # Define the identity of the package.
- PACKAGE='libyadb-a'
+ PACKAGE='libwebsocket-a'
  VERSION='1.0'
 
 
@@ -4385,7 +4385,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by libyadb.a $as_me 1.0, which was
+This file was extended by libwebsocket.a $as_me 1.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -4442,7 +4442,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-libyadb.a config.status 1.0
+libwebsocket.a config.status 1.0
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 

+ 13 - 13
db/autom4te.cache/output.1

@@ -1,6 +1,6 @@
 @%:@! /bin/sh
 @%:@ Guess values for system-dependent variables and create Makefiles.
-@%:@ Generated by GNU Autoconf 2.69 for libyadb.a 1.0.
+@%:@ Generated by GNU Autoconf 2.69 for libwebsocket.a 1.0.
 @%:@
 @%:@ Report bugs to <BUG-REPORT-ADDRESS>.
 @%:@ 
@@ -577,14 +577,14 @@ MFLAGS=
 MAKEFLAGS=
 
 # Identity of this package.
-PACKAGE_NAME='libyadb.a'
-PACKAGE_TARNAME='libyadb-a'
+PACKAGE_NAME='libwebsocket.a'
+PACKAGE_TARNAME='libwebsocket-a'
 PACKAGE_VERSION='1.0'
-PACKAGE_STRING='libyadb.a 1.0'
+PACKAGE_STRING='libwebsocket.a 1.0'
 PACKAGE_BUGREPORT='BUG-REPORT-ADDRESS'
 PACKAGE_URL=''
 
-ac_unique_file="db_tool.cpp"
+ac_unique_file="wsClient.cpp"
 ac_subst_vars='am__EXEEXT_FALSE
 am__EXEEXT_TRUE
 LTLIBOBJS
@@ -1230,7 +1230,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures libyadb.a 1.0 to adapt to many kinds of systems.
+\`configure' configures libwebsocket.a 1.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1278,7 +1278,7 @@ Fine tuning of the installation directories:
   --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/libyadb-a@:>@
+  --docdir=DIR            documentation root @<:@DATAROOTDIR/doc/libwebsocket-a@:>@
   --htmldir=DIR           html documentation [DOCDIR]
   --dvidir=DIR            dvi documentation [DOCDIR]
   --pdfdir=DIR            pdf documentation [DOCDIR]
@@ -1296,7 +1296,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of libyadb.a 1.0:";;
+     short | recursive ) echo "Configuration of libwebsocket.a 1.0:";;
    esac
   cat <<\_ACEOF
 
@@ -1386,7 +1386,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-libyadb.a configure 1.0
+libwebsocket.a configure 1.0
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1479,7 +1479,7 @@ 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 libyadb.a $as_me 1.0, which was
+It was created by libwebsocket.a $as_me 1.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2304,7 +2304,7 @@ fi
 
 
 # Define the identity of the package.
- PACKAGE='libyadb-a'
+ PACKAGE='libwebsocket-a'
  VERSION='1.0'
 
 
@@ -4385,7 +4385,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by libyadb.a $as_me 1.0, which was
+This file was extended by libwebsocket.a $as_me 1.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -4442,7 +4442,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-libyadb.a config.status 1.0
+libwebsocket.a config.status 1.0
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 

+ 8 - 88
db/autom4te.cache/requests

@@ -9,86 +9,6 @@
                       [
                         '/usr/share/autoconf'
                       ],
-                      [
-                        '/usr/share/autoconf/autoconf/autoconf.m4f',
-                        'configure.ac'
-                      ],
-                      {
-                        '_LT_AC_TAGCONFIG' => 1,
-                        'AM_PROG_F77_C_O' => 1,
-                        'AC_INIT' => 1,
-                        'm4_pattern_forbid' => 1,
-                        '_AM_COND_IF' => 1,
-                        'AC_CANONICAL_TARGET' => 1,
-                        'AC_SUBST' => 1,
-                        'AC_CONFIG_LIBOBJ_DIR' => 1,
-                        'AC_FC_SRCEXT' => 1,
-                        'AC_CANONICAL_HOST' => 1,
-                        'AC_PROG_LIBTOOL' => 1,
-                        'AM_PROG_MKDIR_P' => 1,
-                        'AM_INIT_AUTOMAKE' => 1,
-                        'AM_PATH_GUILE' => 1,
-                        'AC_CONFIG_SUBDIRS' => 1,
-                        'AM_AUTOMAKE_VERSION' => 1,
-                        'AC_CHECK_HEADERS' => 1,
-                        'LT_CONFIG_LTDL_DIR' => 1,
-                        'AC_REQUIRE_AUX_FILE' => 1,
-                        'AC_CONFIG_LINKS' => 1,
-                        'm4_sinclude' => 1,
-                        'LT_SUPPORTED_TAG' => 1,
-                        'AC_PROG_CXX' => 1,
-                        'AM_MAINTAINER_MODE' => 1,
-                        'AM_NLS' => 1,
-                        'AC_TYPE_UINT32_T' => 1,
-                        'AC_FC_PP_DEFINE' => 1,
-                        'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
-                        'AM_MAKEFILE_INCLUDE' => 1,
-                        '_m4_warn' => 1,
-                        'AC_PREREQ' => 1,
-                        'AM_PROG_CXX_C_O' => 1,
-                        '_AM_COND_ENDIF' => 1,
-                        '_AM_MAKEFILE_INCLUDE' => 1,
-                        'AM_ENABLE_MULTILIB' => 1,
-                        'AM_PROG_MOC' => 1,
-                        'AM_SILENT_RULES' => 1,
-                        'AC_CONFIG_FILES' => 1,
-                        'include' => 1,
-                        'LT_INIT' => 1,
-                        'AC_TYPE_INT64_T' => 1,
-                        'AM_PROG_AR' => 1,
-                        'AM_GNU_GETTEXT' => 1,
-                        'AC_LIBSOURCE' => 1,
-                        'AM_PROG_FC_C_O' => 1,
-                        'AC_CANONICAL_BUILD' => 1,
-                        'AC_FC_FREEFORM' => 1,
-                        'AH_OUTPUT' => 1,
-                        'AC_FC_PP_SRCEXT' => 1,
-                        '_AM_SUBST_NOTMAKE' => 1,
-                        'AC_CONFIG_AUX_DIR' => 1,
-                        'sinclude' => 1,
-                        'AM_PROG_CC_C_O' => 1,
-                        'm4_pattern_allow' => 1,
-                        'AM_XGETTEXT_OPTION' => 1,
-                        'AC_CANONICAL_SYSTEM' => 1,
-                        'AM_CONDITIONAL' => 1,
-                        'AC_CONFIG_HEADERS' => 1,
-                        'AC_TYPE_UINT64_T' => 1,
-                        'AC_DEFINE_TRACE_LITERAL' => 1,
-                        'AM_POT_TOOLS' => 1,
-                        'm4_include' => 1,
-                        'AC_PROG_CC' => 1,
-                        '_AM_COND_ELSE' => 1,
-                        'AC_CHECK_HEADER_STDBOOL' => 1,
-                        'AC_CHECK_FUNCS' => 1,
-                        'AC_SUBST_TRACE' => 1
-                      }
-                    ], 'Autom4te::Request' ),
-             bless( [
-                      '1',
-                      1,
-                      [
-                        '/usr/share/autoconf'
-                      ],
                       [
                         '/usr/share/autoconf/autoconf/autoconf.m4f',
                         '/usr/share/aclocal-1.12/amversion.m4',
@@ -150,7 +70,7 @@
                       }
                     ], 'Autom4te::Request' ),
              bless( [
-                      '2',
+                      '1',
                       1,
                       [
                         '/usr/share/autoconf'
@@ -161,8 +81,8 @@
                         'configure.ac'
                       ],
                       {
-                        'AM_PROG_F77_C_O' => 1,
                         '_LT_AC_TAGCONFIG' => 1,
+                        'AM_PROG_F77_C_O' => 1,
                         'm4_pattern_forbid' => 1,
                         'AC_INIT' => 1,
                         '_AM_COND_IF' => 1,
@@ -178,8 +98,8 @@
                         'AC_CONFIG_SUBDIRS' => 1,
                         'AM_AUTOMAKE_VERSION' => 1,
                         'LT_CONFIG_LTDL_DIR' => 1,
-                        'AC_CONFIG_LINKS' => 1,
                         'AC_REQUIRE_AUX_FILE' => 1,
+                        'AC_CONFIG_LINKS' => 1,
                         'm4_sinclude' => 1,
                         'LT_SUPPORTED_TAG' => 1,
                         'AM_MAINTAINER_MODE' => 1,
@@ -189,27 +109,27 @@
                         'AM_MAKEFILE_INCLUDE' => 1,
                         '_m4_warn' => 1,
                         'AM_PROG_CXX_C_O' => 1,
-                        '_AM_MAKEFILE_INCLUDE' => 1,
                         '_AM_COND_ENDIF' => 1,
+                        '_AM_MAKEFILE_INCLUDE' => 1,
                         'AM_ENABLE_MULTILIB' => 1,
-                        'AM_PROG_MOC' => 1,
                         'AM_SILENT_RULES' => 1,
+                        'AM_PROG_MOC' => 1,
                         'AC_CONFIG_FILES' => 1,
                         'LT_INIT' => 1,
                         'include' => 1,
-                        'AM_GNU_GETTEXT' => 1,
                         'AM_PROG_AR' => 1,
+                        'AM_GNU_GETTEXT' => 1,
                         'AC_LIBSOURCE' => 1,
                         'AM_PROG_FC_C_O' => 1,
                         'AC_CANONICAL_BUILD' => 1,
                         'AC_FC_FREEFORM' => 1,
                         'AH_OUTPUT' => 1,
                         'AC_FC_PP_SRCEXT' => 1,
-                        'AC_CONFIG_AUX_DIR' => 1,
                         '_AM_SUBST_NOTMAKE' => 1,
-                        'm4_pattern_allow' => 1,
+                        'AC_CONFIG_AUX_DIR' => 1,
                         'sinclude' => 1,
                         'AM_PROG_CC_C_O' => 1,
+                        'm4_pattern_allow' => 1,
                         'AM_XGETTEXT_OPTION' => 1,
                         'AC_CANONICAL_SYSTEM' => 1,
                         'AM_CONDITIONAL' => 1,

db/autom4te.cache/traces.1 → websocket/autom4te.cache/traces.0


+ 1 - 1
db/autom4te.cache/traces.2

@@ -1,4 +1,4 @@
-m4trace:configure.ac:5: -1- AC_INIT([libyadb.a], [1.0], [BUG-REPORT-ADDRESS])
+m4trace:configure.ac:5: -1- AC_INIT([libwebsocket.a], [1.0], [BUG-REPORT-ADDRESS])
 m4trace:configure.ac:5: -1- m4_pattern_forbid([^_?A[CHUM]_])
 m4trace:configure.ac:5: -1- m4_pattern_forbid([_AC_])
 m4trace:configure.ac:5: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])

+ 193 - 0
websocket_bak/constdef.h

@@ -0,0 +1,193 @@
+#ifndef _SERVER_CONST_DEF_H_
+#define _SERVER_CONST_DEF_H_
+
+#define MAXCRITICALSECTIONSPINCOUNT 4000
+#define INTERFACE_VERSION "1.0.0.2"
+#define INTERFACE_VERSION_1_1 "1.0.0.1"
+#define INTERFACE_VERSION_1_3 "1.0.0.3"
+#define INTERFACE_VERSION_1_4 "1.0.0.4"
+
+#define TEST_WS_URL  "ws://182.92.224.191:8086"
+#define JSON_ROOT_KEY_CMD "cmd"
+#define JSON_ROOT_KEY_VERSION "version"
+#define JSON_ROOT_KEY_DATA "data"
+#define JSON_ROOT_KEY_TOTAL "total"
+#define JSON_ROOT_KEY_STATISTIC_VEHICLE_DATA "v"
+#define JSON_ROOT_KEY_STATISTIC_STAFF_DATA "s"
+#define JSON_ROOT_KEY_STATISTIC_STAT "stat"
+#define JSON_ROOT_KEY_STATISTIC_DETAIL "detail"
+#define JSON_ROOT_KEY_STATISTIC_GLOBAL "glbl"
+#define JSON_ROOT_KEY_STATISTIC_DEPT "dept"
+#define JSON_ROOT_KEY_STATISTIC_SUM "sum"
+#define JSON_ROOT_KEY_STATISTIC_AREA "area"
+#define JSON_ROOT_KEY_STATISTIC_LEVEL "occupation_level"
+
+// 采集端接收接口
+#define JSON_CMD_VALUE_CLEAR_CARD "clear_card"
+#define JSON_CMD_VALUE_DEAL_HELP "helpme_done"   //deal_help
+#define JSON_CMD_VALUE_DEAL_HELP_RESPONSE "helpme_done_rsp"   //deal_help
+#define JSON_CMD_VALUE_REQUEST_ALL_POSTION "request_all_postion"
+#define JSON_CMD_VALUE_REQUEST_ALL_DATA "req_all_data"
+#define JSON_CMD_VALUE_RESPONSE_ALL_DATA "resp_all_data"
+#define JSON_CMD_VALUE_CALL_CARD_START "call_card_start"
+#define JSON_CMD_VALUE_CALL_CARD_CANCEL "call_card_cancel"
+#define  JSON_CMD_VALUE_LEADER_ARRANGE "leader_arrange"
+//呼叫命令
+#define JSON_CMD_VALUE_CALL_CARD_REQUEST "call_card_req"
+#define JSON_CMD_VALUE_CALL_CARD_RESPONSE "call_card_resp"
+#define JSON_CMD_VALUE_CALL_CARD_CANCEL_REQUEST "call_card_cancel_req"
+#define JSON_CMD_VALUE_CALL_CARD_CANCEL_RESPONSE "call_card_cancel_resp"
+#define JSON_CMD_VALUE_CALL_CARD_LIST "callcardlist"
+
+#define JSON_CMD_VALUE_META_DATA_CHANGED "meta_data_changed"
+#define JSON_CMD_VALUE_LIGHTS_CTRL_REQUEST "light_control"
+#define JSON_CMD_VALUE_LIGHTS_CTRL_RESPONSE "lights_ctrl_res"
+#define JSON_CMD_VALUE_HAND_UP_RESPONSE "deal_hand_up_res"
+
+#define JSON_KEY_ID "id"
+#define JSON_KEY_OP_TYPE "op_type"
+#define JSON_KEY_OP_TYPE_INSERT "INSERT"
+#define JSON_KEY_OP_TYPE_UPDATE "UPDATE"
+#define JSON_KEY_OP_TYPE_DELETE "DELETE"
+
+#define JSON_KEY_NAME "name"
+#define JSON_KEY_NAME_MAP "map"
+#define JSON_KEY_NAME_AREA "area"
+#define JSON_KEY_NAME_PATH "path"
+#define JSON_KEY_NAME_READER "reader"
+#define JSON_KEY_NAME_CARD "card"
+#define JSON_KEY_NAME_STAFF "staff"
+#define JSON_KEY_NAME_STAFF_EXTEND "staff_extend"
+#define JSON_KEY_NAME_VEHICLE "vehicle"
+
+#define JSON_KEY_NAME_VEHICLE_EXTEND "vehicle_extend"
+#define JSON_KEY_NAME_SECTION "section"
+#define JSON_KEY_NAME_LIGHT   "light"
+#define JSON_KEY_NAME_CHAMBER "chamber"
+#define JSON_KEY_NAME_SHIFT "shift"
+#define JSON_KEY_NAME_PATROL_TASK "patrol_task"
+#define JSON_KEY_NAME_RULES "rules"
+#define JSON_KEY_NAME_SETTING "setting"
+#define JSON_KEY_NAME_DRIVINGFACE "drivingface_vehicle"
+#define JSON_KEY_NAME_DRIVINGFACE_WARNING_POINT "dat_drivingface_warning_point"
+#define JSON_KEY_NAME_HAND_UP "dat_handup_vehicle"
+
+#define JSON_KEY_CALL_CARD_CALL_TYPE "call_type_id"
+#define JSON_KEY_CALL_CARD_CALL_TIME_OUT "call_time_out"
+#define JSON_KEY_CALL_CARD_CALL_TIME "call_time"
+#define JSON_KEY_CALL_CARD_CALL_LEVEL "call_level_id"
+#define JSON_KEY_CALL_CARD_USER_NAME "user_name"
+#define JSON_KEY_CALL_CARD_STATIONS "stations"
+#define JSON_KEY_CALL_CARD_STATION_ID "stationid"
+#define JSON_KEY_CALL_CARD_CARDS "cards"
+#define JSON_KEY_CALL_CARD_CARD_ID "cardid"
+#define JSON_KEY_CALL_CARD_CARD_TYPE_ID "cardtype"
+
+#define JSON_KEY_CALL_LIGHT_TASK_ID "task_id"
+#define JSON_KEY_CALL_LIGHT_OBJ_TYPE "obj_type"
+#define JSON_KEY_CALL_LIGHT_CTRL_TYPE "ctrl_type"
+#define JSON_KEY_CALL_LIGHT_LIGHT_STATE "light_state"
+#define JSON_KEY_CALL_LIGHT_USER_ID "user_id"
+#define JSON_KEY_CALL_LIGHT_LIGHTS "lights"
+#define JSON_KEY_CALL_LIGHT_ID "id"
+
+#define JSON_KEY_EDIT_CARD_ID "cardid"
+#define JSON_KEY_EDIT_EDIT_TYPE_ID "edittype"
+
+// 采集端调用接口
+#define JSON_CMD_VALUE_LOGIN "login"
+#define JSON_CMD_VALUE_LOGOUT "logout"
+#define JSON_KEY_USERNAME "user_name"
+#define JSON_KEY_PASSWORD "user_pass"
+#define JSON_VALUE_USERNAME "COLLECTOR"
+#define JSON_VALUE_PASSWORD "666666"  //"666666"
+#define JSON_KEY_CARD_ID "card_id" //"卡号"
+#define JSON_KEY_CARD_TYPE_ID "card_type_id"
+#define JSON_KEY_REC_TIME "rec_time" // "接收时间"
+#define JSON_KEY_DOWN_TIME "down_time" // "入井时间"
+#define JSON_KEY_WORK_TIME "work_time" // "工作时间"
+#define JSON_KEY_ENTER_AREA_TIME "enter_area_time" // "进入区域时间"
+#define JSON_KEY_CORDINATE_X "x"
+#define JSON_KEY_CORDINATE_Y "y"
+#define JSON_KEY_CORDINATE_Z "z"
+#define JSON_KEY_STATE "state" // "状态"
+#define JSON_KEY_STATE_MOVING "state_moving" // 运动状态
+#define JSON_KEY_STATE_BIZ "state_biz" // 业务状态
+#define JSON_KEY_MAP_ID "map_id" // "地图编号"
+#define JSON_KEY_DEPT_ID "dept_id"
+#define JSON_KEY_SPEED "speed"	//速度
+#define JSON_KEY_LANDMARK_ID "landmark_id"
+#define JSON_KEY_DIRECTORY_ID "landmark_direction_id"
+#define JSON_KEY_LANDMARK_DIS "landmark_distance"
+
+// id, name, type, map_id
+#define JSON_KEY_AREA_ID "area_id" // "区域编号"
+#define JSON_KEY_AREA_IS_SPECIAL "is_special_area" // "区域名称"
+// down_mine,up_mine
+#define JSON_CMD_VALUE_DOWN_MINE "down_mine"
+#define JSON_CMD_VALUE_UP_MINE "up_mine"
+#define JSON_CMD_VALUE_SPECIAL_AREA_UP_MINE "special_area_up_mine"
+#define JSON_CMD_VALUE_DEV_STATE "device_state"
+#define JSON_CMD_VALUE_EVENT "event"
+#define JSON_CMD_VALUE_CALL "CALL"
+#define JSON_CMD_VALUE_PUSH "PUSH"
+#define JSON_CMD_VALUE_USER "USER"
+#define JSON_CMD_DRIVING_FACE_STATE "tunneller_stat"
+// pos_map
+#define JSON_CMD_VALUE_POS_MAP "pos_map"
+
+// 告警事件
+#define JSON_KEY_EVENT_EVENT_ID "event_id"
+#define JSON_KEY_EVENT_STATUS "status"
+#define JSON_KEY_EVENT_TYPE_ID "type_id"
+#define JSON_KEY_EVENT_OBJ_TYPE_ID "obj_type_id"
+#define JSON_KEY_EVENT_OBJ_ID "obj_id"
+#define JSON_KEY_EVENT_MAP_ID "map_id"
+#define JSON_KEY_EVENT_AREA_ID "area_id"
+#define JSON_KEY_EVENT_X "x"
+#define JSON_KEY_EVENT_Y "y"
+#define JSON_KEY_EVENT_LIMIT_VALUE "limit_value"
+#define JSON_KEY_EVENT_CUR_VALUE "cur_value"
+#define JSON_KEY_EVENT_CUR_TIME "cur_time"
+#define JSON_KEY_EVENT_LANDMARK_ID "lmid"
+#define JSON_KEY_EVENT_LANDMARK_DIRECTION "lmdirect"
+#define JSON_KEY_EVENT_LANDMARK_DISTANCE "lmdistance"
+#define JSON_KEY_EVENT_READER_POS_CHANGE    "reader_pos_change"
+
+// alarm
+#define JSON_KEY_ALARM_OVER_COUNT_PERSON "over_count_person"
+#define JSON_KEY_ALARM_OVER_COUNT_VEHICLE "over_count_vehicle"
+#define JSON_KEY_ALARM_OVER_TIME_PERSON "over_time_person"
+#define JSON_KEY_ALARM_OVER_TIME_VEHICLE "over_time_vehicle"
+#define JSON_KEY_ALARM_OVER_SPEED_VEHICLE "over_speed_vehicle"
+
+#define JSON_KEY_ALARM_START_TIME "alarm_start_time"
+
+#define JSON_KEY_ALARM_STAFFER_ID "staffer_id"
+#define JSON_KEY_ALARM_VEHICLE_ID "vehicle_id"
+
+#define JSON_KEY_ALARM_SECTION "section_info"
+#define JSON_KEY_ALARM_SECTION_ID "section_id"
+#define JSON_KEY_ALARM_SECTION_VEHICLE_COUNTS "vehicle_counts"
+#define JSON_KEY_ALARM_SECTION_STAFFER_COUNTS "staffer_counts"
+#define JSON_KEY_ALARM_SECTION_STATE "state"
+
+#define JSON_KEY_ALARM_LIGHT "light_info"
+#define JSON_KEY_ALARM_LIGHT_ID "light_id"
+#define JSON_KEY_ALARM_LIGHT_GROUP_ID "light_group_id"
+#define JSON_KEY_ALARM_LIGHT_GROUP_NAME	"light_group_name"
+
+#define JSON_KEY_ALARM_TRAFFIC_RED_LIGHT "traffic_red_light"
+// 掘进面
+#define JSON_KEY_DRIVINGFACE_DIS "driving_face_moving_dis"
+#define JSON_KEY_DRIVINGFACE_WARNING_POINT_ID "driving_face_warning_point_id"
+#define JSON_KEY_DRIVINGFACE_WARNING_POINT_DIS "driving_face_warning_point_dis"
+
+#define JSON_KEY_DRIVINGFACE_CURSHIFT_LENGTH "drivingface_curshift_length"
+
+//人上车状态
+#define JSON_KEY_PERSON_ON_CAR "person_on_car"
+#define JSON_CMD_REQ_ALL_PERSON_ON_CAR "req_all_person_on_car"
+#define JSON_CMD_RESP_ALL_PERSON_ON_CAR "resp_all_person_on_car"
+
+#endif // !_SERVER_CONST_DEF_H_

+ 196 - 0
websocket_bak/jsonBuilder.cpp

@@ -0,0 +1,196 @@
+#include "jsonBuilder.h"
+
+
+#include <rapidjson/writer.h>
+#include <rapidjson/stringbuffer.h>
+#include <rapidjson/prettywriter.h>
+#include "constdef.h"
+
+namespace YA
+{
+
+	jsonBuilder::jsonBuilder()
+	{
+
+
+	}
+
+	jsonBuilder::~jsonBuilder()
+	{
+
+	}
+
+	void jsonBuilder::__AddVersion( rapidjson::Value& root, rapidjson::Document::AllocatorType& allocator )
+	{
+		rapidjson::Value key( rapidjson::kStringType );
+		rapidjson::Value value( rapidjson::kStringType );
+
+		key.SetString( JSON_ROOT_KEY_VERSION, allocator );
+		value.SetString( JASON_CURRENT_VERSION, allocator );
+		root.AddMember( key, value, allocator );
+	}
+
+	std::string jsonBuilder::BuildLogin( const _JS_LOGIN_& Login )
+	{
+		rapidjson::StringBuffer sb;
+		rapidjson::Writer<rapidjson::StringBuffer> writer( sb );
+
+		rapidjson::Document doc;
+
+		rapidjson::Document::AllocatorType& allocator = doc.GetAllocator();
+		rapidjson::Value root( rapidjson::kObjectType );
+		rapidjson::Value child( rapidjson::kObjectType );
+		rapidjson::Value key( rapidjson::kStringType );
+		rapidjson::Value value( rapidjson::kStringType );
+
+		key.SetString( JSON_ROOT_KEY_CMD, allocator );
+		value.SetString( JASON_CMD_LOGIN, allocator );
+		root.AddMember( key, value, allocator );
+
+		key.SetString( JSON_KEY_USERNAME, allocator );
+		value.SetString( Login.user_name.c_str(), allocator );
+		child.AddMember( key, value, allocator );
+
+		key.SetString( JSON_KEY_PASSWORD, allocator );
+		value.SetString( Login.user_password.c_str(), allocator );
+		child.AddMember( key, value, allocator );
+
+		key.SetString( JSON_ROOT_KEY_DATA, allocator );
+		root.AddMember( key, child, allocator );
+
+		root.Accept( writer );
+
+		return sb.GetString();
+	}
+
+	bool jsonBuilder::ParseCall_Card_Req( const std::string& JasonText, _JS_CALL_CARD_REQ_& CallCardReq, std::string& Error )
+	{
+		rapidjson::Document doc;
+		if ( doc.Parse( JasonText.c_str() ).HasParseError() )
+		{
+			Error = "Failed to parse jason text!";
+			return false;
+		}
+
+		rapidjson::Value::MemberIterator itValue;
+		itValue = doc.FindMember( "data" );
+		if ( itValue == doc.MemberEnd() )
+		{
+			Error = "Failed to find member: data!";
+			return false;
+		}
+
+		rapidjson::Value Data;
+		rapidjson::Document::AllocatorType allocator;
+		Data.CopyFrom( itValue->value, allocator );
+
+		if ( !Data.HasMember( JSON_KEY_CALL_CARD_CALL_TYPE ) )
+		{
+			Error = "Failed to find value: ";
+			Error += JSON_KEY_CALL_CARD_CALL_TYPE;
+			return false;
+		}
+		CallCardReq.call_type_id = Data[JSON_KEY_CALL_CARD_CALL_TYPE].GetInt();
+
+		if ( !Data.HasMember( JSON_KEY_CALL_CARD_CALL_TIME_OUT ) )
+		{
+			Error = "Failed to find value: ";
+			Error += JSON_KEY_CALL_CARD_CALL_TIME_OUT;
+			return false;
+		}
+		CallCardReq.call_time_out = Data[JSON_KEY_CALL_CARD_CALL_TIME_OUT].GetInt();
+
+		if ( !Data.HasMember( JSON_KEY_CALL_CARD_CALL_LEVEL ) )
+		{
+			Error = "Failed to find value: ";
+			Error += JSON_KEY_CALL_CARD_CALL_LEVEL;
+			return false;
+		}
+		CallCardReq.call_time_interval = Data[JSON_KEY_CALL_CARD_CALL_LEVEL].GetInt();
+
+		if ( !Data.HasMember( JSON_KEY_CALL_CARD_USER_NAME ) )
+		{
+			Error = "Failed to find value: ";
+			Error += JSON_KEY_CALL_CARD_USER_NAME;
+			return false;
+		}
+		CallCardReq.user_name = Data[JSON_KEY_CALL_CARD_USER_NAME].GetString();
+
+		//data::stations
+		if ( !Data.HasMember( JSON_KEY_CALL_CARD_STATIONS ) )
+		{
+			Error = "Failed to find value: ";
+			Error += JSON_KEY_CALL_CARD_STATIONS;
+			return false;
+		}
+		rapidjson::Value & stations = Data[JSON_KEY_CALL_CARD_STATIONS];
+		if ( !stations.IsArray() )
+		{
+			Error = "data::stations is not a valid array!";
+			return false;
+		}
+		for ( int i = 0; i <(int) stations.Size(); ++i )
+		{
+			rapidjson::Value & v = stations[i];
+			if ( !v.IsObject() )
+			{
+				char szError[1024] = { 0 };
+				sprintf( szError, "data::stations[%d] is not a object!", i );
+				Error = szError;
+				return false;
+			}
+
+			_JS_STATION_ Station;
+			if ( !v.HasMember( JSON_KEY_CALL_CARD_STATION_ID ) && v[JSON_KEY_CALL_CARD_STATION_ID].IsInt() )
+			{
+				Error = "Error, failed to found value: ";
+				Error += JSON_KEY_CALL_CARD_STATION_ID;
+				return false;
+			}
+			Station.stationid = v[JSON_KEY_CALL_CARD_STATION_ID].GetInt();
+
+			CallCardReq.stations.push_back( Station );
+		}
+
+		//data::cards
+		if ( !Data.HasMember( JSON_KEY_CALL_CARD_CARDS ) )
+		{
+			Error = "Failed to find value: ";
+			Error += JSON_KEY_CALL_CARD_CARDS;
+			return false;
+		}
+		rapidjson::Value & cards = Data[JSON_KEY_CALL_CARD_CARDS];
+		for ( int i = 0; i < (int)cards.Size(); ++i )
+		{
+			rapidjson::Value & v = cards[i];
+			if ( !v.IsObject() )
+			{
+				char szError[1024] = { 0 };
+				sprintf( szError, "data::cards[%d] is not a object!", i );
+				Error = szError;
+				return false;
+			}
+
+			_JS_CARD_ Card;
+			if ( !v.HasMember( JSON_KEY_CALL_CARD_CARD_ID ) && v[JSON_KEY_CALL_CARD_CARD_ID].IsInt() )
+			{
+				Error = "Error, failed to found value: ";
+				Error += JSON_KEY_CALL_CARD_CARD_ID;
+				return false;
+			}
+			Card.cardid = v[JSON_KEY_CALL_CARD_CARD_ID].GetInt();
+
+			if ( !v.HasMember( JSON_KEY_CALL_CARD_CARD_TYPE_ID ) && v[JSON_KEY_CALL_CARD_CARD_TYPE_ID].IsInt() )
+			{
+				Error = "Error, failed to found value: ";
+				Error += JSON_KEY_CALL_CARD_CARD_TYPE_ID;
+				return false;
+			}
+			Card.cardtype = v[JSON_KEY_CALL_CARD_CARD_TYPE_ID].GetInt();
+
+			CallCardReq.cards.push_back( Card );
+		}
+
+		return true;
+	}
+}

+ 67 - 0
websocket_bak/jsonBuilder.h

@@ -0,0 +1,67 @@
+#ifndef _JSONBUILDER_H_
+#define _JSONBUILDER_H_
+
+#include <rapidjson/document.h>
+#include "jsonCommon.h"
+
+namespace YA
+{
+	class jsonBuilder
+	{
+	private:
+		/**
+		* @brief
+		加上版本信息函数。
+
+		* @param  [out] rapidjson::Value& root  根jason对象\n
+		* @param  [out] rapidjson::Document::AllocatorType& allocator  分配器\n
+
+		* @return 无\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+        void __AddVersion( rapidjson::Value& root, rapidjson::Document::AllocatorType& allocator );
+	public:
+		jsonBuilder();
+		virtual ~jsonBuilder();
+		/**
+		* @brief
+		生成登录jason函数。
+
+		* @param  [in] const _JS_LOGIN_& Login  登录参数\n
+
+		* @return 如果成功返回生成的json字符串,否则返回空字符串\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		std::string BuildLogin( const _JS_LOGIN_& Login );
+		/**
+		* @brief
+		解析呼叫结构体函数。
+
+		* @param  [in] const _JS_LOGIN_& Login  登录参数\n
+
+		* @return 如果成功返回生成的jason字符串,否则返回空字符串\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		bool ParseCall_Card_Req( const std::string& JasonText, _JS_CALL_CARD_REQ_& CallCardReq, std::string& Error );
+	};
+}
+
+#endif /* _JSONBUILDER_H_ */

+ 309 - 0
websocket_bak/jsonCommon.h

@@ -0,0 +1,309 @@
+/**
+* @brief
+jason公共头文件
+
+* @version
+V 1.0.0
+
+* @author
+王益俊
+
+* @date
+创建时间:  2018-04-19\n
+
+* @note
+2018-04-19  初次创建。\n
+
+* @warning
+
+* @bug
+
+*/
+
+#ifndef _JSON_COMMON_H_
+#define _JSON_COMMON_H_
+
+#include <string>
+#include <vector>
+
+#include <rapidjson/document.h>
+#include <rapidjson/pointer.h>
+
+namespace YA
+{
+
+//----------------------------------------------------------------------------
+//                                 命令
+//----------------------------------------------------------------------------
+const char JASON_CMD_LOGIN[]              = "login";
+
+
+//----------------------------------------------------------------------------
+//                                 字段
+//----------------------------------------------------------------------------
+const char JASON_FIELD_CMD[]              = "cmd";
+
+//----------------------------------------------------------------------------
+//                                 版本
+//----------------------------------------------------------------------------
+const char JASON_CURRENT_VERSION[]        = "1.0.0.4";
+
+
+/**
+ * @brief
+ 通用jason包结构体
+ */
+struct _JS_PACK_
+{
+public:
+	rapidjson::Document m_Doc;//jason文档对象
+public:
+    _JS_PACK_()
+	{
+
+	}
+    /**
+	* @brief
+	获得命令字函数。
+
+	* @param  [out] std::string& Error  错误信息\n
+
+	* @return 如果成功返回获得的命令字,否则返回空字符串\n
+
+	* @note
+
+	* @warning
+
+	* @bug
+
+	*/
+    std::string GetCmd( std::string& Error )
+    {
+    	rapidjson::Value::MemberIterator itMember;
+    	itMember = m_Doc.FindMember( JASON_FIELD_CMD );
+		if ( itMember == m_Doc.MemberEnd() )
+		{
+			Error = "Error,Failed to find member: ";
+			Error += JASON_FIELD_CMD;
+			return "";
+		}
+
+    	return m_Doc[JASON_FIELD_CMD].GetString();
+    }
+    /**
+	* @brief
+	获得成员函数。
+
+    * @param  [in] const std::string& MemberName  成员名称\n
+    * @param  [out] rapidjson::Value& Member  获得的成员\n
+	* @param  [out] std::string& Error  错误信息\n
+
+	* @return 如果成功返回true,否则返回false\n
+
+	* @note
+
+	* @warning
+
+	* @bug
+
+	*/
+    bool GetMember( const std::string& MemberName, rapidjson::Value& Member, std::string& Error )
+    {
+    	rapidjson::Value::MemberIterator itMember;
+    	itMember = m_Doc.FindMember( MemberName.c_str() );
+		if ( itMember == m_Doc.MemberEnd() )
+		{
+			Error = "Error,Failed to find member: ";
+			Error += MemberName;
+			return false;
+		}
+
+		rapidjson::Document::AllocatorType allocator;
+		Member.CopyFrom( itMember->value, allocator );
+
+    	return true;
+    }
+    /**
+	* @brief
+	获得指定成员的值函数。
+
+	* @param  [in] const std::string& MemberName  指定成员\n
+	* @param  [in] const std::string& ValueName  值名称\n
+	* @param  [out] rapidjson::Value& Member  获得的值\n
+	* @param  [out] std::string& Error  错误信息\n
+
+	* @return 如果成功返回true,否则返回false\n
+
+	* @note
+
+	* @warning
+
+	* @bug
+
+	*/
+    bool GetValue( const rapidjson::Value& Member, const std::string& ValueName, rapidjson::Value& Value, std::string& Error )
+    {
+    	rapidjson::Value::ConstMemberIterator itValue;
+    	itValue = Member.FindMember( ValueName.c_str() );
+    	if ( itValue == Member.MemberEnd() )
+		{
+    		char szError[256] = { 0 };
+    		sprintf( szError, "Error,Failed to find: %s", ValueName.c_str() );
+			Error = szError;
+			return false;
+		}
+
+    	rapidjson::Document::AllocatorType allocator;
+    	Value.CopyFrom( itValue->value, allocator );
+
+    	return true;
+    }
+	/**
+	 * @brief
+	 根据jason pointer获得指定的值函数。
+
+	 * @param  [in] const char* JPointer  指定的jason pointer\n
+
+	 * @return 返回获得的值\n
+
+	 * @note
+
+	 * @warning
+
+	 * @bug
+
+	 */
+    const rapidjson::Value* GetValueByJP( const char* JPointer )
+    {
+    	if ( 0 == JPointer )
+    	{
+            return 0;
+    	}
+
+    	return rapidjson::GetValueByPointer( m_Doc, rapidjson::Pointer( JPointer ) );
+    }
+	/**
+	 * @brief
+	 获得所有成员函数。
+
+	 * @param  无\n
+
+	 * @return 返回获得的所有成员的列表\n
+
+	 * @note
+
+	 * @warning
+
+	 * @bug
+
+	 */
+	std::vector<std::string> GetMembers()
+	{
+		std::vector<std::string> vMembers;
+
+		for (auto& m : m_Doc.GetObject())
+		{
+			vMembers.push_back( m.name.GetString() );
+		}
+
+		return vMembers;
+	}
+};
+
+/**
+ * @brief
+ 分站结构体
+ */
+struct _JS_COMMON_
+{
+    std::string version;//版本
+	_JS_COMMON_()
+	{
+
+	}
+};
+
+/**
+ * @brief
+ 分站结构体
+ */
+struct _JS_STATION_
+{
+	int stationid;//分站ID
+	_JS_STATION_()
+	{
+		stationid = 0;
+	}
+};
+
+/**
+ * @brief
+ 卡结构体
+ */
+struct _JS_CARD_
+{
+	int cardid;//卡ID
+	int cardtype;//卡类型
+	_JS_CARD_()
+	{
+		cardid    = 0;
+		cardtype  = 0;
+	}
+};
+
+/**
+ * @brief
+ 呼叫结构体
+ */
+struct _JS_CALL_CARD_REQ_ : public _JS_COMMON_
+{
+	int call_type_id;//呼叫类型(0 全员, 1定员)
+	int call_time_out;//呼叫时长(单位分钟)
+	int call_level_id;//呼叫级别(0一般呼叫,1紧急呼叫)
+	std::string user_name;//用户
+	long long call_time_interval;//呼叫间隔
+	std::vector<_JS_STATION_> stations;//分站列表
+	std::vector<_JS_CARD_> cards;//呼叫的卡列表
+	_JS_CALL_CARD_REQ_()
+	{
+		call_type_id       = 0;
+		call_time_out      = 0;
+		call_level_id      = 0;
+		call_time_interval = 0;
+	}
+};
+
+/**
+ * @brief
+ 取消呼叫结构体
+ */
+struct _JS_CALL_CARD_CANCEL_REQ_ : public _JS_COMMON_
+{
+	int call_type_id;//呼叫类型(0 全员, 1定员)
+	std::string user_name;//用户
+	long long call_time;//取消时间
+	std::vector<_JS_STATION_> stations;//分站列表
+	std::vector<_JS_CARD_> cards;//呼叫的卡列表
+	_JS_CALL_CARD_CANCEL_REQ_()
+	{
+		call_type_id   = 0;
+		call_time      = 0;
+	}
+};
+
+/**
+ * @brief
+ 数据库连接设置结构体
+ */
+struct _JS_LOGIN_
+{
+	std::string user_name;//用户名
+	std::string user_password;//密码
+	_JS_LOGIN_()
+	{
+
+	}
+};
+}
+
+#endif//_JSON_COMMON_H_

+ 36 - 0
websocket_bak/singleton_test_class1.cpp

@@ -0,0 +1,36 @@
+#include "singleton_test_class1.h"
+#include "wsClientMgr.h"
+#include <iostream>
+
+singleton_test_class1::singleton_test_class1()
+{
+	
+}
+
+singleton_test_class1::~singleton_test_class1()
+{
+
+}
+
+void singleton_test_class1::DoSome()
+{
+	std::cout << "-- singleton_test_class1::DoSome() --" << std::endl;
+
+	if ( swsClientMgr.IsConnected() )
+	{
+		std::cout << "swsClientMgr Is Connected!" << std::endl;
+	}
+	else
+	{
+		std::cout << "swsClientMgr Is not Connected!" << std::endl;
+	}
+
+	if ( swsClientMgr.IsLogined() )
+	{
+		std::cout << "swsClientMgr Is Logined!" << std::endl;
+	}
+	else
+	{
+		std::cout << "swsClientMgr Is not Logined!" << std::endl;
+	}
+}

+ 9 - 0
websocket_bak/singleton_test_class1.h

@@ -0,0 +1,9 @@
+#pragma once
+
+class singleton_test_class1
+{
+public:
+	singleton_test_class1();
+	~singleton_test_class1();
+	void DoSome();
+};

BIN
websocket_bak/socket.io-client-cpp_test.cpp


+ 226 - 0
websocket_bak/thread_safe_map.h

@@ -0,0 +1,226 @@
+/**
+* @brief
+线程安全模板类
+
+* @version
+  V 1.0.0
+
+* @author
+  王益俊
+
+* @date
+  创建时间:  2018-08-20\n
+
+* @note
+  2018-08-20  创建类。\n
+
+* @warning
+
+* @bug
+  
+*/
+
+#pragma once
+
+#include <map>
+#include <stdint.h>
+#include <boost/thread/mutex.hpp>
+
+template<class Key, class T>
+class thread_safe_map
+{
+private:
+	std::map<Key, T> __map;
+	mutable boost::mutex the_mutex;
+public:
+	/**
+	* @brief
+	重置函数。
+
+	* @param  [in] const Key &inputKey  key\n
+	* @param  [in] const T &inputValue  value\n
+
+	* @return 无\n
+
+	* @note
+
+	* @warning
+
+	* @bug
+
+	*/
+	void insert( const Key &inputKey, const T &inputValue )
+	{
+		boost::mutex::scoped_lock lock( the_mutex );
+		__map.insert( std::pair<Key, T>( inputKey, inputValue ) );
+		lock.unlock();
+	}
+	/**
+	* @brief
+	返回map是否为空函数。
+
+	* @param  无\n
+
+	* @return 是否为空\n
+	* @retval  true  为空\n
+    * @retval  false  不为空\n
+
+	* @note
+
+	* @warning
+
+	* @bug
+
+	*/
+	bool empty() const 
+	{
+		boost::mutex::scoped_lock lock( the_mutex );
+		return __map.empty();
+	}
+	/**
+	* @brief
+	用某个key获取值的函数。
+
+	* @param  [in] const Key &inputKey  指定的key\n
+	* @param  [out] T &outputValue  获得的值\n
+
+	* @return 是否获取成功\n
+	* @retval  true  成功\n
+    * @retval  false  失败\n
+
+	* @note
+
+	* @warning
+
+	* @bug
+
+	*/
+	bool get( const Key &inputKey, T &outputValue ) 
+	{
+		boost::mutex::scoped_lock lock( the_mutex );
+
+		typename std::map<Key, T>::iterator it;
+		it = __map.find( inputKey );
+
+		if ( __map.end() == it ) 
+		{
+			return false;
+		}
+
+		outputValue = it->second;
+		return true;
+	}
+	/**
+	* @brief
+	更新某个key对应值的函数。
+
+	* @param  [in] const Key &inputKey  指定的key\n
+	* @param  [out] T &outputValue  获得的值\n
+
+	* @return 是否获取成功\n
+	* @retval  true  成功\n
+    * @retval  false  失败\n
+
+	* @note
+
+	* @warning
+
+	* @bug
+
+	*/
+	bool update( const Key &inputKey, const T &inputValue )
+	{
+		boost::mutex::scoped_lock lock( the_mutex );
+
+		typename std::map<Key, T>::iterator it;
+		it = __map.find( inputKey );
+
+		if ( __map.end() == it ) 
+		{
+			return false;
+		}
+
+		it->second = inputValue;
+		return true;
+	}
+	/**
+	* @brief
+	根据某个key删除值的函数。
+
+	* @param  [in] const Key &inputKey  指定的key\n
+
+	* @return 无\n
+
+	* @note
+
+	* @warning
+
+	* @bug
+
+	*/
+	void erase( const Key &inputKey )
+	{
+		boost::mutex::scoped_lock lock( the_mutex );
+		__map.erase( inputKey );
+	}
+	/**
+	* @brief
+	获得大小的函数。
+
+	* @param  无\n
+
+	* @return 无\n
+
+	* @note
+
+	* @warning
+
+	* @bug
+
+	*/
+	size_t size() const
+	{
+		boost::mutex::scoped_lock lock( the_mutex );
+		return __map.size();
+	}
+	/**
+	* @brief
+	清除map的函数。
+
+	* @param  无\n
+
+	* @return 无\n
+
+	* @note
+
+	* @warning
+
+	* @bug
+
+	*/
+	void clear()
+	{
+		boost::mutex::scoped_lock lock( the_mutex );
+		__map.clear();
+	}
+	/**
+	* @brief
+	拷贝map的函数。
+
+	* @param  无\n
+
+	* @return 无\n
+
+	* @note
+
+	* @warning
+
+	* @bug
+
+	*/
+	void copy( std::map<Key, T>& dest_map )
+	{
+		boost::mutex::scoped_lock lock( the_mutex );
+		dest_map = __map;
+	}
+};

+ 253 - 0
websocket_bak/wsClient.cpp

@@ -0,0 +1,253 @@
+#include "wsClient.h"
+#include "constdef.h"
+#include <thread>
+#include <chrono>
+#include <boost/locale.hpp>
+
+
+namespace YA
+{
+	const int _LOGIN_SLEEP_TIME_      = 500;//登录前的等待时间(单位:毫秒)
+	const int _OPEN_SOCKET_WAIT_TIME_ = 100;//等待打开socket时间(单位:毫秒)
+
+	wsClient::wsClient()
+	{
+		__ID = 0;
+		_reset();
+	}
+
+	wsClient::~wsClient()
+	{
+
+	}
+
+	
+
+	void wsClient::_reset()
+	{
+		__Connected = false;
+		__SktOpened = false;
+		__Logined = false;
+	}
+
+	void wsClient::init( int ID, const std::string & uri, const std::map<std::string, MSG_HANDLE_FUNC_TYPE>& MsgFuncList )
+	{
+		__ID          = ID;
+		__uri         = uri;
+		__MsgFuncList = MsgFuncList;
+		__wsclient.set_reconnect_attempts( 0 );
+		using std::placeholders::_1;
+		using std::placeholders::_2;
+		using std::placeholders::_3;
+		using std::placeholders::_4;
+		sio::socket::ptr sock = __wsclient.socket();
+
+		__wsclient.set_open_listener( std::bind( &wsClient::_on_connected, this ) );
+		__wsclient.set_close_listener( std::bind( &wsClient::_on_close, this, std::placeholders::_1 ) );
+		__wsclient.set_reconnect_listener( std::bind( &wsClient::_on_reconnect, this, std::placeholders::_1, std::placeholders::_2 ) );
+		__wsclient.set_fail_listener( std::bind( &wsClient::_on_fail, this ) );
+		__wsclient.set_socket_open_listener( std::bind( &wsClient::_on_socket_opened, this ) );
+
+		sock->on( JSON_CMD_VALUE_CALL, sio::socket::event_listener_aux( std::bind( &wsClient::_OnCallMessage, this, _1, _2, _3, _4 ) ) );
+		sock->on( "code", sio::socket::event_listener_aux( std::bind( &wsClient::_OnLoginResponse, this, _1, _2, _3, _4 ) ) );
+	}
+
+	std::string wsClient::get_uri()
+	{
+		return __uri;
+	}
+
+	int wsClient::connect( int time_out )
+	{
+		if ( __uri.empty() )
+		{
+			__LastError = "Error, uri is empty.";
+			return -1;
+		}
+
+		__wsclient.connect( __uri );
+
+		std::cv_status status = std::cv_status::timeout;
+
+		int nRet = -1;
+		__lock.lock();
+		if ( !IsConnected() )
+		{
+			status = __cond.wait_for( __lock, std::chrono::seconds( time_out ) );
+
+			if ( std::cv_status::timeout == status )
+			{
+				__LastError = "Failed to connect server.";
+				nRet = -1;
+			}
+			else
+			{
+				nRet = 0;
+			}
+		}
+		else
+		{
+			nRet = 0;
+		}
+		__lock.unlock();
+
+		return nRet;
+	}
+
+	void wsClient::login()
+	{
+		char szError[512] = { 0 };
+
+		if ( !IsConnected() )
+		{
+			__LastError = "please connect server before login!";
+			return;
+		}
+
+		std::cv_status status = std::cv_status::timeout;
+		__lock.lock();
+		if ( !IsSktOpened() )
+		{
+			status = __cond.wait_for( __lock, std::chrono::milliseconds( _OPEN_SOCKET_WAIT_TIME_ ) );
+		}
+		__lock.unlock();
+
+		if ( !IsSktOpened() )
+		{
+			__LastError = "socket is not opened before login!";
+			return;
+		}
+
+		std::this_thread::sleep_for( std::chrono::milliseconds( _LOGIN_SLEEP_TIME_ ) );
+		
+		int nRet = 0;
+		YA::_JS_LOGIN_ Login;
+		Login.user_name = JSON_VALUE_USERNAME;
+		Login.user_password = JSON_VALUE_PASSWORD;
+
+		std::string strLogin = __jsBuilder.BuildLogin( Login );
+		strLogin += "\n";
+		sio::socket::ptr skt_ptr;
+		skt_ptr = __wsclient.socket();
+		skt_ptr->emit( JSON_CMD_VALUE_USER, strLogin, [&]( sio::message::list const& msglist )
+		{
+			sio::message::ptr msg_ptr = msglist[0];
+			nRet = ( int ) msg_ptr->get_map()["code"]->get_int();
+			if ( 0 == nRet )
+			{
+				__Logined = true;
+			}
+			else
+			{
+				__Logined = false;
+				sprintf( szError, "Login failed,code=%d", nRet );
+				__LastError = szError;
+			}
+		} );
+	}
+
+	void wsClient::_on_connected()
+	{
+		__lock.lock();
+		__cond.notify_all();
+		__Connected = true;
+		__lock.unlock();
+	}
+
+	void wsClient::send( const std::string & Cmd, const std::string & Data )
+	{
+		std::lock_guard<std::recursive_mutex> lock( __send_lock );
+
+		sio::socket::ptr skt_ptr;
+		skt_ptr = __wsclient.socket();
+		skt_ptr->emit( Cmd, Data );
+	}
+
+	void wsClient::_on_close( sio::client::close_reason const & reason )
+	{
+		_reset();
+	}
+
+	void wsClient::_on_reconnect( unsigned p1, unsigned p2 )
+	{
+		_reset();
+	}
+
+	void wsClient::_on_fail()
+	{
+		_reset();
+	}
+
+	void wsClient::_on_socket_opened()
+	{
+		__SktOpened = true;
+	}
+
+	void wsClient::_OnCallMessage( std::string const& name, sio::message::ptr const& data, bool need_ack, sio::message::list &ack_resp )
+	{
+		if ( data->get_flag() == sio::message::flag_object ) 
+		{
+			std::string cmd = data->get_map()[JSON_ROOT_KEY_CMD]->get_string();
+
+			std::map<std::string, MSG_HANDLE_FUNC_TYPE>::iterator mit_func;
+			mit_func = __MsgFuncList.find( cmd );
+			if ( mit_func != __MsgFuncList.end() )
+			{
+				mit_func->second( GetID(), name, data, need_ack, ack_resp );
+			}
+		}
+	}
+
+	void wsClient::_OnLoginResponse( std::string const & name, sio::message::ptr const & data, bool need_ack, sio::message::list & ack_resp )
+	{
+		char szError[512] = { 0 };
+		int res_code = ( int ) data->get_map()["code"]->get_int();
+		switch ( res_code )
+		{
+			case -1:
+			{
+				__Logined = false;
+				sprintf( szError, "Login failed,code=%d", res_code );
+				__LastError = szError;
+				break;
+			}
+			case 0:
+			{
+				__Logined = true;
+				break;
+			}
+			default:
+				break;
+		}
+	}
+
+	int wsClient::GetID()
+	{
+		return __ID;
+	}
+
+	bool wsClient::IsConnected()
+	{
+		return __Connected;
+	}
+
+	bool wsClient::IsSktOpened()
+	{
+		return __SktOpened;
+	}
+
+	bool wsClient::IsLogined()
+	{
+		return __Logined;
+	}
+
+	void wsClient::close()
+	{
+		__wsclient.sync_close();
+	}
+
+	std::string wsClient::GetLastError()
+	{
+		return __LastError;
+	}
+}

+ 381 - 0
websocket_bak/wsClient.h

@@ -0,0 +1,381 @@
+/**
+* @brief
+websocket客户端类
+
+* @version
+  V 1.0.0
+
+* @author
+  王益俊
+
+* @date
+  创建时间:  2018-08-14\n
+
+* @note
+  2018-08-14  创建类。\n
+
+* @warning
+
+* @bug
+  
+*/
+
+#pragma once
+
+#include <string>
+#include <mutex>
+#include <condition_variable>
+#include <map>
+
+#include <rapidjson/writer.h>
+#include <rapidjson/stringbuffer.h>
+#include <rapidjson/prettywriter.h>
+
+#include <boost/function.hpp>
+#include <boost/bind.hpp>
+
+#include "sio_client.h"
+#include "jsonBuilder.h"
+
+namespace YA
+{
+	//消息处理函数类型
+	typedef boost::function<void( int, std::string const&, sio::message::ptr const&, bool, sio::message::list & )> MSG_HANDLE_FUNC_TYPE;
+
+	class wsClient
+	{
+	private:
+		sio::client __wsclient;//websocket客户端
+		int __ID;//唯一标识
+		std::string __uri;//连接字符串
+		bool __Connected;//是否连接上服务器端
+		bool __SktOpened;//Socket是否已打开
+		bool __Logined;//是否已登录成功
+		std::condition_variable_any __cond;//条件变量
+		std::mutex __lock;//锁(配合__cond)
+		std::string __LastError;//最新错误
+		std::map<std::string, MSG_HANDLE_FUNC_TYPE> __MsgFuncList;//消息处理函数列表(key是命令,value是处理函数)
+		std::recursive_mutex __send_lock;//发送锁
+		jsonBuilder __jsBuilder;//json构造器
+	protected:
+		/**
+		* @brief
+		重置状态函数。
+
+		* @param  无\n
+
+		* @return 无\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		void _reset();
+		/**
+		* @brief
+		连接成功回调函数。
+
+		* @param  无\n
+
+		* @return 无\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		void _on_connected();
+		/**
+		* @brief
+		连接关闭回调函数。
+
+		* @param  [in] sio::client::close_reason const& reason 关闭的原因\n
+
+		* @return 无\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		void _on_close( sio::client::close_reason const& reason );
+		/**
+		* @brief
+		重连回调函数。
+
+		* @param  [in] unsigned p1 ???\n
+		* @param  [in] unsigned p2 ???\n
+
+		* @return 无\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		void _on_reconnect( unsigned p1, unsigned p2 );
+		/**
+		* @brief
+		失败回调函数。
+
+		* @param  无\n
+
+		* @return 无\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		void _on_fail();
+		/**
+		* @brief
+		socket打开成功回调函数。
+
+		* @param  无\n
+
+		* @return 无\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		void _on_socket_opened();
+		/**
+		* @brief
+		收到服务器端CALL命令回调函数。
+
+		* @param  [in] std::string const& name  触发的名字\n
+		* @param  [in] sio::message::ptr const& data  收到的消息数据\n
+		* @param  [in] bool need_ack  是否需要应答\n
+		* @param  [in] sio::message::list &ack_resp  应答消息数据\n
+
+		* @return 无\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		void _OnCallMessage( std::string const& name, sio::message::ptr const& data, bool need_ack, sio::message::list &ack_resp );
+		/**
+		* @brief
+		收到服务器端登录应答命令回调函数。
+
+		* @param  [in] std::string const& name  触发的名字\n
+		* @param  [in] sio::message::ptr const& data  收到的消息数据\n
+		* @param  [in] bool need_ack  是否需要应答\n
+		* @param  [in] sio::message::list &ack_resp  应答消息数据\n
+
+		* @return 无\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		void _OnLoginResponse( std::string const& name, sio::message::ptr const& data, bool need_ack, sio::message::list &ack_resp );
+	public:
+		wsClient();
+		~wsClient();
+		/**
+		* @brief
+		初始化函数。
+
+		* @param  [in] int ID  当前客户端的唯一标识\n
+		* @param  [in] const std::string & uri  连接串\n
+		* @param  [in] const std::map<std::string, MSG_HANDLE_FUNC_TYPE>& MsgFuncList  消息处理函数\n
+
+		* @return 无\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		void init( int ID, const std::string & uri, const std::map<std::string, MSG_HANDLE_FUNC_TYPE>& MsgFuncList );
+		/**
+		* @brief
+		获得连接字符串函数。
+
+		* @param  无\n
+
+		* @return 获得的连接字符串\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		std::string get_uri();
+		/**
+		* @brief
+		;连接函数。
+
+		* @param  [in] int time_out  超时(单位:秒),默认是3秒\n
+
+		* @return 连接服务器是否成功\n
+		* @retval  0  成功\n
+        * @retval  -1  失败\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		int connect( int time_out = 3 );
+		/**
+		* @brief
+		;登录函数。
+
+		* @param  无\n
+
+		* @return 无\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		void login();
+		/**
+		* @brief
+		发送数据函数。
+
+		* @param  [in] const std::string & Cmd  要发送的命令\n
+		* @param  [in] const std::string& Data  要发送的数据\n
+
+		* @return 无\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		void send( const std::string & Cmd, const std::string & Data );
+		/**
+		* @brief
+		获得ID函数。
+
+		* @param  无\n
+
+		* @return 获得的ID\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		int GetID();
+		/**
+		* @brief
+		获得是否已连接服务器端函数。
+
+		* @param  无\n
+
+		* @return 是否已连接服务器\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		bool IsConnected();
+		/**
+		* @brief
+		获得Socket是否已打开函数。
+
+		* @param  无\n
+
+		* @return Socket是否已打开\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		bool IsSktOpened();
+		/**
+		* @brief
+		获得是否已登录成功函数。
+
+		* @param  无\n
+
+		* @return 是否已登录成功\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		bool IsLogined();
+		/**
+		* @brief
+		关闭函数。
+
+		* @param  无\n
+
+		* @return 无\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		void close();
+		/**
+		* @brief
+		获得最新错误函数。
+
+		* @param  无\n
+
+		* @return 无\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		std::string GetLastError();
+	};
+}

+ 142 - 0
websocket_bak/wsClientMgr.cpp

@@ -0,0 +1,142 @@
+#include "wsClientMgr.h"
+
+namespace YA
+{
+	wsClientMgr::wsClientMgr()
+	{
+
+	}
+
+	wsClientMgr::~wsClientMgr()
+	{
+
+	}
+
+	void wsClientMgr::Build( const std::vector<std::string> uri_list, const std::map<std::string, MSG_HANDLE_FUNC_TYPE>& MsgFuncList )
+	{
+		std::lock_guard<std::recursive_mutex> lock( __lock );
+
+		std::vector<std::string>::const_iterator vit_uri;
+
+		int ID = 1;
+		int Index = 0;
+		for ( vit_uri = uri_list.begin(); vit_uri != uri_list.end(); vit_uri++ )
+		{
+			std::shared_ptr<wsClient> pClient = std::make_shared<wsClient>();
+			pClient->init( ID, *vit_uri, MsgFuncList );
+			__wsClientList.push_back( pClient );
+			__uriIndexList.insert( std::make_pair( *vit_uri, Index ) );
+			ID++;
+			Index++;
+		}
+	}
+
+	int wsClientMgr::connect( int time_out )
+	{
+		std::lock_guard<std::recursive_mutex> lock( __lock );
+
+		for ( size_t i = 0; i < __wsClientList.size() ; i++ )
+		{
+			if ( __wsClientList[i]->connect( time_out ) != 0 )
+			{
+				char szError[1024] = { 0 };
+				sprintf( szError, "[%d] websocket client failed to connect: %s.", __wsClientList[i]->GetID(), __wsClientList[i]->get_uri().c_str() );
+				__LastError = szError;
+				return -1;
+			}
+		}
+
+		return 0;
+	}
+
+	void wsClientMgr::login()
+	{
+		std::lock_guard<std::recursive_mutex> lock( __lock );
+
+		for ( size_t i = 0; i < __wsClientList.size() ; i++ )
+		{
+			__wsClientList[i]->login();
+		}
+	}
+
+	void wsClientMgr::send( const std::string & Cmd, const std::string & Data )
+	{
+		std::lock_guard<std::recursive_mutex> lock( __lock );
+
+		for ( size_t i = 0; i < __wsClientList.size() ; i++ )
+		{
+			__wsClientList[i]->send( Cmd, Data );
+		}
+	}
+
+	std::shared_ptr<wsClient> wsClientMgr::GetClientByURI( const std::string & URI )
+	{
+		std::lock_guard<std::recursive_mutex> lock( __lock );
+
+		std::shared_ptr<wsClient> pClient;
+
+		std::map<std::string, int>::iterator mit_uri;
+		mit_uri = __uriIndexList.find( URI );
+		if ( mit_uri != __uriIndexList.end() )
+		{
+			pClient = __wsClientList[mit_uri->second];
+		}
+
+		return pClient;
+	}
+
+	void wsClientMgr::close()
+	{
+		std::lock_guard<std::recursive_mutex> lock( __lock );
+
+		for ( size_t i = 0; i < __wsClientList.size() ; i++ )
+		{
+			__wsClientList[i]->close();
+		}
+	}
+
+	bool wsClientMgr::IsConnected()
+	{
+		std::lock_guard<std::recursive_mutex> lock( __lock );
+
+		for ( size_t i = 0; i < __wsClientList.size() ; i++ )
+		{
+			if ( !__wsClientList[i]->IsConnected() )
+			{
+				return false;
+			}
+		}
+
+		return true;
+	}
+
+	bool wsClientMgr::IsLogined()
+	{
+		std::lock_guard<std::recursive_mutex> lock( __lock );
+
+		for ( size_t i = 0; i < __wsClientList.size() ; i++ )
+		{
+			if ( !__wsClientList[i]->IsLogined() )
+			{
+				return false;
+			}
+		}
+
+		return true;
+	}
+
+	bool wsClientMgr::IsSktOpened()
+	{
+		std::lock_guard<std::recursive_mutex> lock( __lock );
+
+		for ( size_t i = 0; i < __wsClientList.size() ; i++ )
+		{
+			if ( !__wsClientList[i]->IsSktOpened() )
+			{
+				return false;
+			}
+		}
+
+		return true;
+	}
+}

+ 232 - 0
websocket_bak/wsClientMgr.h

@@ -0,0 +1,232 @@
+/**
+* @brief
+websocket客户端管理器类
+
+* @version
+  V 1.0.0
+
+* @author
+  王益俊
+
+* @date
+  创建时间:  2018-08-17\n
+
+* @note
+  2018-08-17  创建类。\n
+
+* @warning
+
+* @bug
+  
+*/
+
+#pragma once
+
+#include <vector>
+#include <string>
+#include <map>
+
+#include "wsClient.h"
+#include <boost/serialization/singleton.hpp>
+
+namespace YA
+{
+	class wsClientMgr
+	{
+	private:
+		std::vector<std::shared_ptr<wsClient>> __wsClientList;//ws客户端列表
+		std::map<std::string,int>  __uriIndexList;//uri和客户端下标对应表
+		std::string __LastError;//最新错误
+		std::recursive_mutex __lock;//锁
+	public:
+		wsClientMgr();
+		~wsClientMgr();
+		/**
+		* @brief
+		  重载[]运算符。
+
+		* @param  [in] int index  下标\n
+
+		* @return 下标对应的客户端\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		std::shared_ptr<wsClient> operator[]( int index )
+		{
+			std::lock_guard<std::recursive_mutex> lock( __lock );
+			std::shared_ptr<wsClient> pClient;
+
+			if ( index < 0 )
+			{
+				return pClient;
+			}
+
+			if ( index <(int) __wsClientList.size() )
+			{
+				pClient = __wsClientList[index];
+			}
+
+			return pClient;
+		}
+		/**
+		* @brief
+		;构造函数。
+
+		* @param  [in] const std::vector<std::string> uri_list  服务器uri列表\n
+		* @param  [in] const std::map<std::string, MSG_HANDLE_FUNC_TYPE>& MsgFuncList  处理函数列表\n
+
+		* @return 连接服务器是否成功\n
+		* @retval  0  成功\n
+        * @retval  -1  失败\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		void Build( const std::vector<std::string> uri_list, const std::map<std::string, MSG_HANDLE_FUNC_TYPE>& MsgFuncList );
+		/**
+		* @brief
+		;连接函数。
+
+		* @param  [in] int time_out  超时(单位:秒),默认是3秒\n
+
+		* @return 连接服务器是否成功\n
+		* @retval  0  成功\n
+        * @retval  -1  失败\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		int connect( int time_out = 3 );
+		/**
+		* @brief
+		;登录函数。
+
+		* @param  无\n
+
+		* @return 无\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		void login();
+		/**
+		* @brief
+		发送数据函数。
+
+		* @param  [in] const std::string & Cmd  要发送的命令\n
+		* @param  [in] const std::string& Data  要发送的数据\n
+
+		* @return 无\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		void send( const std::string & Cmd, const std::string & Data );
+		/**
+		* @brief
+		根据URI(连接串)获得对应的客户端函数。
+
+		* @param  [in] const std::string& URI  \n
+
+		* @return 获得的客户端\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		std::shared_ptr<wsClient> GetClientByURI( const std::string& URI );
+		/**
+		* @brief
+		关闭函数。
+
+		* @param  无\n
+
+		* @return 无\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		void close();
+		/**
+		* @brief
+		获得是否已连接服务器端函数。
+
+		* @param  无\n
+
+		* @return 是否已连接服务器\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		bool IsConnected();
+		/**
+		* @brief
+		获得是否已登录成功函数。
+
+		* @param  无\n
+
+		* @return 是否已登录成功\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		bool IsLogined();
+		/**
+		* @brief
+		获得Socket是否已打开函数。
+
+		* @param  无\n
+
+		* @return Socket是否已打开\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		bool IsSktOpened();
+	};
+}
+
+//单件相关定义
+typedef boost::serialization::singleton<YA::wsClientMgr> singleton_wsClientMgr;
+#define swsClientMgr singleton_wsClientMgr::get_mutable_instance()
+#define swsClientMgr_const singleton_wsClientMgr::get_const_instance()

+ 81 - 0
websocket_bak/wsTimerThread.cpp

@@ -0,0 +1,81 @@
+#include "wsTimerThread.h"
+#include <iostream>
+
+namespace YA
+{
+	wsTimerThread::wsTimerThread()
+	{
+		__Reset();
+	}
+
+
+	wsTimerThread::~wsTimerThread()
+	{
+		Stop();
+	}
+
+	void wsTimerThread::Start()
+	{
+		__Running = true;
+		__Thread.reset( new boost::thread( boost::bind( &wsTimerThread::_ThreadFunc, this, this ) ) );
+		__Thread->detach();
+	}
+
+	void wsTimerThread::Stop()
+	{
+		__Enable = false;
+
+		boost::unique_lock<boost::mutex> lock( __ExitMutex );
+		__ExitCond.wait( lock );
+
+		__Running = false;
+	}
+
+	void wsTimerThread::__Reset()
+	{
+		__Enable  = true;
+		__Running = false;
+	}
+
+	void wsTimerThread::__ChkConfig()
+	{
+		if ( __Config.SendInterval < MIN_SEND_INTERVAL )
+		{
+			__Config.SendInterval = MIN_SEND_INTERVAL;
+		}
+	}
+	void wsTimerThread::_ThreadFunc( wsTimerThread * pOwner )
+	{
+		while ( pOwner->__Enable )
+		{
+			//do something...
+			printf("doing ....timer thread .......\n");
+			boost::this_thread::sleep( boost::posix_time::millisec( 1000 ) );
+		}
+
+		pOwner->__ExitCond.notify_one();
+	}
+
+
+
+	void wsTimerThread::Init( const _THREAD_CONFIG_ & Config )
+	{
+		__Config = Config;
+		__ChkConfig();
+	}
+
+	void wsTimerThread::add_card_pos( const _CARD_POS_ & pos )
+	{
+		__CardPosList.insert( pos.ID, pos );
+	}
+
+	void wsTimerThread::upt_card_pos( const _CARD_POS_ & pos )
+	{
+		__CardPosList.update( pos.ID, pos );
+	}
+
+	void wsTimerThread::del_card_pos( const _CARD_POS_ & pos )
+	{
+		__CardPosList.erase( pos.ID );
+	}
+}

+ 202 - 0
websocket_bak/wsTimerThread.h

@@ -0,0 +1,202 @@
+/**
+* @brief
+websocket定时发送线程类
+
+* @version
+  V 1.0.0
+
+* @author
+  王益俊
+
+* @date
+  创建时间:  2018-08-17\n
+
+* @note
+  2018-08-17  创建类。\n
+
+* @warning
+
+* @bug
+  
+*/
+
+#pragma once
+
+#include <boost/thread.hpp>
+#include <boost/bind.hpp>
+#include <boost/atomic.hpp>
+#include <boost/shared_ptr.hpp>
+#include <boost/thread/condition.hpp>
+#include <boost/serialization/singleton.hpp>
+
+#include "thread_safe_map.h"
+#include "ws_common.h"
+
+namespace YA
+{
+	class wsTimerThread
+	{
+	private:
+		boost::shared_ptr<boost::thread> __Thread;//线程
+		boost::atomic<bool> __Enable;//线程是否继续运行的标志
+		boost::atomic<bool> __Running;//线程是否正在运行的标志
+		boost::condition_variable_any __ExitCond;//条件变量
+		boost::mutex __ExitMutex;//锁(配合__ExitCond)
+		_THREAD_CONFIG_ __Config;//线程配置
+		thread_safe_map<int, _CARD_POS_> __CardPosList;//卡位置列表
+	private:
+		/**
+		* @brief
+		  重置函数。
+
+		* @param  无\n
+
+		* @return 无\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		void __Reset();
+		/**
+		* @brief
+		  检查线程配置是否合法函数。
+
+		* @param  无\n
+
+		* @return 无\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		void __ChkConfig();
+	protected:
+		/**
+		* @brief
+		  线程函数。
+
+		* @param  [in] wsTimerThread* pOwner  线程所属者\n
+
+		* @return 无\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		void _ThreadFunc( wsTimerThread* pOwner );
+	public:
+		wsTimerThread();
+		~wsTimerThread();
+		/**
+		* @brief
+		  启动线程函数。
+
+		* @param  无\n
+
+		* @return 无\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		void Start();
+		/**
+		* @brief
+		  停止线程函数。
+
+		* @param  无\n
+
+		* @return 无\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		void Stop();
+		/**
+		* @brief
+		  初始化函数。
+
+		* @param  [in] const _THREAD_CONFIG_& Config  线程配置\n
+
+		* @return 无\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		void Init( const _THREAD_CONFIG_& Config );
+		/**
+		* @brief
+		  添加卡位置函数。
+
+		* @param  [in] const _CARD_POS_& pos  卡位置结构体\n
+
+		* @return 无\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		void add_card_pos( const _CARD_POS_& pos );
+		/**
+		* @brief
+		  更新卡位置函数。
+
+		* @param  [in] const _CARD_POS_& pos  卡位置结构体\n
+
+		* @return 无\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		void upt_card_pos( const _CARD_POS_& pos );
+		/**
+		* @brief
+		  删除卡位置函数。
+
+		* @param  [in] const _CARD_POS_& pos  卡位置结构体\n
+
+		* @return 无\n
+
+		* @note
+
+		* @warning
+
+		* @bug
+
+		*/
+		void del_card_pos( const _CARD_POS_& pos );
+	};
+}
+
+//单件定义
+typedef boost::serialization::singleton<YA::wsTimerThread> singleton_wsTimerThread;
+#define swsTimerThrd singleton_wsTimerThread::get_mutable_instance()
+#define swsTimerThrd_const singleton_wsTimerThread::get_const_instance()

+ 77 - 0
websocket_bak/ws_common.h

@@ -0,0 +1,77 @@
+/**
+* @brief
+  websocket公共头文件
+
+* @version
+  V 1.0.0
+
+* @author
+  王益俊
+
+* @date
+  创建时间:  2018-08-17\n
+
+* @note
+  2018-08-17  初次创建。\n
+
+* @warning
+
+* @bug
+  
+*/
+
+#ifndef _WS_COMMON_INC_H_
+#define _WS_COMMON_INC_H_
+
+namespace YA
+{
+	const int MIN_SEND_INTERVAL = 2;
+
+	/**
+	* @brief
+	线程配置结构体。
+	*/
+	struct _THREAD_CONFIG_
+	{
+		int SendInterval;//发送间隔(单位:秒)
+		void Clear()
+		{
+			SendInterval = 0;
+		}
+		_THREAD_CONFIG_()
+		{
+			Clear();
+		}
+	};
+
+	/**
+	* @brief
+	卡位置结构体。
+	*/
+	struct _CARD_POS_
+	{
+		int Type;//卡类型
+		int ID;//卡ID
+		double x;//x坐标
+		double y;//y坐标
+		double z;//z坐标
+		double speed;
+		int    stat;
+		void Clear()
+		{
+			Type = 0;
+			ID   = 0;
+			x    = 0.0;
+			y    = 0.0;
+			z    = 0.0;
+			speed = 0;
+			stat = 0;
+		}
+		_CARD_POS_()
+		{
+			Clear();
+		}
+	};
+}
+
+#endif