Browse Source

deleted unnecessary bits of code

git-svn-id: svn://bind10.isc.org/svn/bind10/branches/trac221@2204 e5f2f494-b856-4b98-b285-d166d9295462
JINMEI Tatuya 15 years ago
parent
commit
102df77737
100 changed files with 0 additions and 25675 deletions
  1. 0 0
      feng-authnotify/AUTHORS
  2. 0 13
      feng-authnotify/COPYING
  3. 0 18
      feng-authnotify/ChangeLog
  4. 0 9
      feng-authnotify/INSTALL
  5. 0 41
      feng-authnotify/Makefile.am
  6. 0 0
      feng-authnotify/NEWS
  7. 0 220
      feng-authnotify/README
  8. 0 498
      feng-authnotify/configure.ac
  9. 0 630
      feng-authnotify/depcomp
  10. 0 1514
      feng-authnotify/doc/Doxyfile
  11. 0 296
      feng-authnotify/doc/design/cc-protocol.txt
  12. 0 13
      feng-authnotify/doc/guide/Makefile
  13. 0 7
      feng-authnotify/doc/guide/STYLEGUIDE
  14. 0 40
      feng-authnotify/doc/guide/bind10-guide.css
  15. 0 595
      feng-authnotify/doc/guide/bind10-guide.html
  16. 0 1303
      feng-authnotify/doc/guide/bind10-guide.xml
  17. 0 47
      feng-authnotify/ext/boost/algorithm/minmax.hpp
  18. 0 551
      feng-authnotify/ext/boost/algorithm/minmax_element.hpp
  19. 0 31
      feng-authnotify/ext/boost/algorithm/string.hpp
  20. 0 176
      feng-authnotify/ext/boost/algorithm/string/case_conv.hpp
  21. 0 312
      feng-authnotify/ext/boost/algorithm/string/classification.hpp
  22. 0 199
      feng-authnotify/ext/boost/algorithm/string/compare.hpp
  23. 0 83
      feng-authnotify/ext/boost/algorithm/string/concept.hpp
  24. 0 28
      feng-authnotify/ext/boost/algorithm/string/config.hpp
  25. 0 36
      feng-authnotify/ext/boost/algorithm/string/constants.hpp
  26. 0 121
      feng-authnotify/ext/boost/algorithm/string/detail/case_conv.hpp
  27. 0 353
      feng-authnotify/ext/boost/algorithm/string/detail/classification.hpp
  28. 0 193
      feng-authnotify/ext/boost/algorithm/string/detail/find_format.hpp
  29. 0 263
      feng-authnotify/ext/boost/algorithm/string/detail/find_format_all.hpp
  30. 0 78
      feng-authnotify/ext/boost/algorithm/string/detail/find_format_store.hpp
  31. 0 87
      feng-authnotify/ext/boost/algorithm/string/detail/find_iterator.hpp
  32. 0 646
      feng-authnotify/ext/boost/algorithm/string/detail/finder.hpp
  33. 0 122
      feng-authnotify/ext/boost/algorithm/string/detail/finder_regex.hpp
  34. 0 94
      feng-authnotify/ext/boost/algorithm/string/detail/formatter.hpp
  35. 0 61
      feng-authnotify/ext/boost/algorithm/string/detail/formatter_regex.hpp
  36. 0 77
      feng-authnotify/ext/boost/algorithm/string/detail/predicate.hpp
  37. 0 159
      feng-authnotify/ext/boost/algorithm/string/detail/replace_storage.hpp
  38. 0 200
      feng-authnotify/ext/boost/algorithm/string/detail/sequence.hpp
  39. 0 95
      feng-authnotify/ext/boost/algorithm/string/detail/trim.hpp
  40. 0 106
      feng-authnotify/ext/boost/algorithm/string/detail/util.hpp
  41. 0 844
      feng-authnotify/ext/boost/algorithm/string/erase.hpp
  42. 0 334
      feng-authnotify/ext/boost/algorithm/string/find.hpp
  43. 0 269
      feng-authnotify/ext/boost/algorithm/string/find_format.hpp
  44. 0 375
      feng-authnotify/ext/boost/algorithm/string/find_iterator.hpp
  45. 0 270
      feng-authnotify/ext/boost/algorithm/string/finder.hpp
  46. 0 103
      feng-authnotify/ext/boost/algorithm/string/formatter.hpp
  47. 0 190
      feng-authnotify/ext/boost/algorithm/string/iter_find.hpp
  48. 0 145
      feng-authnotify/ext/boost/algorithm/string/join.hpp
  49. 0 475
      feng-authnotify/ext/boost/algorithm/string/predicate.hpp
  50. 0 42
      feng-authnotify/ext/boost/algorithm/string/predicate_facade.hpp
  51. 0 646
      feng-authnotify/ext/boost/algorithm/string/regex.hpp
  52. 0 90
      feng-authnotify/ext/boost/algorithm/string/regex_find_format.hpp
  53. 0 928
      feng-authnotify/ext/boost/algorithm/string/replace.hpp
  54. 0 193
      feng-authnotify/ext/boost/algorithm/string/sequence_traits.hpp
  55. 0 163
      feng-authnotify/ext/boost/algorithm/string/split.hpp
  56. 0 85
      feng-authnotify/ext/boost/algorithm/string/std/list_traits.hpp
  57. 0 101
      feng-authnotify/ext/boost/algorithm/string/std/rope_traits.hpp
  58. 0 85
      feng-authnotify/ext/boost/algorithm/string/std/slist_traits.hpp
  59. 0 52
      feng-authnotify/ext/boost/algorithm/string/std/string_traits.hpp
  60. 0 26
      feng-authnotify/ext/boost/algorithm/string/std_containers_traits.hpp
  61. 0 398
      feng-authnotify/ext/boost/algorithm/string/trim.hpp
  62. 0 33
      feng-authnotify/ext/boost/algorithm/string/yes_no_type.hpp
  63. 0 23
      feng-authnotify/ext/boost/algorithm/string_regex.hpp
  64. 0 181
      feng-authnotify/ext/boost/aligned_storage.hpp
  65. 0 237
      feng-authnotify/ext/boost/any.hpp
  66. 0 68
      feng-authnotify/ext/boost/archive/iterators/base64_exception.hpp
  67. 0 112
      feng-authnotify/ext/boost/archive/iterators/base64_from_binary.hpp
  68. 0 120
      feng-authnotify/ext/boost/archive/iterators/binary_from_base64.hpp
  69. 0 105
      feng-authnotify/ext/boost/archive/iterators/dataflow.hpp
  70. 0 80
      feng-authnotify/ext/boost/archive/iterators/dataflow_exception.hpp
  71. 0 115
      feng-authnotify/ext/boost/archive/iterators/escape.hpp
  72. 0 81
      feng-authnotify/ext/boost/archive/iterators/head_iterator.hpp
  73. 0 101
      feng-authnotify/ext/boost/archive/iterators/insert_linebreaks.hpp
  74. 0 95
      feng-authnotify/ext/boost/archive/iterators/istream_iterator.hpp
  75. 0 136
      feng-authnotify/ext/boost/archive/iterators/mb_from_wchar.hpp
  76. 0 83
      feng-authnotify/ext/boost/archive/iterators/ostream_iterator.hpp
  77. 0 169
      feng-authnotify/ext/boost/archive/iterators/remove_whitespace.hpp
  78. 0 168
      feng-authnotify/ext/boost/archive/iterators/transform_width.hpp
  79. 0 94
      feng-authnotify/ext/boost/archive/iterators/unescape.hpp
  80. 0 129
      feng-authnotify/ext/boost/archive/iterators/wchar_from_mb.hpp
  81. 0 125
      feng-authnotify/ext/boost/archive/iterators/xml_escape.hpp
  82. 0 118
      feng-authnotify/ext/boost/archive/iterators/xml_unescape.hpp
  83. 0 49
      feng-authnotify/ext/boost/archive/iterators/xml_unescape_exception.hpp
  84. 0 323
      feng-authnotify/ext/boost/array.hpp
  85. 0 100
      feng-authnotify/ext/boost/asio.hpp
  86. 0 805
      feng-authnotify/ext/boost/asio/basic_datagram_socket.hpp
  87. 0 447
      feng-authnotify/ext/boost/asio/basic_deadline_timer.hpp
  88. 0 99
      feng-authnotify/ext/boost/asio/basic_io_object.hpp
  89. 0 800
      feng-authnotify/ext/boost/asio/basic_raw_socket.hpp
  90. 0 624
      feng-authnotify/ext/boost/asio/basic_serial_port.hpp
  91. 0 1065
      feng-authnotify/ext/boost/asio/basic_socket.hpp
  92. 0 826
      feng-authnotify/ext/boost/asio/basic_socket_acceptor.hpp
  93. 0 150
      feng-authnotify/ext/boost/asio/basic_socket_iostream.hpp
  94. 0 287
      feng-authnotify/ext/boost/asio/basic_socket_streambuf.hpp
  95. 0 720
      feng-authnotify/ext/boost/asio/basic_stream_socket.hpp
  96. 0 342
      feng-authnotify/ext/boost/asio/basic_streambuf.hpp
  97. 0 1042
      feng-authnotify/ext/boost/asio/buffer.hpp
  98. 0 463
      feng-authnotify/ext/boost/asio/buffered_read_stream.hpp
  99. 0 31
      feng-authnotify/ext/boost/asio/buffered_read_stream_fwd.hpp
  100. 0 0
      feng-authnotify/ext/boost/asio/buffered_stream.hpp

+ 0 - 0
feng-authnotify/AUTHORS


+ 0 - 13
feng-authnotify/COPYING

@@ -1,13 +0,0 @@
-Copyright (C) 2009  Internet Systems Consortium, Inc. ("ISC")
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.

+ 0 - 18
feng-authnotify/ChangeLog

@@ -1,18 +0,0 @@
-   2.	[func]		jinmei
-	lib/dns: added a separate signature for Name::split() as a
-	convenient wrapper for common usage. (Trac #49, svn r1903)
-   1.	[bug]		jinmei
-	lib/dns: parameter validation of Name::split() was not sufficient,
-	and invalid parameters could cause integer overflow and make the
-	library crash. (Trac #177, svn r1806)
-
-LEGEND
-[bug] general bug fix.  This is generally a backward compatible change,
-	unless it's deemed to be impossible or very hard to keep
-	compatibility to fix the bug.
-[doc] update to documentation.  This shouldn't change run time behavior.
-[func] new feature.  In some cases this may be a backward incompatible
-	change, which would require a bump of major version.
-[security] security hole fix.  This is no different than a general bug fix
-	except that it will be handled as confidential and will cause 
-	security patch releases.

+ 0 - 9
feng-authnotify/INSTALL

@@ -1,9 +0,0 @@
-To build "configure" file:
-    autoreconf
-
-To then build from source:
-    ./configure
-    make
-
-We recommend using the Boost libraries as it provides a safer TCP
-implementation in BIND 10.

+ 0 - 41
feng-authnotify/Makefile.am

@@ -1,41 +0,0 @@
-SUBDIRS = src
-USE_LCOV=@USE_LCOV@
-LCOV=@LCOV@
-GENHTML=@GENHTML@
-
-DISTCLEANFILES = config.report
-
-# When running distcheck target, do not install the configurations
-DISTCHECK_CONFIGURE_FLAGS = --disable-install-configurations
-
-clean-coverage:
-	@if [ $(USE_LCOV) = yes ] ; then \
-		$(LCOV) --directory . --zerocounters; \
-		rm -rf coverage/; \
-	else \
-		echo "Code coverage not enabled at configuration time"; \
-		exit 1; \
-	fi
-
-perform-coverage: check
-
-report-coverage:
-	$(LCOV) --capture --directory . --output-file all.info
-	$(LCOV) --remove all.info \
-			c++/4.4\*/\* \
-			c++/4.4\*/backward/\* \
-			c++/4.4\*/bits/\* \
-			c++/4.4\*/ext/\* \
-			c++/4.4\*/\*-\*/bits/\* \
-			boost/\* \
-			gtest/\* \
-			usr/include/\* \
-			tests/\* \
-			unittests/\* \
-			\*_unittests.cc \
-			\*_unittest.cc \
-			\*_unittests.h \
-		--output report.info
-	$(GENHTML) -o coverage report.info 
-
-coverage: clean-coverage perform-coverage report-coverage

+ 0 - 0
feng-authnotify/NEWS


+ 0 - 220
feng-authnotify/README

@@ -1,220 +0,0 @@
-This is the source for the development version of BIND 10.
-
-BIND is the popular implementation of a DNS server, developer
-interfaces, and DNS tools. BIND 10 is a rewrite of BIND 9. BIND 10
-is written in C++ and Python and provides a modular environment
-for serving and maintaining DNS.
-
-BIND10-devel is new development leading up to the production
-BIND 10 release. It contains prototype code and experimental
-interfaces. Nevertheless it is ready to use now for testing the
-new BIND 10 infrastructure ideas. The Year 1 (Y1) deliverable of
-the five year plan is described here:
-
-        http://bind10.isc.org/wiki/Year1Deliverable
-
-This release includes the bind10 master process, msgq message bus,
-b10-auth authoritative DNS server, b10-cmdctl remote control daemon,
-b10-cfgmgr configuration manager, and a new libdns library.
-
-Documentation is included and also available via the BIND 10
-website at http://bind10.isc.org/
-
-The latest released source may be downloaded from:
-
-        ftp://ftp.isc.org/isc/bind10/
-
-Users and developers are encouraged to participate on the BIND 10
-mailing lists:
-
-        https://lists.isc.org/mailman/listinfo/bind10-users
-        https://lists.isc.org/mailman/listinfo/bind10-dev
-
-Bugs may be reported as tickets via the developers website:
-
-        http://bind10.isc.org/
-
-See the Guide for detailed installation directions.
-
-BUILDING
-
-We recommend using the Boost libraries as it provides a safer TCP
-implementation in BIND 10.
-
-Simple build instructions:
-
-  ./configure
-  make
-
-If building from Subversion repository, run:
-
-  autoreconf --install
-
-before running ./configure
-
-Requires autoconf 2.59 or newer.
-
-Use automake-1.11 or better for working Python 3.1 tests.
-Alternatively, you could manually specify an absolute path to python
-executable by the --with-pythonpath option of the configure script,
-e.g.,
-% ./configure --with-pythonpath=/usr/local/bin/python3.1
-
-Operating-System specific tips:
-
-- FreeBSD
-  You may need to install a python binding for sqlite3 by hand.  A
-  sample procedure is as follows:
-  - add the following to /etc/make.conf
-    PYTHON_VERSION=3.1
-  - build and install the python binding from ports, assuming the top
-    directory of the ports system is /usr/ports
-  % cd /usr/ports/databases/py-sqlite3/
-  % make
-  % sudo make install
-
-INSTALLATION
-
-Install with:
-
-  make install
-
-TESTS
-
-The tests use the googletests framework for C++. It is available
-from http://code.google.com/p/googletest/.  To enable the tests,
-configure BIND 10 with: 
-
-  ./configure --with-gtest
-
-Then run "make check" to run these tests.
-
-TEST COVERAGE
-
-The code coverage report for the C++ tests uses LCOV. It is available
-from http://ltp.sourceforge.net/. To generate your own HTML report,
-first configure BIND 10 with:
- 
-  ./configure --with-lcov
-
-Doing code coverage tests:
-
-  make coverage
-	Does the following:
-
-  make clean-coverage
-	Zeroes the lcov code coverage counters and removes the coverage HTML.
-
-  make perform-coverage
-	Runs the C++ tests (using googletests framework).
-
-  make report-coverage
-	Generates the coverage HTML, excluding some unrelated headers.
-	The HTML reports are placed in a directory called coverage/.
-
-DEVELOPERS
-
-The generated run_*.sh scripts available in the src/bin directories
-are for running the code using the source tree.
-
-RUNNING
-
-You can start the BIND 10 processes by running bind10 which is
-installed to the sbin directory under the installation prefix.
-The default location is:
-
-  /usr/local/sbin/bind10
-
-For development work, you can also run the bind10 services from the
-source tree:
-
- ./src/bin/bind10/run_bind10.sh 
-
-(Which will use the modules and configurations also from the source
-tree.)
-
-The server will listen on port 5300 for DNS requests.
-
-CONFIGURATION
-
-Commands can be given through the bindctl tool.
-
-The server must be running for bindctl to work.
-
-The following configuration commands are available
-
-help: show the different command modules
-<module> help: show the commands for module
-<module> <command> help: show info for the command
-
-
-config show [identifier]: Show the currently set values. If no identifier is
-                          given, the current location is used. If a config
-                          option is a list or a map, the value is not
-                          shown directly, but must be requested separately.
-config go [identifier]:   Go to the given location within the configuration.
-config set [identifier] <value>: Set a configuration value.
-config unset [identifier]: Remove a value (reverts to default if the option
-                           is mandatory).
-config add [identifier] <value>: add a value to a list
-config remove [identifier] <value>: remove a value from a list 
-config revert:	Revert all changes that have not been committed
-config commit: Commit all changes
-config diff: Show the changes that have not been committed yet
-
-EXAMPLE SESSION
-
-~> bindctl
-["login success "] login as root
-> help
-BindCtl, verstion 0.1
-usage: <module name> <command name> [param1 = value1 [, param2 = value2]]
-Type Tab character to get the hint of module/command/paramters.
-Type "help(? h)" for help on bindctl.
-Type "<module_name> help" for help on the specific module.
-Type "<module_name> <command_name> help" for help on the specific command.
-
-Available module names: 
-	 help 	Get help for bindctl
-	 config 	Configuration commands
-	 Xfrin 	same here
-	 Auth 	same here
-	 Boss 	same here
-> config help
-Module  config 	Configuration commands 
-Available commands:
-	 help 	(Get help for module)
-	 show 	(Show configuration)
-	 add 	(Add entry to configuration list)
-	 remove 	(Remove entry from configuration list)
-	 set 	(Set a configuration value)
-	 unset 	(Unset a configuration value)
-	 diff 	(Show all local changes)
-	 revert 	(Revert all local changes)
-	 commit 	(Commit all local changes)
-	 go 	(Go to a specific configuration part)
-> config show
-Xfrin/	module	
-Auth/	module	
-Boss/	module	
-> config show Xfrin
-transfers_in:	10	integer	
-> config go Auth
-/Auth> config show
-database_file:	None	string	
-/Auth> config set database_file /tmp/bind10_zones.db
-/Auth> config commit
-/Auth> config go /
-> config show Auth/
-database_file:	/tmp/bind10_zones.db	string	
-> config diff
-{}
-> config set Auth/foobar
-Error: missing identifier or value
-> config set Auth/database_file foobar
-> config diff
-{'Auth': {'database_file': 'foobar'}}
-> config revert
-> config diff
-{}
-> quit

+ 0 - 498
feng-authnotify/configure.ac

@@ -1,498 +0,0 @@
-#                                               -*- Autoconf -*-
-# Process this file with autoconf to produce a configure script.
-
-AC_PREREQ([2.59])
-AC_INIT(bind10-devel, 20100318, bind10-dev@isc.org)
-AC_CONFIG_SRCDIR(README)
-AM_INIT_AUTOMAKE
-AC_CONFIG_HEADERS([config.h])
-
-# Checks for programs.
-AC_PROG_CXX
-AC_PROG_CC
-AC_PROG_LIBTOOL
-
-# Use C++ language
-AC_LANG_CPLUSPLUS
-
-m4_define([_AM_PYTHON_INTERPRETER_LIST], [python python3 python3.1])
-AC_ARG_WITH([pythonpath],
-AC_HELP_STRING([--with-pythonpath=PATH],
-  [specify an absolute path to python executable when automatic version check (incorrectly) fails]),
-  [python_path="$withval"], [python_path="auto"])
-if test "$python_path" = auto; then
-	AM_PATH_PYTHON([3.1])
-else
-	# Older versions of automake can't handle python3 well.  This is an
-	# in-house workaround for them.
-	PYTHON=$python_path
-	AC_SUBST(PYTHON)
-	PYTHON_PREFIX='${prefix}'
-	AC_SUBST(PYTHON_PREFIX)
-	PYTHON_EXEC_PREFIX='$(exec_prefix)'
-	AC_SUBST(PYTHON_EXEC_PREFIX)
-	PYTHON_VERSION=[`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"`]
-	if test `echo "$PYTHON_VERSION >= 3.1" | bc` != 1 ; then
-		AC_MSG_ERROR(["Python version too old: $PYTHON_VERSION, need 3.1 or higher"])
-	fi
-	AC_SUBST(PYTHON_VERSION)
-	PYTHON_PLATFORM=`$PYTHON -c "import sys; print(sys.platform)"`
-	AC_SUBST(PYTHON_PLATFORM)
-	pythondir='${prefix}/lib/python'$PYTHON_VERSION'/site-packages'
-	AC_SUBST(pythondir)
-	pkgpythondir='${pythondir}/'$PACKAGE
-	AC_SUBST(pkgpythondir)
-	pyexecdir='${exec_prefix}/lib/python'$PYTHON_VERSION'/site-packages'
-	AC_SUBST(pyexecdir)
-	pkgpyexecdir='${pyexecdir}/'$PACKAGE
-	AC_SUBST(pkgpyexecdir)
-fi
-
-# Check for python development environments
-if test -x ${PYTHON}-config; then
-	PYTHON_INCLUDES=`${PYTHON}-config --includes`
-
-	for flag in `${PYTHON}-config --ldflags`; do
-		# add any '-L..." flags to PYTHON_LDFLAGS
-		flag=`echo $flag | sed -ne 's/^\(\-L.*\)$/\1/p'`
-		if test "X${flag}" != X; then
-			PYTHON_LDFLAGS="$PYTHON_LDFLAGS ${flag}"
-		fi
-	done
-	# on some platforms, ${PYTHON}-config --ldflags doesn't provide a -L
-	# option while having the library under a non trivial directory.
-	# as a workaround we try the "lib" sub directory under the common
-	# prefix for this python.
-	if test -z "${PYTHON_LDFLAGS}"; then
-		PYTHON_LDFLAGS="-L`${PYTHON}-config --prefix`/lib"
-	fi
-else
-	if test "X$PYTHON_INCLUDES" = X -o "X$PYTHON_LDFLAGS" = X; then
-		AC_MSG_WARN([${PYTHON}-config does not exist or is not executable, so we could not detect python development environment.  Your system may require an additional package (e.g. "python3-dev").  Alternatively, if you are sure you have python headers and libraries, define PYTHON_INCLUDES and PYTHON_LDFLAGS and run this script.])
-	fi
-fi
-AC_SUBST(PYTHON_INCLUDES)
-AC_SUBST(PYTHON_LDFLAGS)
-
-# Check for python library (not absolutely mandatory, but needed for
-# Boost.Python when we use it.  See below.)
-LDFLAGS_SAVED="$LDFLAGS"
-LDFLAGS="$LDFLAGS $PYTHON_LDFLAGS"
-python_bin="python${PYTHON_VERSION}"
-AC_CHECK_LIB($python_bin, main, python_lib=$python_bin, python_lib=no)
-if test $python_lib != "no"; then
-	PYTHON_LIB="-l$python_lib"
-fi
-AC_SUBST(PYTHON_LIB)
-
-# TODO: check for _sqlite3.py module
-
-# default compiler warning settings
-if test "X$GCC" = "Xyes"; then
-CXXFLAGS="$CXXFLAGS -g -Wall -Wextra -Wwrite-strings -Woverloaded-virtual -Wno-sign-compare"
-UNUSED_PARAM_ATTRIBUTE='__attribute__((unused))'
-
-# Certain versions of gcc (g++) have a bug that incorrectly warns about
-# the use of anonymous name spaces even if they're closed in a single
-# translation unit.  For these versions we have to disable -Werror.
-werror_ok=0
-CXXFLAGS_SAVED="$CXXFLAGS"
-CXXFLAGS="$CXXFLAGS -Werror"
-AC_MSG_CHECKING(for in-TU anonymous namespace breakage)
-AC_TRY_COMPILE([namespace { class Foo {}; }
-namespace isc {class Bar {Foo foo_;};} ],,
-	[AC_MSG_RESULT(no)
-	 werror_ok=1],
-	[AC_MSG_RESULT(yes)])
-CXXFLAGS="$CXXFLAGS_SAVED"
-fi
-AC_DEFINE_UNQUOTED(UNUSED_PARAM, $UNUSED_PARAM_ATTRIBUTE, Define to compiler keyword indicating a function argument is intentionally unused)
-AM_CONDITIONAL(GCC_WERROR_OK, test $werror_ok = 1)
-
-# produce PIC unless we disable shared libraries. need this for python bindings.
-if test $enable_shared != "no" -a "X$GCC" = "Xyes"; then
-   CXXFLAGS="$CXXFLAGS -fPIC"
-fi
-
-# Checks for libraries.
-
-AC_SEARCH_LIBS(inet_pton, [nsl])
-AC_SEARCH_LIBS(recvfrom, [socket])
-
-# Checks for header files.
-
-# Checks for typedefs, structures, and compiler characteristics.
-AC_HEADER_STDBOOL
-AC_TYPE_SIZE_T
-
-AC_MSG_CHECKING(for sa_len in struct sockaddr)
-AC_TRY_COMPILE([
-#include <sys/types.h>
-#include <sys/socket.h>],
-[struct sockaddr sa; sa.sa_len = 0; return (0);],
-        [AC_MSG_RESULT(yes)
-        AC_DEFINE(HAVE_SIN_LEN, 1, Define to 1 if sockaddr_in has a sin_len member)],
-        AC_MSG_RESULT(no))
-
-AC_ARG_WITH(lcov,
-[  --with-lcov[=PROGRAM]         enable gtest and coverage target using the specified lcov], lcov="$withval", lcov="no")
-
-AC_ARG_WITH(gtest,
-[  --with-gtest=PATH       specify a path to gtest header files (PATH/include) and library (PATH/lib)],
-    gtest_path="$withval", gtest_path="no")
-
-
-USE_LCOV="no"
-if test "$lcov" != "no"; then
-	# force gtest if not set
-	if test "$gtest_path" = "no"; then
-#		AC_MSG_ERROR("lcov needs gtest for test coverage report")
-		AC_MSG_NOTICE([gtest support is now enabled, because used by coverage tests])
-		gtest_path="yes"
-	fi
-	if test "$lcov" != "yes"; then
-		LCOV=$lcov
-	else
-		AC_PATH_PROG([LCOV], [lcov])
-	fi
-	if test -x "${LCOV}"; then
-		USE_LCOV="yes"
-	else
-		AC_MSG_ERROR([Cannot find lcov.])
-	fi
-	# is genhtml always in the same directory?
-	GENHTML=`echo "$LCOV" | sed s/lcov$/genhtml/`
-	if test ! -x $GENHTML; then
-		AC_MSG_ERROR([genhtml not found, needed for lcov])
-	fi
-	# GCC specific?
-	CXXFLAGS="$CXXFLAGS -fprofile-arcs -ftest-coverage"
-	LIBS=" $LIBS -lgcov"
-	AC_SUBST(CPPFLAGS)
-	AC_SUBST(LIBS)
-	AC_SUBST(LCOV)
-	AC_SUBST(GENHTML)
-fi
-AC_SUBST(USE_LCOV)
-
-AC_ARG_WITH([boost-include],
-  AC_HELP_STRING([--with-boost-include=PATH],
-    [specify exact directory for Boost headers]),
-    [boost_include_path="$withval"])
-if test "${boost_include_path}" ; then
-	BOOST_INCLUDES="-I${boost_include_path}"
-	CPPFLAGS="$CPPFLAGS $BOOST_INCLUDES"
-fi
-AC_SUBST(BOOST_INCLUDES)
-
-AC_ARG_WITH([boost-lib],
-AC_HELP_STRING([--with-boost-lib=PATH],
-  [specify exact directory for Boost libraries]),
-  [if test "$withval" != "yes" -a "$withval" != "no"; then
-   BOOST_LDFLAGS="-L$withval"
-   fi])
-AC_SUBST(BOOST_LDFLAGS)
-
-# Check availability of the Boost System library
-
-AC_MSG_CHECKING([for boost::system library])
-AC_ARG_WITH([boost-system],
-AC_HELP_STRING([--with-boost-system],
-  [specify whether to use the boost system library]),
-  [with_boost_system="$withval"], [with_boost_system="auto"])
-
-if test "$with_boost_system" != "no"; then
-	LDFLAGS_SAVED="$LDFLAGS"
-	LIBS_SAVED="$LIBS"
-	CPPFLAGS_SAVED="$CPPFLAGS"
-	CPPFLAGS="$CPPFLAGS -Iext"
-
-	for BOOST_TRY_LIB in boost_system boost_system-mt; do
-		LDFLAGS="$LDFLAGS_SAVED ${BOOST_LDFLAGS}"
-		LIBS="$LIBS_SAVED -l${BOOST_TRY_LIB}"
-		AC_TRY_LINK([#include <boost/system/error_code.hpp>],
-			[ boost::system::error_code error_code;
-			std::string message(error_code.message());
-			return 0; ],
-			[ AC_MSG_RESULT(yes)
-			BOOST_SYSTEM_LIB="-l${BOOST_TRY_LIB}"
-			],[])
-		if test "X${BOOST_SYSTEM_LIB}" != X; then
-        		break
-		fi
-	done
-
-	LDFLAGS="$LDFLAGS_SAVED"
-	CPPFLAGS="$CPPFLAGS_SAVED"
-	LIBS="$LIBS_SAVED"
-fi
-
-if test "X${BOOST_SYSTEM_LIB}" = X; then
-	AC_MSG_RESULT(no)
-	if test "$with_boost_system" = "yes"; then
-	   AC_MSG_ERROR([boost system library is requested but not found])
-	fi
-else
-	AC_DEFINE(HAVE_BOOST_SYSTEM, 1, Define to 1 if boost system library is available)
-fi
-
-AM_CONDITIONAL(HAVE_BOOST_SYSTEM, test "X${BOOST_SYSTEM_LIB}" != X)
-AC_SUBST(BOOST_SYSTEM_LIB)
-
-# Check availability of the Boost Python library
-
-AC_MSG_CHECKING([for boost::python library])
-AC_ARG_WITH([boost-python],
-AC_HELP_STRING([--with-boost-python],
-  [specify whether to use the boost python library]),
-  [with_boost_python="$withval"], [with_boost_python="auto"])
-if test "$with_boost_python" != "no"; then
-	if test "$with_boost_python" != "auto" -a "X$PYTHON_LIB" = X; then
-		AC_MSG_ERROR([Boost.Python requested but python library is not available])
-	fi
-	LDFLAGS_SAVED="$LDFLAGS"
-	LIBS_SAVED="$LIBS"
-	CPPFLAGS_SAVED="$CPPFLAGS"
-	CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES"
-
-	for BOOST_TRY_LIB in boost_python boost_python-mt; do
-		LDFLAGS="$LDFLAGS_SAVED ${BOOST_LDFLAGS} ${PYTHON_LDFLAGS}"
-		LIBS="$LIBS_SAVED -l${BOOST_TRY_LIB} ${PYTHON_LIB}"
-		AC_TRY_LINK([#include <boost/python/module.hpp>
-	      using namespace boost::python;
-	      BOOST_PYTHON_MODULE(test) { throw "Boost::Python test."; }],
-			[ return 0; ],
-			[ AC_MSG_RESULT(yes)
-			BOOST_PYTHON_LIB="-l${BOOST_TRY_LIB}"
-			],[])
-		if test "X${BOOST_PYTHON_LIB}" != X; then
-        		break
-		fi
-	done
-
-	LDFLAGS="$LDFLAGS_SAVED"
-	CPPFLAGS="$CPPFLAGS_SAVED"
-	LIBS="$LIBS_SAVED"
-fi
-
-if test "X${BOOST_PYTHON_LIB}" = X; then
-	AC_MSG_RESULT(no)
-	if test "$with_boost_python" = "yes"; then
-	   AC_MSG_ERROR([boost python library is requested but not found])
-	fi
-else
-	AC_DEFINE(HAVE_BOOST_PYTHON, 1, Define to 1 if boost python library is available)
-fi
-
-AM_CONDITIONAL(HAVE_BOOST_PYTHON, test "X${BOOST_PYTHON_LIB}" != X)
-AC_SUBST(BOOST_PYTHON_LIB)
-
-#
-# Check availability of gtest, which will be used for unit tests.
-#
-if test "$gtest_path" != "no"
-then
-	if test "$gtest_path" != "yes"; then
-		GTEST_PATHS=$gtest_path
-		if test -x "${gtest_path}/bin/gtest-config" ; then
-			GTEST_CONFIG="${gtest_path}/bin/gtest-config"
-		fi
-	else
-		AC_PATH_PROG([GTEST_CONFIG], [gtest-config])
-	fi
-	if test -x "${GTEST_CONFIG}" ; then :
-		# using cppflags instead of cxxflags
-		GTEST_INCLUDES=`${GTEST_CONFIG} --cppflags`
-		GTEST_LDFLAGS=`${GTEST_CONFIG} --ldflags`
-		GTEST_LDADD=`${GTEST_CONFIG} --libs`
-		GTEST_FOUND="true"
-	else
-		AC_MSG_WARN([Unable to locate Google Test gtest-config.])
-		if test -z "${GTEST_PATHS}" ; then
-			GTEST_PATHS="/usr /usr/local"
-		fi
-		GTEST_FOUND="false"
-	fi
-	if test "${GTEST_FOUND}" != "true"; then
-		GTEST_FOUND="false"
-		for dir in $GTEST_PATHS; do
-			if test -f "$dir/include/gtest/gtest.h"; then
-				GTEST_INCLUDES="-I$dir/include"
-				GTEST_LDFLAGS="-L$dir/lib"
-				GTEST_LDADD="-lgtest"
-				GTEST_FOUND="true"
-				break
-			fi
-		done
-	fi
-	if test "${GTEST_FOUND}" != "true"; then
-		AC_MSG_ERROR([Cannot find gtest in: $GTEST_PATHS])
-	fi
-else
-	GTEST_INCLUDES=
-	GTEST_LDFLAGS=
-	GTEST_LDADD=
-fi
-AM_CONDITIONAL(HAVE_GTEST, test $gtest_path != "no")
-AC_SUBST(GTEST_INCLUDES)
-AC_SUBST(GTEST_LDFLAGS)
-AC_SUBST(GTEST_LDADD)
-
-PKG_CHECK_MODULES(SQLITE, sqlite3 >= 3.3.9, enable_features="$enable_features SQLite3")
-
-# Check for headers from required devel kits.
-# boost/shared_ptr.hpp is in ext in svn but not in tarball.
-CPPFLAGS_SAVED=$CPPFLAGS
-if test "X$BOOST_INCLUDES" = "X"; then
-	# abs_top_srcdir not defined yet
-	# so this is only useful to check.  We'll replace it after the check.
-	CPPFLAGS="$CPPFLAGS -Iext"
-fi
-AC_CHECK_HEADERS([boost/shared_ptr.hpp boost/foreach.hpp],,
-  AC_MSG_ERROR([Missing required header files.]))
-CPPFLAGS=$CPPFLAGS_SAVED
-if test "X$BOOST_INCLUDES" = "X"; then
-	CPPFLAGS="$CPPFLAGS -I\$(top_srcdir)/ext"
-fi
-
-AC_ARG_ENABLE(man, [AC_HELP_STRING([--enable-man],
-  [regenerate man pages [default=no]])] ,enable_man=yes, enable_man=no)
-
-AM_CONDITIONAL(ENABLE_MAN, test x$enable_man != xno)
-
-AC_ARG_ENABLE(install-configurations,
-  [AC_HELP_STRING([--disable-install-configurations],
-  [do not install configuration])], install_configurations=$enableval, install_configurations=yes)
-
-AM_CONDITIONAL(INSTALL_CONFIGURATIONS, test x$install_configurations = xyes || test x$install_configurations = xtrue)
-
-AC_CONFIG_FILES([Makefile
-                 src/Makefile
-                 src/bin/Makefile
-                 src/bin/bind10/Makefile
-                 src/bin/bind10/tests/Makefile
-                 src/bin/cmdctl/Makefile
-                 src/bin/cmdctl/tests/Makefile
-                 src/bin/bindctl/Makefile
-                 src/bin/bindctl/tests/Makefile
-                 src/bin/cfgmgr/Makefile
-                 src/bin/host/Makefile
-                 src/bin/loadzone/Makefile
-                 src/bin/msgq/Makefile
-                 src/bin/msgq/tests/Makefile
-                 src/bin/auth/Makefile
-                 src/bin/auth/tests/Makefile
-                 src/bin/xfrin/Makefile
-                 src/bin/xfrin/tests/Makefile
-                 src/bin/xfrout/Makefile
-                 src/bin/xfrout/tests/Makefile
-                 src/bin/usermgr/Makefile
-                 src/lib/Makefile
-                 src/lib/cc/Makefile
-                 src/lib/python/Makefile
-                 src/lib/python/isc/Makefile
-                 src/lib/python/isc/datasrc/Makefile
-                 src/lib/python/isc/cc/Makefile
-                 src/lib/python/isc/cc/tests/Makefile
-                 src/lib/python/isc/config/Makefile
-                 src/lib/python/isc/config/tests/Makefile
-                 src/lib/config/Makefile
-                 src/lib/config/tests/Makefile
-                 src/lib/dns/Makefile
-                 src/lib/dns/tests/Makefile
-                 src/lib/exceptions/Makefile
-                 src/lib/datasrc/Makefile
-                 src/lib/datasrc/tests/Makefile
-                 src/lib/xfr/Makefile
-               ])
-AC_OUTPUT([src/bin/cfgmgr/b10-cfgmgr.py
-           src/bin/cmdctl/cmdctl.py
-           src/bin/cmdctl/run_b10-cmdctl.sh
-           src/bin/cmdctl/tests/cmdctl_test
-           src/bin/xfrin/tests/xfrin_test
-           src/bin/xfrin/xfrin.py
-           src/bin/xfrin/xfrin.spec.pre
-           src/bin/xfrin/run_b10-xfrin.sh
-           src/bin/xfrout/xfrout.py
-           src/bin/xfrout/xfrout.spec.pre
-           src/bin/xfrout/tests/xfrout_test
-           src/bin/xfrout/run_b10-xfrout.sh
-           src/bin/bind10/bind10.py
-           src/bin/bind10/tests/bind10_test
-           src/bin/bind10/run_bind10.sh
-           src/bin/bindctl/run_bindctl.sh
-           src/bin/bindctl/bindctl-source.py
-           src/bin/bindctl/tests/bindctl_test
-           src/bin/loadzone/run_loadzone.sh
-           src/bin/loadzone/b10-loadzone.py
-           src/bin/usermgr/run_b10-cmdctl-usermgr.sh
-           src/bin/usermgr/b10-cmdctl-usermgr.py
-           src/bin/msgq/msgq.py
-           src/bin/msgq/tests/msgq_test
-           src/bin/msgq/run_msgq.sh
-           src/bin/auth/auth.spec.pre
-           src/bin/auth/spec_config.h.pre
-           src/lib/config/tests/data_def_unittests_config.h
-           src/lib/python/isc/config/tests/config_test
-           src/lib/python/isc/cc/tests/cc_test
-           src/lib/dns/gen-rdatacode.py
-           src/lib/dns/tests/testdata/gen-wiredata.py
-          ], [
-           chmod +x src/bin/cmdctl/run_b10-cmdctl.sh
-           chmod +x src/bin/xfrin/run_b10-xfrin.sh
-           chmod +x src/bin/xfrout/run_b10-xfrout.sh
-           chmod +x src/bin/bind10/run_bind10.sh
-           chmod +x src/bin/cmdctl/tests/cmdctl_test
-           chmod +x src/bin/xfrin/tests/xfrin_test
-           chmod +x src/bin/xfrout/tests/xfrout_test
-           chmod +x src/bin/bindctl/tests/bindctl_test
-           chmod +x src/bin/bindctl/run_bindctl.sh
-           chmod +x src/bin/loadzone/run_loadzone.sh
-           chmod +x src/bin/usermgr/run_b10-cmdctl-usermgr.sh
-           chmod +x src/bin/msgq/run_msgq.sh
-           chmod +x src/bin/msgq/tests/msgq_test
-           chmod +x src/lib/dns/gen-rdatacode.py
-           chmod +x src/lib/dns/tests/testdata/gen-wiredata.py
-          ])
-AC_OUTPUT
-
-dnl Print the results
-dnl
-
-cat > config.report << END
-
-     BIND 10 source configure results:
-    -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-
-Package:
-  Name:          $PACKAGE_NAME
-  Version:       $PACKAGE_VERSION
-
-Flags:
-  DEFS:          $DEFS
-  CPPFLAGS:      $CPPFLAGS
-  CFLAGS:        $CFLAGS
-  CXXFLAGS:      $CXXFLAGS
-dnl includes too
-  Boost Python:  $BOOST_PYTHON_LIB
-  Boost System:  $BOOST_SYSTEM_LIB
-  SQLite:	 $SQLITE_CFLAGS
-                 $SQLITE_LIBS
-
-Features:
-  $enable_features
-
-Developer:
-  Google Tests:  $gtest_path
-  Code Coverage: $USE_LCOV
-  Generate Manuals:  $enable_man
-
-END
-
-cat config.report
-cat <<EOF
-
-  Now you can type "make" to build BIND 10
-
-EOF
-

+ 0 - 630
feng-authnotify/depcomp

@@ -1,630 +0,0 @@
-#! /bin/sh
-# depcomp - compile a program generating dependencies as side-effects
-
-scriptversion=2009-04-28.21; # UTC
-
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
-# Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
-
-case $1 in
-  '')
-     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
-     exit 1;
-     ;;
-  -h | --h*)
-    cat <<\EOF
-Usage: depcomp [--help] [--version] PROGRAM [ARGS]
-
-Run PROGRAMS ARGS to compile a file, generating dependencies
-as side-effects.
-
-Environment variables:
-  depmode     Dependency tracking mode.
-  source      Source file read by `PROGRAMS ARGS'.
-  object      Object file output by `PROGRAMS ARGS'.
-  DEPDIR      directory where to store dependencies.
-  depfile     Dependency file to output.
-  tmpdepfile  Temporary file to use when outputing dependencies.
-  libtool     Whether libtool is used (yes/no).
-
-Report bugs to <bug-automake@gnu.org>.
-EOF
-    exit $?
-    ;;
-  -v | --v*)
-    echo "depcomp $scriptversion"
-    exit $?
-    ;;
-esac
-
-if test -z "$depmode" || test -z "$source" || test -z "$object"; then
-  echo "depcomp: Variables source, object and depmode must be set" 1>&2
-  exit 1
-fi
-
-# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
-depfile=${depfile-`echo "$object" |
-  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
-tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
-
-rm -f "$tmpdepfile"
-
-# Some modes work just like other modes, but use different flags.  We
-# parameterize here, but still list the modes in the big case below,
-# to make depend.m4 easier to write.  Note that we *cannot* use a case
-# here, because this file can only contain one case statement.
-if test "$depmode" = hp; then
-  # HP compiler uses -M and no extra arg.
-  gccflag=-M
-  depmode=gcc
-fi
-
-if test "$depmode" = dashXmstdout; then
-   # This is just like dashmstdout with a different argument.
-   dashmflag=-xM
-   depmode=dashmstdout
-fi
-
-cygpath_u="cygpath -u -f -"
-if test "$depmode" = msvcmsys; then
-   # This is just like msvisualcpp but w/o cygpath translation.
-   # Just convert the backslash-escaped backslashes to single forward
-   # slashes to satisfy depend.m4
-   cygpath_u="sed s,\\\\\\\\,/,g"
-   depmode=msvisualcpp
-fi
-
-case "$depmode" in
-gcc3)
-## gcc 3 implements dependency tracking that does exactly what
-## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
-## it if -MD -MP comes after the -MF stuff.  Hmm.
-## Unfortunately, FreeBSD c89 acceptance of flags depends upon
-## the command line argument order; so add the flags where they
-## appear in depend2.am.  Note that the slowdown incurred here
-## affects only configure: in makefiles, %FASTDEP% shortcuts this.
-  for arg
-  do
-    case $arg in
-    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
-    *)  set fnord "$@" "$arg" ;;
-    esac
-    shift # fnord
-    shift # $arg
-  done
-  "$@"
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  mv "$tmpdepfile" "$depfile"
-  ;;
-
-gcc)
-## There are various ways to get dependency output from gcc.  Here's
-## why we pick this rather obscure method:
-## - Don't want to use -MD because we'd like the dependencies to end
-##   up in a subdir.  Having to rename by hand is ugly.
-##   (We might end up doing this anyway to support other compilers.)
-## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
-##   -MM, not -M (despite what the docs say).
-## - Using -M directly means running the compiler twice (even worse
-##   than renaming).
-  if test -z "$gccflag"; then
-    gccflag=-MD,
-  fi
-  "$@" -Wp,"$gccflag$tmpdepfile"
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
-## The second -e expression handles DOS-style file names with drive letters.
-  sed -e 's/^[^:]*: / /' \
-      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
-## This next piece of magic avoids the `deleted header file' problem.
-## The problem is that when a header file which appears in a .P file
-## is deleted, the dependency causes make to die (because there is
-## typically no way to rebuild the header).  We avoid this by adding
-## dummy dependencies for each header file.  Too bad gcc doesn't do
-## this for us directly.
-  tr ' ' '
-' < "$tmpdepfile" |
-## Some versions of gcc put a space before the `:'.  On the theory
-## that the space means something, we add a space to the output as
-## well.
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-hp)
-  # This case exists only to let depend.m4 do its work.  It works by
-  # looking at the text of this script.  This case will never be run,
-  # since it is checked for above.
-  exit 1
-  ;;
-
-sgi)
-  if test "$libtool" = yes; then
-    "$@" "-Wp,-MDupdate,$tmpdepfile"
-  else
-    "$@" -MDupdate "$tmpdepfile"
-  fi
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-
-  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
-    echo "$object : \\" > "$depfile"
-
-    # Clip off the initial element (the dependent).  Don't try to be
-    # clever and replace this with sed code, as IRIX sed won't handle
-    # lines with more than a fixed number of characters (4096 in
-    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
-    # the IRIX cc adds comments like `#:fec' to the end of the
-    # dependency line.
-    tr ' ' '
-' < "$tmpdepfile" \
-    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
-    tr '
-' ' ' >> "$depfile"
-    echo >> "$depfile"
-
-    # The second pass generates a dummy entry for each header file.
-    tr ' ' '
-' < "$tmpdepfile" \
-   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
-   >> "$depfile"
-  else
-    # The sourcefile does not contain any dependencies, so just
-    # store a dummy comment line, to avoid errors with the Makefile
-    # "include basename.Plo" scheme.
-    echo "#dummy" > "$depfile"
-  fi
-  rm -f "$tmpdepfile"
-  ;;
-
-aix)
-  # The C for AIX Compiler uses -M and outputs the dependencies
-  # in a .u file.  In older versions, this file always lives in the
-  # current directory.  Also, the AIX compiler puts `$object:' at the
-  # start of each line; $object doesn't have directory information.
-  # Version 6 uses the directory in both cases.
-  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-  test "x$dir" = "x$object" && dir=
-  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-  if test "$libtool" = yes; then
-    tmpdepfile1=$dir$base.u
-    tmpdepfile2=$base.u
-    tmpdepfile3=$dir.libs/$base.u
-    "$@" -Wc,-M
-  else
-    tmpdepfile1=$dir$base.u
-    tmpdepfile2=$dir$base.u
-    tmpdepfile3=$dir$base.u
-    "$@" -M
-  fi
-  stat=$?
-
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-    exit $stat
-  fi
-
-  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-  do
-    test -f "$tmpdepfile" && break
-  done
-  if test -f "$tmpdepfile"; then
-    # Each line is of the form `foo.o: dependent.h'.
-    # Do two passes, one to just change these to
-    # `$object: dependent.h' and one to simply `dependent.h:'.
-    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
-    # That's a tab and a space in the [].
-    sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
-  else
-    # The sourcefile does not contain any dependencies, so just
-    # store a dummy comment line, to avoid errors with the Makefile
-    # "include basename.Plo" scheme.
-    echo "#dummy" > "$depfile"
-  fi
-  rm -f "$tmpdepfile"
-  ;;
-
-icc)
-  # Intel's C compiler understands `-MD -MF file'.  However on
-  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
-  # ICC 7.0 will fill foo.d with something like
-  #    foo.o: sub/foo.c
-  #    foo.o: sub/foo.h
-  # which is wrong.  We want:
-  #    sub/foo.o: sub/foo.c
-  #    sub/foo.o: sub/foo.h
-  #    sub/foo.c:
-  #    sub/foo.h:
-  # ICC 7.1 will output
-  #    foo.o: sub/foo.c sub/foo.h
-  # and will wrap long lines using \ :
-  #    foo.o: sub/foo.c ... \
-  #     sub/foo.h ... \
-  #     ...
-
-  "$@" -MD -MF "$tmpdepfile"
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-  # Each line is of the form `foo.o: dependent.h',
-  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
-  # Do two passes, one to just change these to
-  # `$object: dependent.h' and one to simply `dependent.h:'.
-  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
-  # Some versions of the HPUX 10.20 sed can't process this invocation
-  # correctly.  Breaking it into two sed invocations is a workaround.
-  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
-    sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-hp2)
-  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
-  # compilers, which have integrated preprocessors.  The correct option
-  # to use with these is +Maked; it writes dependencies to a file named
-  # 'foo.d', which lands next to the object file, wherever that
-  # happens to be.
-  # Much of this is similar to the tru64 case; see comments there.
-  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-  test "x$dir" = "x$object" && dir=
-  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-  if test "$libtool" = yes; then
-    tmpdepfile1=$dir$base.d
-    tmpdepfile2=$dir.libs/$base.d
-    "$@" -Wc,+Maked
-  else
-    tmpdepfile1=$dir$base.d
-    tmpdepfile2=$dir$base.d
-    "$@" +Maked
-  fi
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-     rm -f "$tmpdepfile1" "$tmpdepfile2"
-     exit $stat
-  fi
-
-  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
-  do
-    test -f "$tmpdepfile" && break
-  done
-  if test -f "$tmpdepfile"; then
-    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
-    # Add `dependent.h:' lines.
-    sed -ne '2,${
-	       s/^ *//
-	       s/ \\*$//
-	       s/$/:/
-	       p
-	     }' "$tmpdepfile" >> "$depfile"
-  else
-    echo "#dummy" > "$depfile"
-  fi
-  rm -f "$tmpdepfile" "$tmpdepfile2"
-  ;;
-
-tru64)
-   # The Tru64 compiler uses -MD to generate dependencies as a side
-   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
-   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
-   # dependencies in `foo.d' instead, so we check for that too.
-   # Subdirectories are respected.
-   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-   test "x$dir" = "x$object" && dir=
-   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-
-   if test "$libtool" = yes; then
-      # With Tru64 cc, shared objects can also be used to make a
-      # static library.  This mechanism is used in libtool 1.4 series to
-      # handle both shared and static libraries in a single compilation.
-      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
-      #
-      # With libtool 1.5 this exception was removed, and libtool now
-      # generates 2 separate objects for the 2 libraries.  These two
-      # compilations output dependencies in $dir.libs/$base.o.d and
-      # in $dir$base.o.d.  We have to check for both files, because
-      # one of the two compilations can be disabled.  We should prefer
-      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
-      # automatically cleaned when .libs/ is deleted, while ignoring
-      # the former would cause a distcleancheck panic.
-      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
-      tmpdepfile2=$dir$base.o.d          # libtool 1.5
-      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
-      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
-      "$@" -Wc,-MD
-   else
-      tmpdepfile1=$dir$base.o.d
-      tmpdepfile2=$dir$base.d
-      tmpdepfile3=$dir$base.d
-      tmpdepfile4=$dir$base.d
-      "$@" -MD
-   fi
-
-   stat=$?
-   if test $stat -eq 0; then :
-   else
-      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
-      exit $stat
-   fi
-
-   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
-   do
-     test -f "$tmpdepfile" && break
-   done
-   if test -f "$tmpdepfile"; then
-      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
-      # That's a tab and a space in the [].
-      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
-   else
-      echo "#dummy" > "$depfile"
-   fi
-   rm -f "$tmpdepfile"
-   ;;
-
-#nosideeffect)
-  # This comment above is used by automake to tell side-effect
-  # dependency tracking mechanisms from slower ones.
-
-dashmstdout)
-  # Important note: in order to support this mode, a compiler *must*
-  # always write the preprocessed file to stdout, regardless of -o.
-  "$@" || exit $?
-
-  # Remove the call to Libtool.
-  if test "$libtool" = yes; then
-    while test "X$1" != 'X--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-
-  # Remove `-o $object'.
-  IFS=" "
-  for arg
-  do
-    case $arg in
-    -o)
-      shift
-      ;;
-    $object)
-      shift
-      ;;
-    *)
-      set fnord "$@" "$arg"
-      shift # fnord
-      shift # $arg
-      ;;
-    esac
-  done
-
-  test -z "$dashmflag" && dashmflag=-M
-  # Require at least two characters before searching for `:'
-  # in the target name.  This is to cope with DOS-style filenames:
-  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
-  "$@" $dashmflag |
-    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
-  rm -f "$depfile"
-  cat < "$tmpdepfile" > "$depfile"
-  tr ' ' '
-' < "$tmpdepfile" | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-dashXmstdout)
-  # This case only exists to satisfy depend.m4.  It is never actually
-  # run, as this mode is specially recognized in the preamble.
-  exit 1
-  ;;
-
-makedepend)
-  "$@" || exit $?
-  # Remove any Libtool call
-  if test "$libtool" = yes; then
-    while test "X$1" != 'X--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-  # X makedepend
-  shift
-  cleared=no eat=no
-  for arg
-  do
-    case $cleared in
-    no)
-      set ""; shift
-      cleared=yes ;;
-    esac
-    if test $eat = yes; then
-      eat=no
-      continue
-    fi
-    case "$arg" in
-    -D*|-I*)
-      set fnord "$@" "$arg"; shift ;;
-    # Strip any option that makedepend may not understand.  Remove
-    # the object too, otherwise makedepend will parse it as a source file.
-    -arch)
-      eat=yes ;;
-    -*|$object)
-      ;;
-    *)
-      set fnord "$@" "$arg"; shift ;;
-    esac
-  done
-  obj_suffix=`echo "$object" | sed 's/^.*\././'`
-  touch "$tmpdepfile"
-  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
-  rm -f "$depfile"
-  cat < "$tmpdepfile" > "$depfile"
-  sed '1,2d' "$tmpdepfile" | tr ' ' '
-' | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile" "$tmpdepfile".bak
-  ;;
-
-cpp)
-  # Important note: in order to support this mode, a compiler *must*
-  # always write the preprocessed file to stdout.
-  "$@" || exit $?
-
-  # Remove the call to Libtool.
-  if test "$libtool" = yes; then
-    while test "X$1" != 'X--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-
-  # Remove `-o $object'.
-  IFS=" "
-  for arg
-  do
-    case $arg in
-    -o)
-      shift
-      ;;
-    $object)
-      shift
-      ;;
-    *)
-      set fnord "$@" "$arg"
-      shift # fnord
-      shift # $arg
-      ;;
-    esac
-  done
-
-  "$@" -E |
-    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
-    sed '$ s: \\$::' > "$tmpdepfile"
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  cat < "$tmpdepfile" >> "$depfile"
-  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-msvisualcpp)
-  # Important note: in order to support this mode, a compiler *must*
-  # always write the preprocessed file to stdout.
-  "$@" || exit $?
-
-  # Remove the call to Libtool.
-  if test "$libtool" = yes; then
-    while test "X$1" != 'X--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-
-  IFS=" "
-  for arg
-  do
-    case "$arg" in
-    -o)
-      shift
-      ;;
-    $object)
-      shift
-      ;;
-    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
-	set fnord "$@"
-	shift
-	shift
-	;;
-    *)
-	set fnord "$@" "$arg"
-	shift
-	shift
-	;;
-    esac
-  done
-  "$@" -E 2>/dev/null |
-  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
-  echo "	" >> "$depfile"
-  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-msvcmsys)
-  # This case exists only to let depend.m4 do its work.  It works by
-  # looking at the text of this script.  This case will never be run,
-  # since it is checked for above.
-  exit 1
-  ;;
-
-none)
-  exec "$@"
-  ;;
-
-*)
-  echo "Unknown depmode $depmode" 1>&2
-  exit 1
-  ;;
-esac
-
-exit 0
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:

File diff suppressed because it is too large
+ 0 - 1514
feng-authnotify/doc/Doxyfile


+ 0 - 296
feng-authnotify/doc/design/cc-protocol.txt

@@ -1,296 +0,0 @@
-protocol version 0x536b616e
-
-DATA        0x01
-HASH        0x02
-LIST        0x03
-NULL        0x04
-TYPE_MASK   0x0f
-
-LENGTH_32   0x00
-LENGTH_16   0x10
-LENGTH_8    0x20
-LENGTH_MASK 0xf0
-
-
-MESSAGE ENCODING
-----------------
-
-When decoding, the entire message length must be known.  If this is
-transmitted over a raw stream such as TCP, this is usually encoded
-with a 4-byte length followed by the message itself.  If some other
-wrapping is used (say as part of a different message structure) the
-length of the message must be preserved and included for decoding.
-
-The first 4 bytes of the message is the protocol version encoded
-directly as a 4-byte value.  Immediately following this is a HASH
-element.  The length of the hash element is the remainder of the
-message after subtracting 4 bytes for the protocol version.
-
-This initial HASH is intended to be used by the message routing system
-if one is in use.
-
-
-ITEM TYPES
-----------
-
-There are four basic types encoded in this protocol.  A simple data
-blob (DATA), a tag-value series (HASH), an ordered list (LIST), and
-a NULL type (which is used internally to encode DATA types which are
-empty and can be used to indicate existance without data in a hash.)
-
-Each item can be of any type, so a hash of hashes and hashes of lists
-are typical.
-
-All multi-byte integers which are encoded in binary are in network
-byte order.
-
-
-ITEM ENCODING
--------------
-
-Each item is preceeded by a single byte which describes that item.
-This byte contains the item type and item length encoding:
-
-    Thing             Length    Description
-    ----------------  --------  ------------------------------------
-    TyLen             1 byte    Item type and length encoding
-    Length            variable  Item data blob length
-    Item Data         variable  Item data blob
-
-The TyLen field includes both the item data type and the item's
-length.  The length bytes are encoded depending on the length of data
-portion, and the smallest data encoding type supported should be
-used.  Note that this length compression is used just for data
-compactness.  It is wasteful to encode the most common length (8-bit
-length) as 4 bytes, so this method allows one byte to be used rather
-than 4, three of which are nearly always zero.
-
-
-HASH
-----
-
-This is a tag/value pair where each tag is an opaque unique blob and
-the data elements are of any type.  Hashes are not encoded in any
-specific tag or item order.
-
-The length of the HASH's data area is processed for tag/value pairs
-until the entire area is consumed.  Running out of data prematurely
-indicates an incorrectly encoded message.
-
-The data area consists of repeated items:
-
-    Thing             Length    Description
-    ----------------  --------  ------------------------------------
-    Tag Length       1 byte    The length of the tag.
-    Tag              Variable  The tag name
-    Item             Variable  Encoded item
-
-The Tag Length field is always one byte, which limits the tag name to
-255 bytes maximum.  A tag length of zero is invalid.
-
-
-LIST
-----
-
-A LIST is a list of items encoded and decoded in a specific order.
-The order is chosen entirely by the source curing encoding.
-
-The length of the LIST's data is consumed by the ITEMs it contains.
-Running out of room prematurely indicates an incorrectly encoded
-message.
-
-The data area consists of repeated items:
-
-     Thing           Length    Description
-     --------------  ------    ----------------------------------------
-     Item	     Variable  Encoded item
-
-
-DATA
-----
-
-A DATA item is a simple blob of data.  No further processing of this
-data is performed by this protocol on these elements.
-
-The data blob is the entire data area.  The data area can be 0 or more
-bytes long.
-
-It is typical to encode integers as strings rather than binary
-integers.  However, so long as both sender and recipient agree on the
-format of the data blob itself, any blob encoding may be used.
-
-
-NULL
-----
-
-This data element indicates no data is actually present.  This can be
-used to indicate that a tag is present in a HASH but no data is
-actually at that location, or in a LIST to indicate empty item
-positions.
-
-There is no data portion of this type, and the encoded length is
-ignored and is always zero.
-
-Note that this is different than a DATA element with a zero length.
-
-
-EXAMPLE
--------
-
-This is Ruby syntax, but should be clear enough for anyone to read.
-
-Example data encoding:
-
-{
-  "from" => "sender@host",
-  "to" => "recipient@host",
-  "seq" => 1234,
-  "data" => {
-    "list" => [ 1, 2, nil, "this" ],
-    "description" => "Fun for all",
-  },
-}
-
-
-Wire-format:
-
-In this format, strings are not shown in hex, but are included "like
-this."  Descriptions are written (like this.)
-
-Message Length: 0x64 (100 bytes)
-Protocol Version:  0x53 0x6b 0x61 0x6e
-(remaining length: 96 bytes)
-
-0x04 "from" 0x21 0x0b "sender@host"
-0x02 "to" 0x21 0x0e "recipient@host"
-0x03 "seq" 0x21 0x04 "1234"
-0x04 "data" 0x22
-  0x04 "list" 0x23 
-    0x21 0x01 "1"
-    0x21 0x01 "2"
-    0x04
-    0x21 0x04 "this"
-  0x0b "description" 0x0b "Fun for all"
-
-
-MESSAGE ROUTING
----------------
-
-The message routing daemon uses the top-level hash to contain routing
-instructions and additional control data.  Not all of these are
-required for various control message types; see the individual
-descriptions for more information.
-
-    Tag      Description
-    -------  ----------------------------------------
-    msg      Sender-supplied data
-    from     sender's identity
-    group    Group name this message is being sent to
-    instance Instance in this group
-    repl     if present, this message is a reply.
-    seq	     sequence number, used in replies
-    to	     recipient or "*" for no specific receiver
-    type     "send" for a channel message
-
-
-"type" is a DATA element, which indicates to the message routing
-system what the purpose of this message is.
-
-
-Get Local Name (type "getlname")
---------------------------------
-
-Upon connection, this is the first message to be sent to the control
-daemon.  It will return the local name of this client.  Each
-connection gets its own unique local name, and local names are never
-repeated.  They should be considered opaque strings, in a format
-useful only to the message routing system.  They are used in replies
-or to send to a specific destination.
-
-To request the local name, the only element included is the
-  "type" => "getlname"
-tuple.  The response is also a simple, single tuple:
-  "lname" => "UTF-8 encoded local name blob"
-
-Until this message is sent, no other types of messages may be sent on
-this connection.
-
-
-Regular Group Messages (type "send")
-------------------------------------
-
-When sending a message:
-
-"msg" is the sender supplied data.  It is encoded as per its type.
-It is a required field, but may be the NULL type if not needed.
-In OpenReg, this was another wire format message, stored as an
-ITEM_DATA.  This was done to make it easy to decode the routing
-information without having to decode arbitrary application-supplied
-data, but rather treat this application data as an opaque blob.
-
-"from" is a DATA element, and its value is a UTF-8 encoded sender
-identity.  It MUST be the "local name" supplied by the message
-routing system upon connection.  The message routing system will
-enforce this, but will not add it.  It is a required field.
-
-"group" is a DATA element, and its value is the UTF-8 encoded group
-name this message is being transmitted to.  It is a required field for
-all messages of type "send".
-
-"instance" is a DATA element, and its value is the UTF-8 encoded
-instance name, with "*" meaning all instances.
-
-"repl" is the sequence number being replied to, if this is a reply.
-
-"seq" is a unique identity per client.  That is, the <lname, seq>
-tuple must be unique over the lifetime of the connection, or at least
-over the lifetime of the expected reply duration.
-
-"to" is a DATA element, and its value is a UTF-8 encoded recipient
-identity.  This must be a specific recipient name or "*" to indicate
-"all listeners on this channel."  It is a required field.
-
-When a message of type "send" is received by the client, all the data
-is used as above.  This indicates a message of the given type was
-received.
-
-A client does not see its own transmissions. (XXXMLG Need to check this)
-
-
-Group Subscriptions (type "subscribe")
---------------------------------------
-
-A subscription requires the "group", "instance", and a flag to
-indicate the subscription type ("sybtype").  If instance is "*" the
-instance name will be ignored when decising to forward a message to
-this client or not.
-
-"subtype" is a DATA element, and contains "normal" for normal channel
-subscriptions, "meonly" for only those messages on a channel with the
-recipient specified exactly as the local name, or "promisc" to receive
-all channel messages regardless of other filters.  As its name
-implies, "normal" is for typical subscriptions, and "promisc" is
-intended for channel message debugging.
-
-There is no response to this message.
-
-
-Group Unsubscribe (type "unsubscribe")
--------------------------------
-
-The fields to be included are "group" and "instance" and have the same
-meaning as a "subscribe" message.
-
-There is no response to this message.
-
-
-Statistics (type "stats")
--------------------------
-
-Request statistics from the message router.  No other fields are
-inclued in the request.
-
-The response contains a single element "stats" which is an opaque
-element.  This is used mostly for debugging, and its format is
-specific to the message router.  In general, some method to simply
-dump raw messages would produce something useful during debugging.

+ 0 - 13
feng-authnotify/doc/guide/Makefile

@@ -1,13 +0,0 @@
-#
-# Quick and dirty makefile
-#
-
-bind10-guide.html: bind10-guide.xml
-	xsltproc --novalid --xinclude --nonet \
-		-o bind10-guide.html \
-		--stringparam html.stylesheet bind10-guide.css \
-		http://docbook.sourceforge.net/release/xsl/current/html/docbook.xsl \
-		bind10-guide.xml
-
-clean:
-	rm -f bind10-guide.html

+ 0 - 7
feng-authnotify/doc/guide/STYLEGUIDE

@@ -1,7 +0,0 @@
-This document will cover rules and suggestions for writing
-and editing the BIND 10 guide.
-
-Use alphabetical order for options and configuration syntax
-sorting unless you have a specific reason not to.
-
-TODO: list the docbook tags to be used for specific things here

+ 0 - 40
feng-authnotify/doc/guide/bind10-guide.css

@@ -1,40 +0,0 @@
-body {
-	background-color: #ffffff;
-	color: #333333;
-	font-family: "ArialMT", "Verdana", "Arial", "Helvetica", sans-serif;
-	font-size: 14px;
-	line-height: 18px;
-	margin: 2em;
-}
-
-.command {
-	font-family: "Courier New", "Courier", monospace;
-	font-weight: normal;
-}
-
-.note {
-	background-color: #ddeedd;
-	border: 1px solid #aaccaa;
-	margin: 1em 0 1em 0;
-	padding: 0.5em 1em 0.5em 1em;
-	-moz-border-radius: 10px;
-	-webkit-border-radius: 10px;
-}
-
-.screen {
-	background-color: #ffffee;
-	border: 1px solid #ddddaa;
-	padding: 0.25em 1em 0.25em 1em;
-	margin: 1em 0 1em 0;
-	-moz-border-radius: 10px;
-	-webkit-border-radius: 10px;
-}
-
-h3 {
-	text-decoration: underline;
-}
-
-h4 {
-	text-decoration: underline;
-	font-weight: normal;
-}

File diff suppressed because it is too large
+ 0 - 595
feng-authnotify/doc/guide/bind10-guide.html


File diff suppressed because it is too large
+ 0 - 1303
feng-authnotify/doc/guide/bind10-guide.xml


+ 0 - 47
feng-authnotify/ext/boost/algorithm/minmax.hpp

@@ -1,47 +0,0 @@
-//  (C) Copyright Herve Bronnimann 2004.
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-/*
- Revision history:
-   1 July 2004
-      Split the code into two headers to lessen dependence on
-      Boost.tuple. (Herve)
-   26 June 2004
-      Added the code for the boost minmax library. (Herve)
-*/
-
-#ifndef BOOST_ALGORITHM_MINMAX_HPP
-#define BOOST_ALGORITHM_MINMAX_HPP
-
-/* PROPOSED STANDARD EXTENSIONS:
- *
- * minmax(a, b)
- * Effect: (b<a) ? std::make_pair(b,a) : std::make_pair(a,b);
- *
- * minmax(a, b, comp)
- * Effect: comp(b,a) ? std::make_pair(b,a) : std::make_pair(a,b);
- *
- */
-
-#include <boost/tuple/tuple.hpp> // for using pairs with boost::cref
-#include <boost/ref.hpp>
-
-namespace boost {
-
-  template <typename T>
-  tuple< T const&, T const& >
-  minmax(T const& a, T const& b) {
-    return (b<a) ? make_tuple(cref(b),cref(a)) : make_tuple(cref(a),cref(b));
-  }
-
-  template <typename T, class BinaryPredicate>
-  tuple< T const&, T const& >
-  minmax(T const& a, T const& b, BinaryPredicate comp) {
-    return comp(b,a) ? make_tuple(cref(b),cref(a)) : make_tuple(cref(a),cref(b));
-  }
-
-} // namespace boost
-
-#endif // BOOST_ALGORITHM_MINMAX_HPP

+ 0 - 551
feng-authnotify/ext/boost/algorithm/minmax_element.hpp

@@ -1,551 +0,0 @@
-//  (C) Copyright Herve Bronnimann 2004.
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-/*
- Revision history:
-   1 July 2004
-      Split the code into two headers to lessen dependence on
-      Boost.tuple. (Herve)
-   26 June 2004
-      Added the code for the boost minmax library. (Herve)
-*/
-
-#ifndef BOOST_ALGORITHM_MINMAX_ELEMENT_HPP
-#define BOOST_ALGORITHM_MINMAX_ELEMENT_HPP
-
-/* PROPOSED STANDARD EXTENSIONS:
- *
- * minmax_element(first, last)
- * Effect: std::make_pair( std::min_element(first, last),
- *                         std::max_element(first, last) );
- *
- * minmax_element(first, last, comp)
- * Effect: std::make_pair( std::min_element(first, last, comp),
- *                         std::max_element(first, last, comp) );
- */
-
-#include <utility> // for std::pair and std::make_pair
-
-namespace boost {
-
-  namespace detail {  // for obtaining a uniform version of minmax_element
-    // that compiles with VC++ 6.0 -- avoid the iterator_traits by
-    // having comparison object over iterator, not over dereferenced value
-
-    template <typename Iterator>
-    struct less_over_iter {
-      bool operator()(Iterator const& it1,
-                      Iterator const& it2) const { return *it1 < *it2; }
-    };
-
-    template <typename Iterator, class BinaryPredicate>
-    struct binary_pred_over_iter {
-      explicit binary_pred_over_iter(BinaryPredicate const& p ) : m_p( p ) {}
-      bool operator()(Iterator const& it1,
-                      Iterator const& it2) const { return m_p(*it1, *it2); }
-    private:
-      BinaryPredicate m_p;
-    };
-
-    // common base for the two minmax_element overloads
-
-    template <typename ForwardIter, class Compare >
-    std::pair<ForwardIter,ForwardIter>
-    basic_minmax_element(ForwardIter first, ForwardIter last, Compare comp)
-    {
-      if (first == last)
-        return std::make_pair(last,last);
-
-      ForwardIter min_result = first;
-      ForwardIter max_result = first;
-
-      // if only one element
-      ForwardIter second = first; ++second;
-      if (second == last)
-        return std::make_pair(min_result, max_result);
-
-      // treat first pair separately (only one comparison for first two elements)
-      ForwardIter potential_min_result = last;
-      if (comp(first, second))
-        max_result = second;
-      else {
-        min_result = second;
-        potential_min_result = first;
-      }
-
-      // then each element by pairs, with at most 3 comparisons per pair
-      first = ++second; if (first != last) ++second;
-      while (second != last) {
-        if (comp(first, second)) {
-          if (comp(first, min_result)) {
-            min_result = first;
-            potential_min_result = last;
-          }
-          if (comp(max_result, second))
-            max_result = second;
-        } else {
-          if (comp(second, min_result)) {
-            min_result = second;
-            potential_min_result = first;
-          }
-          if (comp(max_result, first))
-            max_result = first;
-        }
-        first = ++second;
-        if (first != last) ++second;
-      }
-
-      // if odd number of elements, treat last element
-      if (first != last) { // odd number of elements
-        if (comp(first, min_result))
-          min_result = first, potential_min_result = last;
-        else if (comp(max_result, first))
-          max_result = first;
-      }
-
-      // resolve min_result being incorrect with one extra comparison
-      // (in which case potential_min_result is necessarily the correct result)
-      if (potential_min_result != last
-        && !comp(min_result, potential_min_result))
-        min_result = potential_min_result;
-
-      return std::make_pair(min_result,max_result);
-    }
-
-  } // namespace detail
-
-  template <typename ForwardIter>
-  std::pair<ForwardIter,ForwardIter>
-  minmax_element(ForwardIter first, ForwardIter last)
-  {
-    return detail::basic_minmax_element(first, last,
-             detail::less_over_iter<ForwardIter>() );
-  }
-
-  template <typename ForwardIter, class BinaryPredicate>
-  std::pair<ForwardIter,ForwardIter>
-  minmax_element(ForwardIter first, ForwardIter last, BinaryPredicate comp)
-  {
-    return detail::basic_minmax_element(first, last,
-             detail::binary_pred_over_iter<ForwardIter,BinaryPredicate>(comp) );
-  }
-
-}
-
-/* PROPOSED BOOST EXTENSIONS
- * In the description below, [rfirst,rlast) denotes the reversed range
- * of [first,last). Even though the iterator type of first and last may
- * be only a Forward Iterator, it is possible to explain the semantics
- * by assuming that it is a Bidirectional Iterator. In the sequel,
- * reverse(ForwardIterator&) returns the reverse_iterator adaptor.
- * This is not how the functions would be implemented!
- *
- * first_min_element(first, last)
- * Effect: std::min_element(first, last);
- *
- * first_min_element(first, last, comp)
- * Effect: std::min_element(first, last, comp);
- *
- * last_min_element(first, last)
- * Effect: reverse( std::min_element(reverse(last), reverse(first)) );
- *
- * last_min_element(first, last, comp)
- * Effect: reverse( std::min_element(reverse(last), reverse(first), comp) );
- *
- * first_max_element(first, last)
- * Effect: std::max_element(first, last);
- *
- * first_max_element(first, last, comp)
- * Effect: max_element(first, last);
- *
- * last_max_element(first, last)
- * Effect: reverse( std::max_element(reverse(last), reverse(first)) );
- *
- * last_max_element(first, last, comp)
- * Effect: reverse( std::max_element(reverse(last), reverse(first), comp) );
- *
- * first_min_first_max_element(first, last)
- * Effect: std::make_pair( first_min_element(first, last),
- *                         first_max_element(first, last) );
- *
- * first_min_first_max_element(first, last, comp)
- * Effect: std::make_pair( first_min_element(first, last, comp),
- *                         first_max_element(first, last, comp) );
- *
- * first_min_last_max_element(first, last)
- * Effect: std::make_pair( first_min_element(first, last),
- *                         last_max_element(first, last) );
- *
- * first_min_last_max_element(first, last, comp)
- * Effect: std::make_pair( first_min_element(first, last, comp),
- *                         last_max_element(first, last, comp) );
- *
- * last_min_first_max_element(first, last)
- * Effect: std::make_pair( last_min_element(first, last),
- *                         first_max_element(first, last) );
- *
- * last_min_first_max_element(first, last, comp)
- * Effect: std::make_pair( last_min_element(first, last, comp),
- *                         first_max_element(first, last, comp) );
- *
- * last_min_last_max_element(first, last)
- * Effect: std::make_pair( last_min_element(first, last),
- *                         last_max_element(first, last) );
- *
- * last_min_last_max_element(first, last, comp)
- * Effect: std::make_pair( last_min_element(first, last, comp),
- *                         last_max_element(first, last, comp) );
- */
-
-namespace boost {
-
-  // Min_element and max_element variants
-
-  namespace detail {  // common base for the overloads
-
-  template <typename ForwardIter, class BinaryPredicate>
-  ForwardIter
-  basic_first_min_element(ForwardIter first, ForwardIter last,
-                          BinaryPredicate comp)
-  {
-    if (first == last) return last;
-    ForwardIter min_result = first;
-    while (++first != last)
-      if (comp(first, min_result))
-        min_result = first;
-    return min_result;
-  }
-
-  template <typename ForwardIter, class BinaryPredicate>
-  ForwardIter
-  basic_last_min_element(ForwardIter first, ForwardIter last,
-                         BinaryPredicate comp)
-  {
-    if (first == last) return last;
-    ForwardIter min_result = first;
-    while (++first != last)
-      if (!comp(min_result, first))
-        min_result = first;
-    return min_result;
-  }
-
-  template <typename ForwardIter, class BinaryPredicate>
-  ForwardIter
-  basic_first_max_element(ForwardIter first, ForwardIter last,
-                          BinaryPredicate comp)
-  {
-    if (first == last) return last;
-    ForwardIter max_result = first;
-    while (++first != last)
-      if (comp(max_result, first))
-        max_result = first;
-    return max_result;
-  }
-
-  template <typename ForwardIter, class BinaryPredicate>
-  ForwardIter
-  basic_last_max_element(ForwardIter first, ForwardIter last,
-                         BinaryPredicate comp)
-  {
-    if (first == last) return last;
-    ForwardIter max_result = first;
-    while (++first != last)
-      if (!comp(first, max_result))
-        max_result = first;
-    return max_result;
-  }
-
-  } // namespace detail
-
-  template <typename ForwardIter>
-  ForwardIter
-  first_min_element(ForwardIter first, ForwardIter last)
-  {
-    return detail::basic_first_min_element(first, last,
-             detail::less_over_iter<ForwardIter>() );
-  }
-
-  template <typename ForwardIter, class BinaryPredicate>
-  ForwardIter
-  first_min_element(ForwardIter first, ForwardIter last, BinaryPredicate comp)
-  {
-    return detail::basic_first_min_element(first, last,
-             detail::binary_pred_over_iter<ForwardIter,BinaryPredicate>(comp) );
-  }
-
-  template <typename ForwardIter>
-  ForwardIter
-  last_min_element(ForwardIter first, ForwardIter last)
-  {
-    return detail::basic_last_min_element(first, last,
-             detail::less_over_iter<ForwardIter>() );
-  }
-
-  template <typename ForwardIter, class BinaryPredicate>
-  ForwardIter
-  last_min_element(ForwardIter first, ForwardIter last, BinaryPredicate comp)
-  {
-    return detail::basic_last_min_element(first, last,
-             detail::binary_pred_over_iter<ForwardIter,BinaryPredicate>(comp) );
-  }
-
-  template <typename ForwardIter>
-  ForwardIter
-  first_max_element(ForwardIter first, ForwardIter last)
-  {
-    return detail::basic_first_max_element(first, last,
-             detail::less_over_iter<ForwardIter>() );
-  }
-
-  template <typename ForwardIter, class BinaryPredicate>
-  ForwardIter
-  first_max_element(ForwardIter first, ForwardIter last, BinaryPredicate comp)
-  {
-    return detail::basic_first_max_element(first, last,
-             detail::binary_pred_over_iter<ForwardIter,BinaryPredicate>(comp) );
-  }
-
-  template <typename ForwardIter>
-  ForwardIter
-  last_max_element(ForwardIter first, ForwardIter last)
-  {
-    return detail::basic_last_max_element(first, last,
-             detail::less_over_iter<ForwardIter>() );
-  }
-
-  template <typename ForwardIter, class BinaryPredicate>
-  ForwardIter
-  last_max_element(ForwardIter first, ForwardIter last, BinaryPredicate comp)
-  {
-    return detail::basic_last_max_element(first, last,
-             detail::binary_pred_over_iter<ForwardIter,BinaryPredicate>(comp) );
-  }
-
-
-  // Minmax_element variants -- comments removed
-
-  namespace detail {
-
-  template <typename ForwardIter, class BinaryPredicate>
-  std::pair<ForwardIter,ForwardIter>
-  basic_first_min_last_max_element(ForwardIter first, ForwardIter last,
-                                   BinaryPredicate comp)
-  {
-    if (first == last)
-      return std::make_pair(last,last);
-
-    ForwardIter min_result = first;
-    ForwardIter max_result = first;
-
-    ForwardIter second = ++first;
-    if (second == last)
-      return std::make_pair(min_result, max_result);
-
-    if (comp(second, min_result))
-      min_result = second;
-    else
-      max_result = second;
-
-    first = ++second; if (first != last) ++second;
-    while (second != last) {
-      if (!comp(second, first)) {
-        if (comp(first, min_result))
-                 min_result = first;
-        if (!comp(second, max_result))
-          max_result = second;
-      } else {
-        if (comp(second, min_result))
-          min_result = second;
-        if (!comp(first, max_result))
-              max_result = first;
-      }
-      first = ++second; if (first != last) ++second;
-    }
-
-    if (first != last) {
-      if (comp(first, min_result))
-         min_result = first;
-      else if (!comp(first, max_result))
-               max_result = first;
-    }
-
-    return std::make_pair(min_result, max_result);
-  }
-
-  template <typename ForwardIter, class BinaryPredicate>
-  std::pair<ForwardIter,ForwardIter>
-  basic_last_min_first_max_element(ForwardIter first, ForwardIter last,
-                                   BinaryPredicate comp)
-  {
-    if (first == last) return std::make_pair(last,last);
-
-    ForwardIter min_result = first;
-    ForwardIter max_result = first;
-
-    ForwardIter second = ++first;
-    if (second == last)
-      return std::make_pair(min_result, max_result);
-
-    if (comp(max_result, second))
-      max_result = second;
-    else
-      min_result = second;
-
-    first = ++second; if (first != last) ++second;
-    while (second != last)  {
-      if (comp(first, second)) {
-        if (!comp(min_result, first))
-          min_result = first;
-        if (comp(max_result, second))
-          max_result = second;
-      } else {
-        if (!comp(min_result, second))
-          min_result = second;
-        if (comp(max_result, first))
-          max_result = first;
-      }
-      first = ++second; if (first != last) ++second;
-    }
-
-    if (first != last) {
-      if (!comp(min_result, first))
-        min_result = first;
-      else if (comp(max_result, first))
-        max_result = first;
-    }
-
-    return std::make_pair(min_result, max_result);
-  }
-
-  template <typename ForwardIter, class BinaryPredicate>
-  std::pair<ForwardIter,ForwardIter>
-  basic_last_min_last_max_element(ForwardIter first, ForwardIter last,
-                                  BinaryPredicate comp)
-  {
-    if (first == last) return std::make_pair(last,last);
-
-    ForwardIter min_result = first;
-    ForwardIter max_result = first;
-
-    ForwardIter second = first; ++second;
-    if (second == last)
-      return std::make_pair(min_result,max_result);
-
-    ForwardIter potential_max_result = last;
-    if (comp(first, second))
-      max_result = second;
-    else {
-      min_result = second;
-      potential_max_result = second;
-    }
-
-    first = ++second; if (first != last) ++second;
-    while (second != last) {
-      if (comp(first, second)) {
-        if (!comp(min_result, first))
-          min_result = first;
-        if (!comp(second, max_result)) {
-          max_result = second;
-          potential_max_result = last;
-        }
-      } else {
-        if (!comp(min_result, second))
-          min_result = second;
-        if (!comp(first, max_result)) {
-          max_result = first;
-          potential_max_result = second;
-        }
-      }
-      first = ++second;
-      if (first != last) ++second;
-    }
-
-    if (first != last) {
-      if (!comp(min_result, first))
-        min_result = first;
-      if (!comp(first, max_result)) {
-        max_result = first;
-               potential_max_result = last;
-      }
-    }
-
-    if (potential_max_result != last
-        && !comp(potential_max_result, max_result))
-      max_result = potential_max_result;
-
-    return std::make_pair(min_result,max_result);
-  }
-
-  } // namespace detail
-
-  template <typename ForwardIter>
-  inline std::pair<ForwardIter,ForwardIter>
-  first_min_first_max_element(ForwardIter first, ForwardIter last)
-  {
-    return minmax_element(first, last);
-  }
-
-  template <typename ForwardIter, class BinaryPredicate>
-  inline std::pair<ForwardIter,ForwardIter>
-  first_min_first_max_element(ForwardIter first, ForwardIter last,
-                              BinaryPredicate comp)
-  {
-    return minmax_element(first, last, comp);
-  }
-
-  template <typename ForwardIter>
-  std::pair<ForwardIter,ForwardIter>
-  first_min_last_max_element(ForwardIter first, ForwardIter last)
-  {
-    return detail::basic_first_min_last_max_element(first, last,
-             detail::less_over_iter<ForwardIter>() );
-  }
-
-  template <typename ForwardIter, class BinaryPredicate>
-  inline std::pair<ForwardIter,ForwardIter>
-  first_min_last_max_element(ForwardIter first, ForwardIter last,
-                              BinaryPredicate comp)
-  {
-    return detail::basic_first_min_last_max_element(first, last,
-             detail::binary_pred_over_iter<ForwardIter,BinaryPredicate>(comp) );
-  }
-
-  template <typename ForwardIter>
-  std::pair<ForwardIter,ForwardIter>
-  last_min_first_max_element(ForwardIter first, ForwardIter last)
-  {
-    return detail::basic_last_min_first_max_element(first, last,
-             detail::less_over_iter<ForwardIter>() );
-  }
-
-  template <typename ForwardIter, class BinaryPredicate>
-  inline std::pair<ForwardIter,ForwardIter>
-  last_min_first_max_element(ForwardIter first, ForwardIter last,
-                              BinaryPredicate comp)
-  {
-    return detail::basic_last_min_first_max_element(first, last,
-             detail::binary_pred_over_iter<ForwardIter,BinaryPredicate>(comp) );
-  }
-
-  template <typename ForwardIter>
-  std::pair<ForwardIter,ForwardIter>
-  last_min_last_max_element(ForwardIter first, ForwardIter last)
-  {
-    return detail::basic_last_min_last_max_element(first, last,
-             detail::less_over_iter<ForwardIter>() );
-  }
-
-  template <typename ForwardIter, class BinaryPredicate>
-  inline std::pair<ForwardIter,ForwardIter>
-  last_min_last_max_element(ForwardIter first, ForwardIter last,
-                              BinaryPredicate comp)
-  {
-    return detail::basic_last_min_last_max_element(first, last,
-             detail::binary_pred_over_iter<ForwardIter,BinaryPredicate>(comp) );
-  }
-
-} // namespace boost
-
-#endif // BOOST_ALGORITHM_MINMAX_ELEMENT_HPP

+ 0 - 31
feng-authnotify/ext/boost/algorithm/string.hpp

@@ -1,31 +0,0 @@
-//  Boost string_algo library string_algo.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2004.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_ALGO_HPP
-#define BOOST_STRING_ALGO_HPP
-
-/*! \file
-    Cumulative include for string_algo library
-*/
-
-#include <boost/algorithm/string/std_containers_traits.hpp>
-#include <boost/algorithm/string/trim.hpp>
-#include <boost/algorithm/string/case_conv.hpp>
-#include <boost/algorithm/string/predicate.hpp>
-#include <boost/algorithm/string/find.hpp>
-#include <boost/algorithm/string/split.hpp>
-#include <boost/algorithm/string/join.hpp>
-#include <boost/algorithm/string/replace.hpp>
-#include <boost/algorithm/string/erase.hpp>
-#include <boost/algorithm/string/classification.hpp>
-#include <boost/algorithm/string/find_iterator.hpp>
-
-
-#endif  // BOOST_STRING_ALGO_HPP

+ 0 - 176
feng-authnotify/ext/boost/algorithm/string/case_conv.hpp

@@ -1,176 +0,0 @@
-//  Boost string_algo library case_conv.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2003.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_CASE_CONV_HPP
-#define BOOST_STRING_CASE_CONV_HPP
-
-#include <boost/algorithm/string/config.hpp>
-#include <algorithm>
-#include <locale>
-#include <boost/iterator/transform_iterator.hpp>
-
-#include <boost/range/as_literal.hpp>
-#include <boost/range/begin.hpp>
-#include <boost/range/end.hpp>
-#include <boost/range/value_type.hpp>
-
-#include <boost/algorithm/string/detail/case_conv.hpp>
-
-/*! \file
-    Defines sequence case-conversion algorithms.
-    Algorithms convert each element in the input sequence to the
-    desired case using provided locales.
-*/
-
-namespace boost {
-    namespace algorithm {
-
-//  to_lower  -----------------------------------------------//
-
-        //! Convert to lower case
-        /*!
-            Each element of the input sequence is converted to lower
-            case. The result is a copy of the input converted to lower case.
-            It is returned as a sequence or copied to the output iterator.
-
-            \param Output An output iterator to which the result will be copied
-            \param Input An input range
-            \param Loc A locale used for conversion
-            \return 
-                An output iterator pointing just after the last inserted character or
-                a copy of the input
-
-            \note The second variant of this function provides the strong exception-safety guarantee
-                
-        */
-        template<typename OutputIteratorT, typename RangeT>
-        inline OutputIteratorT 
-        to_lower_copy(
-            OutputIteratorT Output,
-            const RangeT& Input,
-            const std::locale& Loc=std::locale())
-        {
-            return ::boost::algorithm::detail::transform_range_copy( 
-               Output,
-               as_literal(Input),
-               ::boost::algorithm::detail::to_lowerF<
-                    typename range_value<RangeT>::type >(Loc));
-        }
-
-        //! Convert to lower case
-        /*!
-            \overload
-        */
-        template<typename SequenceT>
-        inline SequenceT to_lower_copy( 
-            const SequenceT& Input, 
-            const std::locale& Loc=std::locale())
-        {
-            return ::boost::algorithm::detail::transform_range_copy<SequenceT>(
-                Input,
-                ::boost::algorithm::detail::to_lowerF<
-                    typename range_value<SequenceT>::type >(Loc));
-        }
-
-        //! Convert to lower case
-        /*!
-            Each element of the input sequence is converted to lower
-            case. The input sequence is modified in-place.
-
-            \param Input A range
-            \param Loc a locale used for conversion
-        */
-        template<typename WritableRangeT>
-        inline void to_lower( 
-            WritableRangeT& Input, 
-            const std::locale& Loc=std::locale())
-        {
-            ::boost::algorithm::detail::transform_range(
-                as_literal(Input),
-                ::boost::algorithm::detail::to_lowerF<
-                    typename range_value<WritableRangeT>::type >(Loc));
-        }
-        
-//  to_upper  -----------------------------------------------//
-
-        //! Convert to upper case
-        /*!
-            Each element of the input sequence is converted to upper
-            case. The result is a copy of the input converted to upper case.
-            It is returned as a sequence or copied to the output iterator
-
-            \param Output An output iterator to which the result will be copied
-            \param Input An input range
-            \param Loc A locale used for conversion
-            \return 
-                An output iterator pointing just after the last inserted character or
-                a copy of the input
-
-            \note The second variant of this function provides the strong exception-safety guarantee
-        */
-        template<typename OutputIteratorT, typename RangeT>
-        inline OutputIteratorT 
-        to_upper_copy(
-            OutputIteratorT Output,
-            const RangeT& Input,
-            const std::locale& Loc=std::locale())
-        {
-            return ::boost::algorithm::detail::transform_range_copy( 
-               Output,
-               as_literal(Input),
-               ::boost::algorithm::detail::to_upperF<
-                    typename range_value<RangeT>::type >(Loc));
-        }
-
-        //! Convert to upper case
-        /*!
-            \overload
-        */
-        template<typename SequenceT>
-        inline SequenceT to_upper_copy( 
-            const SequenceT& Input, 
-            const std::locale& Loc=std::locale())
-        {
-            return ::boost::algorithm::detail::transform_range_copy<SequenceT>(
-                Input,
-                ::boost::algorithm::detail::to_upperF<
-                    typename range_value<SequenceT>::type >(Loc));
-        }
-
-        //! Convert to upper case
-        /*!
-            Each element of the input sequence is converted to upper
-            case. The input sequence is modified in-place.
-
-            \param Input An input range
-            \param Loc a locale used for conversion
-        */
-        template<typename WritableRangeT>
-        inline void to_upper( 
-            WritableRangeT& Input, 
-            const std::locale& Loc=std::locale())
-        {
-            ::boost::algorithm::detail::transform_range(
-                as_literal(Input),
-                ::boost::algorithm::detail::to_upperF<
-                    typename range_value<WritableRangeT>::type >(Loc));
-        }
-
-    } // namespace algorithm
-
-    // pull names to the boost namespace
-    using algorithm::to_lower;
-    using algorithm::to_lower_copy;
-    using algorithm::to_upper;
-    using algorithm::to_upper_copy;
-
-} // namespace boost
-
-#endif  // BOOST_STRING_CASE_CONV_HPP

+ 0 - 312
feng-authnotify/ext/boost/algorithm/string/classification.hpp

@@ -1,312 +0,0 @@
-//  Boost string_algo library classification.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2003.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_CLASSIFICATION_HPP
-#define BOOST_STRING_CLASSIFICATION_HPP
-
-#include <algorithm>
-#include <locale>
-#include <boost/range/value_type.hpp>
-#include <boost/range/as_literal.hpp>
-#include <boost/algorithm/string/detail/classification.hpp>
-#include <boost/algorithm/string/predicate_facade.hpp>
-
-
-/*! \file
-    Classification predicates are included in the library to give 
-    some more convenience when using algorithms like \c trim() and \c all(). 
-    They wrap functionality of STL classification functions ( e.g. \c std::isspace() )
-    into generic functors. 
-*/
-
-namespace boost {
-    namespace algorithm {
-
-//  classification functor generator -------------------------------------//
-
-        //! is_classified predicate
-        /*!
-            Construct the \c is_classified predicate. This predicate holds if the input is
-            of specified \c std::ctype category.
-
-            \param Type A \c std::ctype category
-            \param Loc A locale used for classification
-            \return An instance of the \c is_classified predicate 
-        */
-        inline detail::is_classifiedF
-        is_classified(std::ctype_base::mask Type, const std::locale& Loc=std::locale())
-        {
-            return detail::is_classifiedF(Type, Loc);
-        }
-
-        //! is_space predicate
-        /*!
-            Construct the \c is_classified predicate for the \c ctype_base::space category.   
-
-            \param Loc A locale used for classification
-            \return An instance of the \c is_classified predicate
-        */
-        inline detail::is_classifiedF 
-        is_space(const std::locale& Loc=std::locale())
-        {
-            return detail::is_classifiedF(std::ctype_base::space, Loc);
-        }
-
-        //! is_alnum predicate
-        /*!
-            Construct the \c is_classified predicate for the \c ctype_base::alnum category.   
-
-            \param Loc A locale used for classification
-            \return An instance of the \c is_classified predicate 
-        */
-        inline detail::is_classifiedF 
-        is_alnum(const std::locale& Loc=std::locale())
-        {
-            return detail::is_classifiedF(std::ctype_base::alnum, Loc);
-        }
-
-        //! is_alpha predicate
-        /*!
-            Construct the \c is_classified predicate for the \c ctype_base::alpha category.   
-
-            \param Loc A locale used for classification
-            \return An instance of the \c is_classified predicate 
-        */
-        inline detail::is_classifiedF 
-        is_alpha(const std::locale& Loc=std::locale())
-        {
-            return detail::is_classifiedF(std::ctype_base::alpha, Loc);
-        }
-
-        //! is_cntrl predicate
-        /*!
-            Construct the \c is_classified predicate for the \c ctype_base::cntrl category.   
-
-            \param Loc A locale used for classification
-            \return An instance of the \c is_classified predicate 
-        */
-        inline detail::is_classifiedF 
-        is_cntrl(const std::locale& Loc=std::locale())
-        {
-            return detail::is_classifiedF(std::ctype_base::cntrl, Loc);
-        }
-
-        //! is_digit predicate
-        /*!
-            Construct the \c is_classified predicate for the \c ctype_base::digit category.   
-
-            \param Loc A locale used for classification
-            \return An instance of the \c is_classified predicate 
-        */
-        inline detail::is_classifiedF 
-        is_digit(const std::locale& Loc=std::locale())
-        {
-            return detail::is_classifiedF(std::ctype_base::digit, Loc);
-        }
-
-        //! is_graph predicate
-        /*!
-            Construct the \c is_classified predicate for the \c ctype_base::graph category.   
-
-            \param Loc A locale used for classification
-            \return An instance of the \c is_classified predicate 
-        */
-        inline detail::is_classifiedF
-        is_graph(const std::locale& Loc=std::locale())
-        {
-            return detail::is_classifiedF(std::ctype_base::graph, Loc);
-        }
-
-        //! is_lower predicate
-        /*!
-            Construct the \c is_classified predicate for the \c ctype_base::lower category.   
-
-            \param Loc A locale used for classification
-            \return An instance of \c is_classified predicate 
-        */
-        inline detail::is_classifiedF 
-        is_lower(const std::locale& Loc=std::locale())
-        {
-            return detail::is_classifiedF(std::ctype_base::lower, Loc);
-        }
-
-        //! is_print predicate
-        /*!
-            Construct the \c is_classified predicate for the \c ctype_base::print category.   
-
-            \param Loc A locale used for classification
-            \return An instance of the \c is_classified predicate 
-        */
-        inline detail::is_classifiedF 
-        is_print(const std::locale& Loc=std::locale())
-        {
-            return detail::is_classifiedF(std::ctype_base::print, Loc);
-        }
-
-        //! is_punct predicate
-        /*!
-            Construct the \c is_classified predicate for the \c ctype_base::punct category.   
-
-            \param Loc A locale used for classification
-            \return An instance of the \c is_classified predicate 
-        */
-        inline detail::is_classifiedF 
-        is_punct(const std::locale& Loc=std::locale())
-        {
-            return detail::is_classifiedF(std::ctype_base::punct, Loc);
-        }
-
-        //! is_upper predicate
-        /*!
-            Construct the \c is_classified predicate for the \c ctype_base::upper category.   
-
-            \param Loc A locale used for classification
-            \return An instance of the \c is_classified predicate 
-        */
-        inline detail::is_classifiedF 
-        is_upper(const std::locale& Loc=std::locale())
-        {
-            return detail::is_classifiedF(std::ctype_base::upper, Loc);
-        }
-
-        //! is_xdigit predicate
-        /*!
-            Construct the \c is_classified predicate for the \c ctype_base::xdigit category.  
-
-            \param Loc A locale used for classification
-            \return An instance of the \c is_classified predicate 
-        */
-        inline detail::is_classifiedF 
-        is_xdigit(const std::locale& Loc=std::locale())
-        {
-            return detail::is_classifiedF(std::ctype_base::xdigit, Loc);
-        }
-
-        //! is_any_of predicate
-        /*!
-            Construct the \c is_any_of predicate. The predicate holds if the input
-            is included in the specified set of characters.
-
-            \param Set A set of characters to be recognized
-            \return An instance of the \c is_any_of predicate 
-        */
-        template<typename RangeT>
-        inline detail::is_any_ofF<
-            BOOST_STRING_TYPENAME range_value<RangeT>::type> 
-        is_any_of( const RangeT& Set )
-        {
-            iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_set(as_literal(Set));
-            return detail::is_any_ofF<BOOST_STRING_TYPENAME range_value<RangeT>::type>(lit_set); 
-        }
-
-        //! is_from_range predicate
-        /*!
-            Construct the \c is_from_range predicate. The predicate holds if the input
-            is included in the specified range. (i.e. From <= Ch <= To )
-
-            \param From The start of the range
-            \param To The end of the range
-            \return An instance of the \c is_from_range predicate 
-        */
-        template<typename CharT>
-        inline detail::is_from_rangeF<CharT> is_from_range(CharT From, CharT To)
-        {
-            return detail::is_from_rangeF<CharT>(From,To); 
-        }
-        
-        // predicate combinators ---------------------------------------------------//
-
-        //! predicate 'and' composition predicate
-        /*!
-            Construct the \c class_and predicate. This predicate can be used
-            to logically combine two classification predicates. \c class_and holds,
-            if both predicates return true.
-
-            \param Pred1 The first predicate
-            \param Pred2 The second predicate
-            \return An instance of the \c class_and predicate     
-        */
-        template<typename Pred1T, typename Pred2T>
-        inline detail::pred_andF<Pred1T, Pred2T>
-        operator&&( 
-            const predicate_facade<Pred1T>& Pred1, 
-            const predicate_facade<Pred2T>& Pred2 )
-        {    
-            // Doing the static_cast with the pointer instead of the reference
-            // is a workaround for some compilers which have problems with
-            // static_cast's of template references, i.e. CW8. /grafik/
-            return detail::pred_andF<Pred1T,Pred2T>(
-                *static_cast<const Pred1T*>(&Pred1), 
-                *static_cast<const Pred2T*>(&Pred2) );
-        }
-
-        //! predicate 'or' composition predicate
-        /*!
-            Construct the \c class_or predicate. This predicate can be used
-            to logically combine two classification predicates. \c class_or holds,
-            if one of the predicates return true.
-
-            \param Pred1 The first predicate
-            \param Pred2 The second predicate
-            \return An instance of the \c class_or predicate     
-        */
-        template<typename Pred1T, typename Pred2T>
-        inline detail::pred_orF<Pred1T, Pred2T>
-        operator||( 
-            const predicate_facade<Pred1T>& Pred1, 
-            const predicate_facade<Pred2T>& Pred2 )
-        {    
-            // Doing the static_cast with the pointer instead of the reference
-            // is a workaround for some compilers which have problems with
-            // static_cast's of template references, i.e. CW8. /grafik/
-            return detail::pred_orF<Pred1T,Pred2T>(
-                *static_cast<const Pred1T*>(&Pred1), 
-                *static_cast<const Pred2T*>(&Pred2));
-        }
-
-        //! predicate negation operator
-        /*!
-            Construct the \c class_not predicate. This predicate represents a negation. 
-            \c class_or holds if of the predicates return false.
-
-            \param Pred The predicate to be negated
-            \return An instance of the \c class_not predicate     
-        */
-        template<typename PredT>
-        inline detail::pred_notF<PredT>
-        operator!( const predicate_facade<PredT>& Pred )
-        {
-            // Doing the static_cast with the pointer instead of the reference
-            // is a workaround for some compilers which have problems with
-            // static_cast's of template references, i.e. CW8. /grafik/
-            return detail::pred_notF<PredT>(*static_cast<const PredT*>(&Pred)); 
-        }
-
-    } // namespace algorithm
-
-    // pull names to the boost namespace
-    using algorithm::is_classified;
-    using algorithm::is_space;
-    using algorithm::is_alnum;
-    using algorithm::is_alpha;
-    using algorithm::is_cntrl;
-    using algorithm::is_digit;
-    using algorithm::is_graph;
-    using algorithm::is_lower;
-    using algorithm::is_upper;
-    using algorithm::is_print;
-    using algorithm::is_punct;
-    using algorithm::is_xdigit;
-    using algorithm::is_any_of;
-    using algorithm::is_from_range;
-
-} // namespace boost
-
-#endif  // BOOST_STRING_PREDICATE_HPP

+ 0 - 199
feng-authnotify/ext/boost/algorithm/string/compare.hpp

@@ -1,199 +0,0 @@
-//  Boost string_algo library compare.hpp header file  -------------------------//
-
-//  Copyright Pavol Droba 2002-2006.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_COMPARE_HPP
-#define BOOST_STRING_COMPARE_HPP
-
-#include <boost/algorithm/string/config.hpp>
-#include <locale>
-
-/*! \file
-    Defines element comparison predicates. Many algorithms in this library can
-    take an additional argument with a predicate used to compare elements.
-    This makes it possible, for instance, to have case insensitive versions
-    of the algorithms.
-*/
-
-namespace boost {
-    namespace algorithm {
-
-        //  is_equal functor  -----------------------------------------------//
-
-        //! is_equal functor
-        /*!
-            Standard STL equal_to only handle comparison between arguments
-            of the same type. This is a less restrictive version which wraps operator ==.
-        */
-        struct is_equal
-        {
-            //! Function operator
-            /*!
-                Compare two operands for equality
-            */
-            template< typename T1, typename T2 >
-                bool operator()( const T1& Arg1, const T2& Arg2 ) const
-            {
-                return Arg1==Arg2;
-            }
-        };
-
-        //! case insensitive version of is_equal
-        /*!
-            Case insensitive comparison predicate. Comparison is done using
-            specified locales.
-        */
-        struct is_iequal
-        {
-            //! Constructor
-            /*!
-                \param Loc locales used for comparison
-            */
-            is_iequal( const std::locale& Loc=std::locale() ) :
-                m_Loc( Loc ) {}
-
-            //! Function operator
-            /*!
-                Compare two operands. Case is ignored.
-            */
-            template< typename T1, typename T2 >
-                bool operator()( const T1& Arg1, const T2& Arg2 ) const
-            {
-                #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL)
-                    return std::toupper(Arg1)==std::toupper(Arg2);
-                #else
-                    return std::toupper<T1>(Arg1,m_Loc)==std::toupper<T2>(Arg2,m_Loc);
-                #endif
-            }
-
-        private:
-            std::locale m_Loc;
-        };
-
-        //  is_less functor  -----------------------------------------------//
-
-        //! is_less functor
-        /*!
-            Convenient version of standard std::less. Operation is templated, therefore it is 
-            not required to specify the exact types upon the construction
-         */
-        struct is_less
-        {
-            //! Functor operation
-            /*!
-                Compare two operands using > operator
-             */
-            template< typename T1, typename T2 >
-                bool operator()( const T1& Arg1, const T2& Arg2 ) const
-            {
-                return Arg1<Arg2;
-            }
-        };
-
-
-        //! case insensitive version of is_less
-        /*!
-            Case insensitive comparison predicate. Comparison is done using
-            specified locales.
-        */
-        struct is_iless
-        {
-            //! Constructor
-            /*!
-                \param Loc locales used for comparison
-            */
-            is_iless( const std::locale& Loc=std::locale() ) :
-                m_Loc( Loc ) {}
-
-            //! Function operator
-            /*!
-                Compare two operands. Case is ignored.
-            */
-            template< typename T1, typename T2 >
-                bool operator()( const T1& Arg1, const T2& Arg2 ) const
-            {
-                #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL)
-                    return std::toupper(Arg1)<std::toupper(Arg2);
-                #else
-                    return std::toupper<T1>(Arg1,m_Loc)<std::toupper<T2>(Arg2,m_Loc);
-                #endif
-            }
-
-        private:
-            std::locale m_Loc;
-        };
-
-        //  is_not_greater functor  -----------------------------------------------//
-
-        //! is_not_greater functor
-        /*!
-            Convenient version of standard std::not_greater_to. Operation is templated, therefore it is 
-            not required to specify the exact types upon the construction
-         */
-        struct is_not_greater
-        {
-            //! Functor operation
-            /*!
-                Compare two operands using > operator
-             */
-            template< typename T1, typename T2 >
-                bool operator()( const T1& Arg1, const T2& Arg2 ) const
-            {
-                return Arg1<=Arg2;
-            }
-        };
-
-
-        //! case insensitive version of is_not_greater
-        /*!
-            Case insensitive comparison predicate. Comparison is done using
-            specified locales.
-        */
-        struct is_not_igreater
-        {
-            //! Constructor
-            /*!
-                \param Loc locales used for comparison
-            */
-            is_not_igreater( const std::locale& Loc=std::locale() ) :
-                m_Loc( Loc ) {}
-
-            //! Function operator
-            /*!
-                Compare two operands. Case is ignored.
-            */
-            template< typename T1, typename T2 >
-                bool operator()( const T1& Arg1, const T2& Arg2 ) const
-            {
-                #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL)
-                    return std::toupper(Arg1)<=std::toupper(Arg2);
-                #else
-                    return std::toupper<T1>(Arg1,m_Loc)<=std::toupper<T2>(Arg2,m_Loc);
-                #endif
-            }
-
-        private:
-            std::locale m_Loc;
-        };
-
-
-    } // namespace algorithm
-
-    // pull names to the boost namespace
-    using algorithm::is_equal;
-    using algorithm::is_iequal;
-    using algorithm::is_less;
-    using algorithm::is_iless;
-    using algorithm::is_not_greater;
-    using algorithm::is_not_igreater;
-
-} // namespace boost
-
-
-#endif  // BOOST_STRING_COMPARE_HPP

+ 0 - 83
feng-authnotify/ext/boost/algorithm/string/concept.hpp

@@ -1,83 +0,0 @@
-//  Boost string_algo library concept.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2003.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_CONCEPT_HPP
-#define BOOST_STRING_CONCEPT_HPP
-
-#include <boost/concept_check.hpp>
-#include <boost/range/iterator_range.hpp>
-#include <boost/range/begin.hpp>
-#include <boost/range/end.hpp>
-
-/*! \file 
-    Defines concepts used in string_algo library
-*/
-
-namespace boost {
-    namespace algorithm {
-
-        //! Finder concept
-        /*!
-            Defines the Finder concept. Finder is a functor which selects
-            an arbitrary part of a string. Search is performed on
-            the range specified by starting and ending iterators.
-
-            Result of the find operation must be convertible to iterator_range.
-        */
-        template<typename FinderT, typename IteratorT>
-        struct FinderConcept
-        {
-        private:
-            typedef iterator_range<IteratorT> range;
-        public:
-            void constraints()
-            {
-                // Operation
-                r=(*pF)(i,i);
-            }
-        private:
-            range r;
-            IteratorT i;
-            FinderT* pF;    
-        }; // Finder_concept
-
-        
-        //! Formatter concept
-        /*!
-            Defines the Formatter concept. Formatter is a functor, which
-            takes a result from a finder operation and transforms it
-            in a specific way.
-
-            Result must be a container supported by container_traits, 
-            or a reference to it.
-        */
-        template<typename FormatterT, typename FinderT, typename IteratorT>
-        struct FormatterConcept
-        {
-        public:
-            void constraints()
-            {
-                // Operation
-                ::boost::begin((*pFo)( (*pF)(i,i) ));
-                ::boost::end((*pFo)( (*pF)(i,i) ));
-            }
-        private:
-            IteratorT i;
-            FinderT* pF;
-            FormatterT *pFo;
-        }; // FormatterConcept;
-
-    } // namespace algorithm
-} // namespace boost
-
-
-
-
-#endif  // BOOST_STRING_CONCEPT_HPP

+ 0 - 28
feng-authnotify/ext/boost/algorithm/string/config.hpp

@@ -1,28 +0,0 @@
-//  Boost string_algo library config.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2003.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_CONFIG_HPP
-#define BOOST_STRING_CONFIG_HPP
-
-#include <boost/config.hpp>
-#include <boost/detail/workaround.hpp>
-
-#ifdef BOOST_STRING_DEDUCED_TYPENAME
-#   error "macro already defined!"
-#endif
-
-#define BOOST_STRING_TYPENAME BOOST_DEDUCED_TYPENAME
-
-// Metrowerks workaround
-#if BOOST_WORKAROUND(__MWERKS__, <= 0x3003) // 8.x
-#pragma parse_func_templ off
-#endif
-
-#endif  // BOOST_STRING_CONFIG_HPP

+ 0 - 36
feng-authnotify/ext/boost/algorithm/string/constants.hpp

@@ -1,36 +0,0 @@
-//  Boost string_algo library constants.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2003.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_CONSTANTS_HPP
-#define BOOST_STRING_CONSTANTS_HPP
-
-namespace boost {
-    namespace algorithm {
-
-    //! Token compression mode 
-    /*!
-        Specifies token compression mode for the token_finder.
-    */
-    enum token_compress_mode_type
-    {
-        token_compress_on,    //!< Compress adjacent tokens
-        token_compress_off  //!< Do not compress adjacent tokens
-    };
-    
-    } // namespace algorithm
-
-    // pull the names to the boost namespace
-    using algorithm::token_compress_on;
-    using algorithm::token_compress_off;
-
-} // namespace boost
-
-#endif  // BOOST_STRING_CONSTANTS_HPP
-

+ 0 - 121
feng-authnotify/ext/boost/algorithm/string/detail/case_conv.hpp

@@ -1,121 +0,0 @@
-//  Boost string_algo library string_funct.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2003.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_CASE_CONV_DETAIL_HPP
-#define BOOST_STRING_CASE_CONV_DETAIL_HPP
-
-#include <boost/algorithm/string/config.hpp>
-#include <locale>
-#include <functional>
-
-namespace boost {
-    namespace algorithm {
-        namespace detail {
-
-//  case conversion functors -----------------------------------------------//
-
-#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
-#pragma warning(push)
-#pragma warning(disable:4512) //assignment operator could not be generated
-#endif
-
-            // a tolower functor
-            template<typename CharT>
-            struct to_lowerF : public std::unary_function<CharT, CharT>
-            {
-                // Constructor
-                to_lowerF( const std::locale& Loc ) : m_Loc( Loc ) {}
-
-                // Operation
-                CharT operator ()( CharT Ch ) const
-                {
-                    #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL)
-                        return std::tolower( Ch);
-                    #else
-                        return std::tolower<CharT>( Ch, m_Loc );
-                    #endif
-                }
-            private:
-                const std::locale& m_Loc;
-            };
-
-            // a toupper functor
-            template<typename CharT>
-            struct to_upperF : public std::unary_function<CharT, CharT>
-            {
-                // Constructor
-                to_upperF( const std::locale& Loc ) : m_Loc( Loc ) {}
-
-                // Operation
-                CharT operator ()( CharT Ch ) const
-                {
-                    #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL)
-                        return std::toupper( Ch);
-                    #else
-                        return std::toupper<CharT>( Ch, m_Loc );
-                    #endif
-                }
-            private:
-                const std::locale& m_Loc;
-            };
-
-#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
-#pragma warning(pop)
-#endif
-
-// algorithm implementation -------------------------------------------------------------------------
-
-            // Transform a range
-            template<typename OutputIteratorT, typename RangeT, typename FunctorT>
-            OutputIteratorT transform_range_copy(
-                OutputIteratorT Output,
-                const RangeT& Input,
-                FunctorT Functor)
-            {
-                return std::transform( 
-                    ::boost::begin(Input), 
-                    ::boost::end(Input), 
-                    Output,
-                    Functor);
-            }
-
-            // Transform a range (in-place)
-            template<typename RangeT, typename FunctorT>
-            void transform_range(
-                const RangeT& Input,
-                FunctorT Functor)
-            {
-                std::transform( 
-                    ::boost::begin(Input), 
-                    ::boost::end(Input), 
-                    ::boost::begin(Input),
-                    Functor);
-            }
-
-            template<typename SequenceT, typename RangeT, typename FunctorT>
-            inline SequenceT transform_range_copy( 
-                const RangeT& Input, 
-                FunctorT Functor)
-            {
-                return SequenceT(
-                    make_transform_iterator(
-                        ::boost::begin(Input),
-                        Functor),
-                    make_transform_iterator(
-                        ::boost::end(Input), 
-                        Functor));
-            }
-
-        } // namespace detail
-    } // namespace algorithm
-} // namespace boost
-
-
-#endif  // BOOST_STRING_CASE_CONV_DETAIL_HPP

+ 0 - 353
feng-authnotify/ext/boost/algorithm/string/detail/classification.hpp

@@ -1,353 +0,0 @@
-//  Boost string_algo library classification.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2003.
-// 
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_CLASSIFICATION_DETAIL_HPP
-#define BOOST_STRING_CLASSIFICATION_DETAIL_HPP
-
-#include <boost/algorithm/string/config.hpp>
-#include <algorithm>
-#include <functional>
-#include <locale>
-
-#include <boost/range/begin.hpp>
-#include <boost/range/end.hpp>
-
-#include <boost/algorithm/string/predicate_facade.hpp>
-#include <boost/type_traits/remove_const.hpp>
-
-namespace boost {
-    namespace algorithm {
-        namespace detail {
-
-//  classification functors -----------------------------------------------//
-
-   // is_classified functor
-            struct is_classifiedF :
-                public predicate_facade<is_classifiedF>
-            {
-                // Boost.Lambda support
-                template <class Args> struct sig { typedef bool type; };
-
-                // Constructor from a locale
-                is_classifiedF(std::ctype_base::mask Type, std::locale const & Loc = std::locale()) :
-                    m_Type(Type), m_Locale(Loc) {}
-                // Operation
-                template<typename CharT>
-                bool operator()( CharT Ch ) const
-                {
-                    return std::use_facet< std::ctype<CharT> >(m_Locale).is( m_Type, Ch );
-                }
-
-                #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x582) && !defined(_USE_OLD_RW_STL)
-                    template<>
-                    bool operator()( char const Ch ) const
-                    {
-                        return std::use_facet< std::ctype<char> >(m_Locale).is( m_Type, Ch );
-                    }
-                #endif
-
-            private:
-                std::ctype_base::mask m_Type;
-                std::locale m_Locale;
-            };
-
-
-            // is_any_of functor
-            /*
-                returns true if the value is from the specified set
-            */
-            template<typename CharT>
-            struct is_any_ofF :
-                public predicate_facade<is_any_ofF<CharT> >
-            {
-            private:
-                // set cannot operate on const value-type
-                typedef typename ::boost::remove_const<CharT>::type set_value_type;
-
-            public:     
-                // Boost.Lambda support
-                template <class Args> struct sig { typedef bool type; };
-
-                // Constructor
-                template<typename RangeT>
-                is_any_ofF( const RangeT& Range ) : m_Size(0)
-                {
-                    // Prepare storage
-                    m_Storage.m_dynSet=0;
-
-                    std::size_t Size=::boost::distance(Range);
-                    m_Size=Size;
-                    set_value_type* Storage=0;
-
-                    if(use_fixed_storage(m_Size))
-                    {
-                        // Use fixed storage
-                        Storage=&m_Storage.m_fixSet[0];
-                    }
-                    else
-                    {
-                        // Use dynamic storage
-                        m_Storage.m_dynSet=new set_value_type[m_Size];
-                        Storage=m_Storage.m_dynSet;
-                    }
-
-                    // Use fixed storage
-                    ::std::copy(::boost::begin(Range), ::boost::end(Range), Storage);
-                    ::std::sort(Storage, Storage+m_Size);
-                }
-
-                // Copy constructor
-                is_any_ofF(const is_any_ofF& Other) : m_Size(Other.m_Size)
-                {
-                    // Prepare storage
-                    m_Storage.m_dynSet=0;               
-                    const set_value_type* SrcStorage=0;
-                    set_value_type* DestStorage=0;
-
-                    if(use_fixed_storage(m_Size))
-                    {
-                        // Use fixed storage
-                        DestStorage=&m_Storage.m_fixSet[0];
-                        SrcStorage=&Other.m_Storage.m_fixSet[0];
-                    }
-                    else
-                    {
-                        // Use dynamic storage
-                        m_Storage.m_dynSet=new set_value_type[m_Size];
-                        DestStorage=m_Storage.m_dynSet;
-                        SrcStorage=Other.m_Storage.m_dynSet;
-                    }
-
-                    // Use fixed storage
-                    ::memcpy(DestStorage, SrcStorage, sizeof(set_value_type)*m_Size);
-                }
-
-                // Destructor
-                ~is_any_ofF()
-                {
-                    if(!use_fixed_storage(m_Size) && m_Storage.m_dynSet!=0)
-                    {
-                        delete [] m_Storage.m_dynSet;
-                    }
-                }
-
-                // Assignment
-                is_any_ofF& operator=(const is_any_ofF& Other)
-                {
-                    // Handle self assignment
-                    if(this==&Other) return *this;
-
-                    // Prepare storage             
-                    const set_value_type* SrcStorage;
-                    set_value_type* DestStorage;
-
-                    if(use_fixed_storage(Other.m_Size))
-                    {
-                        // Use fixed storage
-                        DestStorage=&m_Storage.m_fixSet[0];
-                        SrcStorage=&Other.m_Storage.m_fixSet[0];
-
-                        // Delete old storage if was present
-                        if(!use_fixed_storage(m_Size) && m_Storage.m_dynSet!=0)
-                        {
-                            delete [] m_Storage.m_dynSet;
-                        }
-
-                        // Set new size
-                        m_Size=Other.m_Size;
-                    }
-                    else
-                    {
-                        // Other uses dynamic storage
-                        SrcStorage=Other.m_Storage.m_dynSet;
-
-                        // Check what kind of storage are we using right now
-                        if(use_fixed_storage(m_Size))
-                        {
-                            // Using fixed storage, allocate new
-                            set_value_type* pTemp=new set_value_type[Other.m_Size];
-                            DestStorage=pTemp;
-                            m_Storage.m_dynSet=pTemp;
-                            m_Size=Other.m_Size;
-                        }
-                        else
-                        {
-                            // Using dynamic storage, check if can reuse
-                            if(m_Storage.m_dynSet!=0 && m_Size>=Other.m_Size && m_Size<Other.m_Size*2)
-                            {
-                                // Reuse the current storage
-                                DestStorage=m_Storage.m_dynSet;
-                                m_Size=Other.m_Size;
-                            }
-                            else
-                            {
-                                // Allocate the new one
-                                set_value_type* pTemp=new set_value_type[Other.m_Size];
-                                DestStorage=pTemp;
-                        
-                                // Delete old storage if necessary
-                                if(m_Storage.m_dynSet!=0)
-                                {
-                                    delete [] m_Storage.m_dynSet;
-                                }
-                                // Store the new storage
-                                m_Storage.m_dynSet=pTemp;
-                                // Set new size
-                                m_Size=Other.m_Size;
-                            }
-                        }
-                    }
-
-                    // Copy the data
-                    ::memcpy(DestStorage, SrcStorage, sizeof(set_value_type)*m_Size);
-
-                    return *this;
-                }
-
-                // Operation
-                template<typename Char2T>
-                bool operator()( Char2T Ch ) const
-                {
-                    const set_value_type* Storage=
-                        (use_fixed_storage(m_Size))
-                        ? &m_Storage.m_fixSet[0]
-                        : m_Storage.m_dynSet;
-
-                    return ::std::binary_search(Storage, Storage+m_Size, Ch);
-                }
-            private:
-                // check if the size is eligible for fixed storage
-                static bool use_fixed_storage(std::size_t size)
-                {
-                    return size<=sizeof(set_value_type*)*2;
-                }
-
-
-            private:
-                // storage
-                // The actual used storage is selected on the type
-                union
-                {
-                    set_value_type* m_dynSet;
-                    set_value_type m_fixSet[sizeof(set_value_type*)*2];
-                } 
-                m_Storage;
-        
-                // storage size
-                ::std::size_t m_Size;
-            };
-
-            // is_from_range functor
-            /*
-                returns true if the value is from the specified range.
-                (i.e. x>=From && x>=To)
-            */
-            template<typename CharT>
-            struct is_from_rangeF :
-                public predicate_facade< is_from_rangeF<CharT> >
-            {
-                // Boost.Lambda support
-                template <class Args> struct sig { typedef bool type; };
-
-                // Constructor
-                is_from_rangeF( CharT From, CharT To ) : m_From(From), m_To(To) {}
-
-                // Operation
-                template<typename Char2T>
-                bool operator()( Char2T Ch ) const
-                {
-                    return ( m_From <= Ch ) && ( Ch <= m_To );
-                }
-
-            private:
-                CharT m_From;
-                CharT m_To;
-            };
-
-            // class_and composition predicate
-            template<typename Pred1T, typename Pred2T>
-            struct pred_andF :
-                public predicate_facade< pred_andF<Pred1T,Pred2T> >
-            {
-            public:
-
-                // Boost.Lambda support
-                template <class Args> struct sig { typedef bool type; };
-
-                // Constructor
-                pred_andF( Pred1T Pred1, Pred2T Pred2 ) :
-                    m_Pred1(Pred1), m_Pred2(Pred2) {}
-
-                // Operation
-                template<typename CharT>
-                bool operator()( CharT Ch ) const
-                {
-                    return m_Pred1(Ch) && m_Pred2(Ch);
-                }
-
-            private:
-                Pred1T m_Pred1;
-                Pred2T m_Pred2;
-            };
-
-            // class_or composition predicate
-            template<typename Pred1T, typename Pred2T>
-            struct pred_orF :
-                public predicate_facade< pred_orF<Pred1T,Pred2T> >
-            {
-            public:
-                // Boost.Lambda support
-                template <class Args> struct sig { typedef bool type; };
-
-                // Constructor
-                pred_orF( Pred1T Pred1, Pred2T Pred2 ) :
-                    m_Pred1(Pred1), m_Pred2(Pred2) {}
-
-                // Operation
-                template<typename CharT>
-                bool operator()( CharT Ch ) const
-                {
-                    return m_Pred1(Ch) || m_Pred2(Ch);
-                }
-
-            private:
-                Pred1T m_Pred1;
-                Pred2T m_Pred2;
-            };
-
-            // class_not composition predicate
-            template< typename PredT >
-            struct pred_notF :
-                public predicate_facade< pred_notF<PredT> >
-            {
-            public:
-                // Boost.Lambda support
-                template <class Args> struct sig { typedef bool type; };
-
-                // Constructor
-                pred_notF( PredT Pred ) : m_Pred(Pred) {}
-
-                // Operation
-                template<typename CharT>
-                bool operator()( CharT Ch ) const
-                {
-                    return !m_Pred(Ch);
-                }
-
-            private:
-                PredT m_Pred;
-            };
-
-        } // namespace detail
-    } // namespace algorithm
-} // namespace boost
-
-
-#endif  // BOOST_STRING_CLASSIFICATION_DETAIL_HPP

+ 0 - 193
feng-authnotify/ext/boost/algorithm/string/detail/find_format.hpp

@@ -1,193 +0,0 @@
-//  Boost string_algo library find_format.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2003.
-// 
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_FIND_FORMAT_DETAIL_HPP
-#define BOOST_STRING_FIND_FORMAT_DETAIL_HPP
-
-#include <boost/algorithm/string/config.hpp>
-#include <boost/range/iterator_range.hpp>
-#include <boost/range/const_iterator.hpp>
-#include <boost/range/iterator.hpp>
-#include <boost/algorithm/string/detail/find_format_store.hpp>
-#include <boost/algorithm/string/detail/replace_storage.hpp>
-
-namespace boost {
-    namespace algorithm {
-        namespace detail {
-
-// find_format_copy (iterator variant) implementation -------------------------------//
-
-            template< 
-                typename OutputIteratorT,
-                typename InputT,
-                typename FormatterT,
-                typename FindResultT >
-            inline OutputIteratorT find_format_copy_impl(
-                OutputIteratorT Output,
-                const InputT& Input,
-                FormatterT Formatter,
-                const FindResultT& FindResult )
-            {       
-                return find_format_copy_impl2( 
-                    Output,
-                    Input,
-                    Formatter,
-                    FindResult,
-                    Formatter(FindResult) );
-            }
-
-            template< 
-                typename OutputIteratorT,
-                typename InputT,
-                typename FormatterT,
-                typename FindResultT,
-                typename FormatResultT >
-            inline OutputIteratorT find_format_copy_impl2(
-                OutputIteratorT Output,
-                const InputT& Input,
-                FormatterT Formatter,
-                const FindResultT& FindResult,
-                const FormatResultT& FormatResult )
-            {       
-                typedef find_format_store<
-                    BOOST_STRING_TYPENAME 
-                        range_const_iterator<InputT>::type, 
-                        FormatterT,
-                        FormatResultT > store_type;
-
-                // Create store for the find result
-                store_type M( FindResult, FormatResult, Formatter );
-
-                if ( !M )
-                {
-                    // Match not found - return original sequence
-                    std::copy( ::boost::begin(Input), ::boost::end(Input), Output );
-                    return Output;
-                }
-
-                // Copy the beginning of the sequence
-                std::copy( ::boost::begin(Input), ::boost::begin(M), Output );
-                // Format find result
-                // Copy formated result
-                std::copy( ::boost::begin(M.format_result()), ::boost::end(M.format_result()), Output );
-                // Copy the rest of the sequence
-                std::copy( M.end(), ::boost::end(Input), Output );
-
-                return Output;
-            }
-
-// find_format_copy implementation --------------------------------------------------//
-
-            template< 
-                typename InputT, 
-                typename FormatterT,
-                typename FindResultT >
-            inline InputT find_format_copy_impl(
-                const InputT& Input,
-                FormatterT Formatter,
-                const FindResultT& FindResult)
-            {
-                return find_format_copy_impl2(
-                    Input,
-                    Formatter,
-                    FindResult,
-                    Formatter(FindResult) );
-            }
-
-            template< 
-                typename InputT, 
-                typename FormatterT,
-                typename FindResultT,
-                typename FormatResultT >
-            inline InputT find_format_copy_impl2(
-                const InputT& Input,
-                FormatterT Formatter,
-                const FindResultT& FindResult,
-                const FormatResultT& FormatResult)
-            {
-                typedef find_format_store<
-                    BOOST_STRING_TYPENAME 
-                        range_const_iterator<InputT>::type, 
-                        FormatterT,
-                        FormatResultT > store_type;
-
-                // Create store for the find result
-                store_type M( FindResult, FormatResult, Formatter );
-
-                if ( !M )
-                {
-                    // Match not found - return original sequence
-                    return InputT( Input );
-                }
-
-                InputT Output;
-                // Copy the beginning of the sequence
-                insert( Output, ::boost::end(Output), ::boost::begin(Input), M.begin() );
-                // Copy formated result
-                insert( Output, ::boost::end(Output), M.format_result() );
-                // Copy the rest of the sequence
-                insert( Output, ::boost::end(Output), M.end(), ::boost::end(Input) );
-
-                return Output;
-            }
-
-// replace implementation ----------------------------------------------------//
-        
-            template<
-                typename InputT,
-                typename FormatterT,
-                typename FindResultT >
-            inline void find_format_impl( 
-                InputT& Input,
-                FormatterT Formatter,
-                const FindResultT& FindResult)
-            {
-                find_format_impl2(
-                    Input,
-                    Formatter,
-                    FindResult,
-                    Formatter(FindResult) );
-            }
-
-            template<
-                typename InputT,
-                typename FormatterT,
-                typename FindResultT,
-                typename FormatResultT >
-            inline void find_format_impl2( 
-                InputT& Input,
-                FormatterT Formatter,
-                const FindResultT& FindResult,
-                const FormatResultT& FormatResult)
-            {
-                typedef find_format_store<
-                    BOOST_STRING_TYPENAME 
-                        range_iterator<InputT>::type, 
-                        FormatterT,
-                        FormatResultT > store_type;
-
-                // Create store for the find result
-                store_type M( FindResult, FormatResult, Formatter );
-
-                if ( !M )
-                {
-                    // Search not found - return original sequence
-                    return;
-                }
-
-                // Replace match
-                replace( Input, M.begin(), M.end(), M.format_result() );
-            }
-
-        } // namespace detail
-    } // namespace algorithm
-} // namespace boost
-
-#endif  // BOOST_STRING_FIND_FORMAT_DETAIL_HPP

+ 0 - 263
feng-authnotify/ext/boost/algorithm/string/detail/find_format_all.hpp

@@ -1,263 +0,0 @@
-//  Boost string_algo library find_format_all.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2003.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_FIND_FORMAT_ALL_DETAIL_HPP
-#define BOOST_STRING_FIND_FORMAT_ALL_DETAIL_HPP
-
-#include <boost/algorithm/string/config.hpp>
-#include <boost/range/iterator_range.hpp>
-#include <boost/range/const_iterator.hpp>
-#include <boost/range/value_type.hpp>
-#include <boost/algorithm/string/detail/find_format_store.hpp>
-#include <boost/algorithm/string/detail/replace_storage.hpp>
-
-namespace boost {
-    namespace algorithm {
-        namespace detail {
-
-// find_format_all_copy (iterator variant) implementation ---------------------------//
-
-            template< 
-                typename OutputIteratorT,
-                typename InputT,
-                typename FinderT,
-                typename FormatterT,
-                typename FindResultT >
-            inline OutputIteratorT find_format_all_copy_impl(
-                OutputIteratorT Output,
-                const InputT& Input,
-                FinderT Finder,
-                FormatterT Formatter,
-                const FindResultT& FindResult )
-            {       
-                return find_format_all_copy_impl2( 
-                    Output,
-                    Input,
-                    Finder,
-                    Formatter,
-                    FindResult,
-                    Formatter(FindResult) );
-            }
-
-            template< 
-                typename OutputIteratorT,
-                typename InputT,
-                typename FinderT,
-                typename FormatterT,
-                typename FindResultT,
-                typename FormatResultT >
-            inline OutputIteratorT find_format_all_copy_impl2(
-                OutputIteratorT Output,
-                const InputT& Input,
-                FinderT Finder,
-                FormatterT Formatter,
-                const FindResultT& FindResult,
-                const FormatResultT& FormatResult )
-            {       
-                typedef BOOST_STRING_TYPENAME 
-                    range_const_iterator<InputT>::type input_iterator_type; 
-
-                typedef find_format_store<
-                        input_iterator_type, 
-                        FormatterT,
-                        FormatResultT > store_type;
-
-                // Create store for the find result
-                store_type M( FindResult, FormatResult, Formatter );
-
-                // Initialize last match
-                input_iterator_type LastMatch=::boost::begin(Input);
-
-                // Iterate through all matches
-                while( M )
-                {
-                    // Copy the beginning of the sequence
-                    std::copy( LastMatch, M.begin(), Output );
-                    // Copy formated result
-                    std::copy( ::boost::begin(M.format_result()), ::boost::end(M.format_result()), Output );
-
-                    // Proceed to the next match
-                    LastMatch=M.end();
-                    M=Finder( LastMatch, ::boost::end(Input) );
-                }
-
-                // Copy the rest of the sequence
-                std::copy( LastMatch, ::boost::end(Input), Output );
-
-                return Output;
-            }
-
-// find_format_all_copy implementation ----------------------------------------------//
-
-            template< 
-                typename InputT, 
-                typename FinderT,
-                typename FormatterT,
-                typename FindResultT >
-            inline InputT find_format_all_copy_impl(
-                const InputT& Input,
-                FinderT Finder,
-                FormatterT Formatter,
-                const FindResultT& FindResult)
-            {
-                return find_format_all_copy_impl2(
-                    Input,
-                    Finder,
-                    Formatter,
-                    FindResult,
-                    Formatter(FindResult) );
-            }
-
-            template< 
-                typename InputT, 
-                typename FinderT,
-                typename FormatterT,
-                typename FindResultT,
-                typename FormatResultT >
-            inline InputT find_format_all_copy_impl2(
-                const InputT& Input,
-                FinderT Finder,
-                FormatterT Formatter,
-                const FindResultT& FindResult,
-                const FormatResultT& FormatResult)
-            {
-                typedef BOOST_STRING_TYPENAME 
-                    range_const_iterator<InputT>::type input_iterator_type; 
-
-                typedef find_format_store<
-                        input_iterator_type, 
-                        FormatterT,
-                        FormatResultT > store_type;
-
-                // Create store for the find result
-                store_type M( FindResult, FormatResult, Formatter );
-
-                // Initialize last match
-                input_iterator_type LastMatch=::boost::begin(Input);
-
-                // Output temporary
-                InputT Output;
-
-                // Iterate through all matches
-                while( M )
-                {
-                    // Copy the beginning of the sequence
-                    insert( Output, ::boost::end(Output), LastMatch, M.begin() );
-                    // Copy formated result
-                    insert( Output, ::boost::end(Output), M.format_result() );
-
-                    // Proceed to the next match
-                    LastMatch=M.end();
-                    M=Finder( LastMatch, ::boost::end(Input) );
-                }
-
-                // Copy the rest of the sequence
-                insert( Output, ::boost::end(Output), LastMatch, ::boost::end(Input) );
-
-                return Output;
-            }
-
-// find_format_all implementation ------------------------------------------------//
-        
-            template<
-                typename InputT,
-                typename FinderT,
-                typename FormatterT,
-                typename FindResultT >
-            inline void find_format_all_impl( 
-                InputT& Input,
-                FinderT Finder,
-                FormatterT Formatter,
-                FindResultT FindResult)
-            {
-                find_format_all_impl2(
-                    Input,
-                    Finder,
-                    Formatter,
-                    FindResult,
-                    Formatter(FindResult) );
-            }
-
-            template<
-                typename InputT,
-                typename FinderT,
-                typename FormatterT,
-                typename FindResultT,
-                typename FormatResultT >
-            inline void find_format_all_impl2( 
-                InputT& Input,
-                FinderT Finder,
-                FormatterT Formatter,
-                FindResultT FindResult,
-                FormatResultT FormatResult)
-            {
-                typedef BOOST_STRING_TYPENAME 
-                    range_iterator<InputT>::type input_iterator_type; 
-                typedef find_format_store<
-                        input_iterator_type, 
-                        FormatterT,
-                        FormatResultT > store_type;
-
-                // Create store for the find result
-                store_type M( FindResult, FormatResult, Formatter );
-          
-                // Instantiate replacement storage
-                std::deque<
-                    BOOST_STRING_TYPENAME range_value<InputT>::type> Storage;
-
-                // Initialize replacement iterators
-                input_iterator_type InsertIt=::boost::begin(Input);
-                input_iterator_type SearchIt=::boost::begin(Input);
-                
-                while( M )
-                {
-                    // process the segment
-                    InsertIt=process_segment( 
-                        Storage,
-                        Input,
-                        InsertIt,
-                        SearchIt,
-                        M.begin() );
-                    
-                    // Adjust search iterator
-                    SearchIt=M.end();
-
-                    // Copy formated replace to the storage
-                    copy_to_storage( Storage, M.format_result() );
-
-                    // Find range for a next match
-                    M=Finder( SearchIt, ::boost::end(Input) );
-                }
-
-                // process the last segment
-                InsertIt=process_segment( 
-                    Storage,
-                    Input,
-                    InsertIt,
-                    SearchIt,
-                    ::boost::end(Input) );
-                
-                if ( Storage.empty() )
-                {
-                    // Truncate input
-                    erase( Input, InsertIt, ::boost::end(Input) );
-                }
-                else
-                {
-                    // Copy remaining data to the end of input
-                    insert( Input, ::boost::end(Input), Storage.begin(), Storage.end() );
-                }
-            }
-
-        } // namespace detail
-    } // namespace algorithm
-} // namespace boost
-
-#endif  // BOOST_STRING_FIND_FORMAT_ALL_DETAIL_HPP

+ 0 - 78
feng-authnotify/ext/boost/algorithm/string/detail/find_format_store.hpp

@@ -1,78 +0,0 @@
-//  Boost string_algo library find_format_store.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2003.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_FIND_FORMAT_STORE_DETAIL_HPP
-#define BOOST_STRING_FIND_FORMAT_STORE_DETAIL_HPP
-
-#include <boost/algorithm/string/config.hpp>
-#include <boost/range/iterator_range.hpp>
-
-namespace boost {
-    namespace algorithm {
-        namespace detail {
-
-//  temporary format and find result storage --------------------------------//
-
-#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
-#pragma warning(push)
-#pragma warning(disable:4512) //assignment operator could not be generated
-#endif
-            template< 
-                typename ForwardIteratorT,
-                typename FormatterT,
-                typename FormatResultT >
-            class find_format_store : 
-                public iterator_range<ForwardIteratorT>
-            {
-            public:
-                // typedefs
-                typedef iterator_range<ForwardIteratorT> base_type;
-                typedef FormatterT  formatter_type;
-                typedef FormatResultT format_result_type;
-                
-            public:
-                // Construction
-                find_format_store( 
-                        const base_type& FindResult,
-                        const format_result_type& FormatResult,
-                        const formatter_type& Formatter ) :
-                    base_type(FindResult),
-                    m_FormatResult(FormatResult),
-                    m_Formatter(Formatter) {}
-
-                // Assignment
-                template< typename FindResultT >
-                find_format_store& operator=( FindResultT FindResult )
-                {
-                    iterator_range<ForwardIteratorT>::operator=(FindResult);
-                    m_FormatResult=m_Formatter(FindResult);
-                    
-                    return *this;
-                }
-
-                // Retrieve format result
-                const format_result_type& format_result()
-                {   
-                    return m_FormatResult;
-                }
-
-            private:
-                format_result_type m_FormatResult;
-                const formatter_type& m_Formatter;
-            };
-
-#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
-#pragma warning(pop)
-#endif
-        } // namespace detail
-    } // namespace algorithm
-} // namespace boost
-
-#endif  // BOOST_STRING_FIND_FORMAT_STORE_DETAIL_HPP

+ 0 - 87
feng-authnotify/ext/boost/algorithm/string/detail/find_iterator.hpp

@@ -1,87 +0,0 @@
-//  Boost string_algo library find_iterator.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2003.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_FIND_ITERATOR_DETAIL_HPP
-#define BOOST_STRING_FIND_ITERATOR_DETAIL_HPP
-
-#include <boost/algorithm/string/config.hpp>
-#include <boost/range/iterator_range.hpp>
-#include <boost/iterator/iterator_facade.hpp>
-#include <boost/iterator/iterator_categories.hpp>
-#include <boost/function.hpp>
-
-namespace boost {
-    namespace algorithm { 
-        namespace detail {
-
-//  find_iterator base -----------------------------------------------//
-
-            // Find iterator base
-            template<typename IteratorT>
-            class find_iterator_base
-            {
-            protected:
-                // typedefs
-                typedef IteratorT input_iterator_type;
-                typedef iterator_range<IteratorT> match_type;
-                typedef function2<
-                    match_type, 
-                    input_iterator_type, 
-                    input_iterator_type> finder_type;
-                
-            protected:
-            // Protected construction/destruction
-
-                // Default constructor
-                find_iterator_base() {};
-                // Copy construction
-                find_iterator_base( const find_iterator_base& Other ) :
-                    m_Finder(Other.m_Finder) {}
-                
-                // Constructor
-                template<typename FinderT>
-                find_iterator_base( FinderT Finder, int ) :
-                    m_Finder(Finder) {}
-
-                // Destructor
-                ~find_iterator_base() {}
-
-                // Find operation
-                match_type do_find( 
-                    input_iterator_type Begin,
-                    input_iterator_type End ) const
-                {
-                    if (!m_Finder.empty())
-                    {
-                        return m_Finder(Begin,End);
-                    }
-                    else
-                    {
-                        return match_type(End,End);
-                    }
-                }
-
-                // Check
-                bool is_null() const
-                {
-                    return m_Finder.empty();
-                }
-
-            private:
-                // Finder
-                finder_type m_Finder;
-            };
-
-       } // namespace detail
-    } // namespace algorithm
-} // namespace boost
-
-
-#endif  // BOOST_STRING_FIND_ITERATOR_DETAIL_HPP

+ 0 - 646
feng-authnotify/ext/boost/algorithm/string/detail/finder.hpp

@@ -1,646 +0,0 @@
-//  Boost string_algo library finder.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2006.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_FINDER_DETAIL_HPP
-#define BOOST_STRING_FINDER_DETAIL_HPP
-
-#include <boost/algorithm/string/config.hpp>
-#include <boost/algorithm/string/constants.hpp>
-#include <boost/detail/iterator.hpp>
-
-#include <boost/range/iterator_range.hpp>
-#include <boost/range/begin.hpp>
-#include <boost/range/end.hpp>
-#include <boost/range/empty.hpp>
-#include <boost/range/as_literal.hpp>
-
-namespace boost {
-    namespace algorithm {
-        namespace detail {
-
-
-//  find first functor -----------------------------------------------//
-
-            // find a subsequence in the sequence ( functor )
-            /*
-                Returns a pair <begin,end> marking the subsequence in the sequence.
-                If the find fails, functor returns <End,End>
-            */
-            template<typename SearchIteratorT,typename PredicateT>
-            struct first_finderF
-            {
-                typedef SearchIteratorT search_iterator_type;
-
-                // Construction
-                template< typename SearchT >
-                first_finderF( const SearchT& Search, PredicateT Comp ) :
-                    m_Search(::boost::begin(Search), ::boost::end(Search)), m_Comp(Comp) {}
-                first_finderF(
-                        search_iterator_type SearchBegin,
-                        search_iterator_type SearchEnd,
-                        PredicateT Comp ) :
-                    m_Search(SearchBegin, SearchEnd), m_Comp(Comp) {}
-
-                // Operation
-                template< typename ForwardIteratorT >
-                iterator_range<ForwardIteratorT>
-                operator()(
-                    ForwardIteratorT Begin,
-                    ForwardIteratorT End ) const
-                {
-                    typedef iterator_range<ForwardIteratorT> result_type;
-                    typedef ForwardIteratorT input_iterator_type;
-
-                    // Outer loop
-                    for(input_iterator_type OuterIt=Begin;
-                        OuterIt!=End;
-                        ++OuterIt)
-                    {
-                        // Sanity check
-                        if( boost::empty(m_Search) )
-                            return result_type( End, End );
-
-                        input_iterator_type InnerIt=OuterIt;
-                        search_iterator_type SubstrIt=m_Search.begin();
-                        for(;
-                            InnerIt!=End && SubstrIt!=m_Search.end();
-                            ++InnerIt,++SubstrIt)
-                        {
-                            if( !( m_Comp(*InnerIt,*SubstrIt) ) )
-                                break;
-                        }
-
-                        // Substring matching succeeded
-                        if ( SubstrIt==m_Search.end() )
-                            return result_type( OuterIt, InnerIt );
-                    }
-
-                    return result_type( End, End );
-                }
-
-            private:
-                iterator_range<search_iterator_type> m_Search;
-                PredicateT m_Comp;
-            };
-
-//  find last functor -----------------------------------------------//
-
-            // find the last match a subseqeunce in the sequence ( functor )
-            /*
-                Returns a pair <begin,end> marking the subsequence in the sequence.
-                If the find fails, returns <End,End>
-            */
-            template<typename SearchIteratorT, typename PredicateT>
-            struct last_finderF
-            {
-                typedef SearchIteratorT search_iterator_type;
-                typedef first_finderF<
-                    search_iterator_type,
-                    PredicateT> first_finder_type;
-
-                // Construction
-                template< typename SearchT >
-                last_finderF( const SearchT& Search, PredicateT Comp ) :
-                    m_Search(::boost::begin(Search), ::boost::end(Search)), m_Comp(Comp) {}
-                last_finderF(
-                        search_iterator_type SearchBegin,
-                        search_iterator_type SearchEnd,
-                        PredicateT Comp ) :
-                    m_Search(SearchBegin, SearchEnd), m_Comp(Comp) {}
-
-                // Operation
-                template< typename ForwardIteratorT >
-                iterator_range<ForwardIteratorT>
-                operator()(
-                    ForwardIteratorT Begin,
-                    ForwardIteratorT End ) const
-                {
-                    typedef iterator_range<ForwardIteratorT> result_type;
-
-                    if( boost::empty(m_Search) )
-                        return result_type( End, End );
-
-                    typedef BOOST_STRING_TYPENAME boost::detail::
-                        iterator_traits<ForwardIteratorT>::iterator_category category;
-
-                    return findit( Begin, End, category() );
-                }
-
-            private:
-                // forward iterator
-                template< typename ForwardIteratorT >
-                iterator_range<ForwardIteratorT>
-                findit(
-                    ForwardIteratorT Begin,
-                    ForwardIteratorT End,
-                    std::forward_iterator_tag ) const
-                {
-                    typedef ForwardIteratorT input_iterator_type;
-                    typedef iterator_range<ForwardIteratorT> result_type;
-
-                    first_finder_type first_finder(
-                        m_Search.begin(), m_Search.end(), m_Comp );
-
-                    result_type M=first_finder( Begin, End );
-                    result_type Last=M;
-
-                    while( M )
-                    {
-                        Last=M;
-                        M=first_finder( ::boost::end(M), End );
-                    }
-
-                    return Last;
-                }
-
-                // bidirectional iterator
-                template< typename ForwardIteratorT >
-                iterator_range<ForwardIteratorT>
-                findit(
-                    ForwardIteratorT Begin,
-                    ForwardIteratorT End,
-                    std::bidirectional_iterator_tag ) const
-                {
-                    typedef iterator_range<ForwardIteratorT> result_type;
-                    typedef ForwardIteratorT input_iterator_type;
-
-                    // Outer loop
-                    for(input_iterator_type OuterIt=End;
-                        OuterIt!=Begin; )
-                    {
-                        input_iterator_type OuterIt2=--OuterIt;
-
-                        input_iterator_type InnerIt=OuterIt2;
-                        search_iterator_type SubstrIt=m_Search.begin();
-                        for(;
-                            InnerIt!=End && SubstrIt!=m_Search.end();
-                            ++InnerIt,++SubstrIt)
-                        {
-                            if( !( m_Comp(*InnerIt,*SubstrIt) ) )
-                                break;
-                        }
-
-                        // Substring matching succeeded
-                        if( SubstrIt==m_Search.end() )
-                            return result_type( OuterIt2, InnerIt );
-                    }
-
-                    return result_type( End, End );
-                }
-
-            private:
-                iterator_range<search_iterator_type> m_Search;
-                PredicateT m_Comp;
-            };
-
-//  find n-th functor -----------------------------------------------//
-
-            // find the n-th match of a subsequence in the sequence ( functor )
-            /*
-                Returns a pair <begin,end> marking the subsequence in the sequence.
-                If the find fails, returns <End,End>
-            */
-            template<typename SearchIteratorT, typename PredicateT>
-            struct nth_finderF
-            {
-                typedef SearchIteratorT search_iterator_type;
-                typedef first_finderF<
-                    search_iterator_type,
-                    PredicateT> first_finder_type;
-                typedef last_finderF<
-                    search_iterator_type,
-                    PredicateT> last_finder_type;
-
-                // Construction
-                template< typename SearchT >
-                nth_finderF(
-                        const SearchT& Search,
-                        int Nth,
-                        PredicateT Comp) :
-                    m_Search(::boost::begin(Search), ::boost::end(Search)),
-                    m_Nth(Nth),
-                    m_Comp(Comp) {}
-                nth_finderF(
-                        search_iterator_type SearchBegin,
-                        search_iterator_type SearchEnd,
-                        int Nth,
-                        PredicateT Comp) :
-                    m_Search(SearchBegin, SearchEnd),
-                    m_Nth(Nth),
-                    m_Comp(Comp) {}
-
-                // Operation
-                template< typename ForwardIteratorT >
-                iterator_range<ForwardIteratorT>
-                operator()(
-                    ForwardIteratorT Begin,
-                    ForwardIteratorT End ) const
-                {
-                    if(m_Nth>=0)
-                    {
-                        return find_forward(Begin, End, m_Nth);
-                    }
-                    else
-                    {
-                        return find_backward(Begin, End, -m_Nth);
-                    }
-
-                }
-
-            private:
-                // Implementation helpers
-                template< typename ForwardIteratorT >
-                iterator_range<ForwardIteratorT>
-                find_forward(
-                    ForwardIteratorT Begin,
-                    ForwardIteratorT End,
-                    unsigned int N) const
-                {
-                    typedef ForwardIteratorT input_iterator_type;
-                    typedef iterator_range<ForwardIteratorT> result_type;
-
-                    // Sanity check
-                    if( boost::empty(m_Search) )
-                        return result_type( End, End );
-
-                    // Instantiate find functor
-                    first_finder_type first_finder(
-                        m_Search.begin(), m_Search.end(), m_Comp );
-
-                    result_type M( Begin, Begin );
-
-                    for( unsigned int n=0; n<=N; ++n )
-                    {
-                        // find next match
-                        M=first_finder( ::boost::end(M), End );
-
-                        if ( !M )
-                        {
-                            // Subsequence not found, return
-                            return M;
-                        }
-                    }
-
-                    return M;
-                }
-
-                template< typename ForwardIteratorT >
-                iterator_range<ForwardIteratorT>
-                find_backward(
-                    ForwardIteratorT Begin,
-                    ForwardIteratorT End,
-                    unsigned int N) const
-                {
-                    typedef ForwardIteratorT input_iterator_type;
-                    typedef iterator_range<ForwardIteratorT> result_type;
-
-                    // Sanity check
-                    if( boost::empty(m_Search) )
-                        return result_type( End, End );
-
-                    // Instantiate find functor
-                    last_finder_type last_finder(
-                        m_Search.begin(), m_Search.end(), m_Comp );
-
-                    result_type M( End, End );
-
-                    for( unsigned int n=1; n<=N; ++n )
-                    {
-                        // find next match
-                        M=last_finder( Begin, ::boost::begin(M) );
-
-                        if ( !M )
-                        {
-                            // Subsequence not found, return
-                            return M;
-                        }
-                    }
-
-                    return M;
-                }
-
-
-            private:
-                iterator_range<search_iterator_type> m_Search;
-                int m_Nth;
-                PredicateT m_Comp;
-            };
-
-//  find head/tail implementation helpers ---------------------------//
-
-            template<typename ForwardIteratorT>
-                iterator_range<ForwardIteratorT>
-            find_head_impl(
-                ForwardIteratorT Begin,
-                ForwardIteratorT End,
-                unsigned int N,
-                std::forward_iterator_tag )
-            {
-                typedef ForwardIteratorT input_iterator_type;
-                typedef iterator_range<ForwardIteratorT> result_type;
-
-                input_iterator_type It=Begin;
-                for(
-                    unsigned int Index=0;
-                    Index<N && It!=End; ++Index,++It ) {};
-
-                return result_type( Begin, It );
-            }
-
-            template< typename ForwardIteratorT >
-                iterator_range<ForwardIteratorT>
-            find_head_impl(
-                ForwardIteratorT Begin,
-                ForwardIteratorT End,
-                unsigned int N,
-                std::random_access_iterator_tag )
-            {
-                typedef ForwardIteratorT input_iterator_type;
-                typedef iterator_range<ForwardIteratorT> result_type;
-
-                if ( (End<=Begin) || ( static_cast<unsigned int>(End-Begin) < N ) )
-                    return result_type( Begin, End );
-
-                return result_type(Begin,Begin+N);
-            }
-
-            // Find head implementation
-            template<typename ForwardIteratorT>
-                iterator_range<ForwardIteratorT>
-            find_head_impl(
-                ForwardIteratorT Begin,
-                ForwardIteratorT End,
-                unsigned int N )
-            {
-                typedef BOOST_STRING_TYPENAME boost::detail::
-                    iterator_traits<ForwardIteratorT>::iterator_category category;
-
-                return find_head_impl( Begin, End, N, category() );
-            }
-
-            template< typename ForwardIteratorT >
-                iterator_range<ForwardIteratorT>
-            find_tail_impl(
-                ForwardIteratorT Begin,
-                ForwardIteratorT End,
-                unsigned int N,
-                std::forward_iterator_tag )
-            {
-                typedef ForwardIteratorT input_iterator_type;
-                typedef iterator_range<ForwardIteratorT> result_type;
-
-                unsigned int Index=0;
-                input_iterator_type It=Begin;
-                input_iterator_type It2=Begin;
-
-                // Advance It2 by N increments
-                for( Index=0; Index<N && It2!=End; ++Index,++It2 ) {};
-
-                // Advance It, It2 to the end
-                for(; It2!=End; ++It,++It2 ) {};
-
-                return result_type( It, It2 );
-            }
-
-            template< typename ForwardIteratorT >
-                iterator_range<ForwardIteratorT>
-            find_tail_impl(
-                ForwardIteratorT Begin,
-                ForwardIteratorT End,
-                unsigned int N,
-                std::bidirectional_iterator_tag )
-            {
-                typedef ForwardIteratorT input_iterator_type;
-                typedef iterator_range<ForwardIteratorT> result_type;
-
-                input_iterator_type It=End;
-                for(
-                    unsigned int Index=0;
-                    Index<N && It!=Begin; ++Index,--It ) {};
-
-                return result_type( It, End );
-            }
-
-            template< typename ForwardIteratorT >
-                iterator_range<ForwardIteratorT>
-            find_tail_impl(
-                ForwardIteratorT Begin,
-                ForwardIteratorT End,
-                unsigned int N,
-                std::random_access_iterator_tag )
-            {
-                typedef ForwardIteratorT input_iterator_type;
-                typedef iterator_range<ForwardIteratorT> result_type;
-
-                if ( (End<=Begin) || ( static_cast<unsigned int>(End-Begin) < N ) )
-                    return result_type( Begin, End );
-
-                return result_type( End-N, End );
-            }
-
-                        // Operation
-            template< typename ForwardIteratorT >
-            iterator_range<ForwardIteratorT>
-            find_tail_impl(
-                ForwardIteratorT Begin,
-                ForwardIteratorT End,
-                unsigned int N )
-            {
-                typedef BOOST_STRING_TYPENAME boost::detail::
-                    iterator_traits<ForwardIteratorT>::iterator_category category;
-
-                return find_tail_impl( Begin, End, N, category() );
-            }
-
-
-
-//  find head functor -----------------------------------------------//
-
-
-            // find a head in the sequence ( functor )
-            /*
-                This functor find a head of the specified range. For
-                a specified N, the head is a subsequence of N starting
-                elements of the range.
-            */
-            struct head_finderF
-            {
-                // Construction
-                head_finderF( int N ) : m_N(N) {}
-
-                // Operation
-                template< typename ForwardIteratorT >
-                iterator_range<ForwardIteratorT>
-                operator()(
-                    ForwardIteratorT Begin,
-                    ForwardIteratorT End ) const
-                {
-                    if(m_N>=0)
-                    {
-                        return find_head_impl( Begin, End, m_N );
-                    }
-                    else
-                    {
-                        iterator_range<ForwardIteratorT> Res=
-                            find_tail_impl( Begin, End, -m_N );
-
-                        return make_iterator_range(Begin, Res.begin());
-                    }
-                }
-
-            private:
-                int m_N;
-            };
-
-//  find tail functor -----------------------------------------------//
-
-
-            // find a tail in the sequence ( functor )
-            /*
-                This functor find a tail of the specified range. For
-                a specified N, the head is a subsequence of N starting
-                elements of the range.
-            */
-            struct tail_finderF
-            {
-                // Construction
-                tail_finderF( int N ) : m_N(N) {}
-
-                // Operation
-                template< typename ForwardIteratorT >
-                iterator_range<ForwardIteratorT>
-                operator()(
-                    ForwardIteratorT Begin,
-                    ForwardIteratorT End ) const
-                {
-                    if(m_N>=0)
-                    {
-                        return find_tail_impl( Begin, End, m_N );
-                    }
-                    else
-                    {
-                        iterator_range<ForwardIteratorT> Res=
-                            find_head_impl( Begin, End, -m_N );
-
-                        return make_iterator_range(Res.end(), End);
-                    }
-                }
-
-            private:
-                int m_N;
-            };
-
-//  find token functor -----------------------------------------------//
-
-            // find a token in a sequence ( functor )
-            /*
-                This find functor finds a token specified be a predicate
-                in a sequence. It is equivalent of std::find algorithm,
-                with an exception that it return range instead of a single
-                iterator.
-
-                If bCompress is set to true, adjacent matching tokens are
-                concatenated into one match.
-            */
-            template< typename PredicateT >
-            struct token_finderF
-            {
-                // Construction
-                token_finderF(
-                    PredicateT Pred,
-                    token_compress_mode_type eCompress=token_compress_off ) :
-                        m_Pred(Pred), m_eCompress(eCompress) {}
-
-                // Operation
-                template< typename ForwardIteratorT >
-                iterator_range<ForwardIteratorT>
-                operator()(
-                    ForwardIteratorT Begin,
-                    ForwardIteratorT End ) const
-                {
-                    typedef iterator_range<ForwardIteratorT> result_type;
-
-                    ForwardIteratorT It=std::find_if( Begin, End, m_Pred );
-
-                    if( It==End )
-                    {
-                        return result_type( End, End );
-                    }
-                    else
-                    {
-                        ForwardIteratorT It2=It;
-
-                        if( m_eCompress==token_compress_on )
-                        {
-                            // Find first non-matching character
-                            while( It2!=End && m_Pred(*It2) ) ++It2;
-                        }
-                        else
-                        {
-                            // Advance by one position
-                            ++It2;
-                        }
-
-                        return result_type( It, It2 );
-                    }
-                }
-
-            private:
-                PredicateT m_Pred;
-                token_compress_mode_type m_eCompress;
-            };
-
-//  find range functor -----------------------------------------------//
-
-            // find a range in the sequence ( functor )
-            /*
-                This functor actually does not perform any find operation.
-                It always returns given iterator range as a result.
-            */
-            template<typename ForwardIterator1T>
-            struct range_finderF
-            {
-                typedef ForwardIterator1T input_iterator_type;
-                typedef iterator_range<input_iterator_type> result_type;
-
-                // Construction
-                range_finderF(
-                    input_iterator_type Begin,
-                    input_iterator_type End ) : m_Range(Begin, End) {}
-
-                range_finderF(const iterator_range<input_iterator_type>& Range) :
-                    m_Range(Range) {}
-
-                // Operation
-                template< typename ForwardIterator2T >
-                iterator_range<ForwardIterator2T>
-                operator()(
-                    ForwardIterator2T,
-                    ForwardIterator2T ) const
-                {
-#if BOOST_WORKAROUND( __MWERKS__, <= 0x3003 ) 
-                    return iterator_range<const ForwardIterator2T>(this->m_Range);
-#elif BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
-                    return iterator_range<ForwardIterator2T>(m_Range.begin(), m_Range.end());
-#else
-                    return m_Range;
-#endif
-                }
-
-            private:
-                iterator_range<input_iterator_type> m_Range;
-            };
-
-
-        } // namespace detail
-    } // namespace algorithm
-} // namespace boost
-
-#endif  // BOOST_STRING_FINDER_DETAIL_HPP

+ 0 - 122
feng-authnotify/ext/boost/algorithm/string/detail/finder_regex.hpp

@@ -1,122 +0,0 @@
-//  Boost string_algo library find_regex.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2003.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_FINDER_REGEX_DETAIL_HPP
-#define BOOST_STRING_FINDER_REGEX_DETAIL_HPP
-
-#include <boost/algorithm/string/config.hpp>
-#include <boost/regex.hpp>
-
-#include <boost/range/iterator_range.hpp>
-#include <boost/range/begin.hpp>
-#include <boost/range/end.hpp>
-
-namespace boost {
-    namespace algorithm {
-        namespace detail {
-
-//  regex find functor -----------------------------------------------//
-
-            // regex search result
-            template<typename IteratorT>
-            struct regex_search_result : 
-                public iterator_range<IteratorT>
-            {
-                typedef regex_search_result<IteratorT> type;
-                typedef iterator_range<IteratorT> base_type;
-                typedef BOOST_STRING_TYPENAME base_type::value_type value_type;
-                typedef BOOST_STRING_TYPENAME base_type::difference_type difference_type;
-                typedef BOOST_STRING_TYPENAME base_type::const_iterator const_iterator;
-                typedef BOOST_STRING_TYPENAME base_type::iterator iterator;
-                typedef boost::match_results<iterator> match_results_type;
-
-                // Construction
-
-                // Construction from the match result
-                regex_search_result( const match_results_type& MatchResults ) :
-                    base_type( MatchResults[0].first, MatchResults[0].second ),
-                    m_MatchResults( MatchResults ) {}
-                
-                // Construction of empty match. End iterator has to be specified
-                regex_search_result( IteratorT End ) :
-                    base_type( End, End ) {}
-
-                regex_search_result( const regex_search_result& Other ) :
-                    base_type( Other.begin(), Other.end() ),
-                    m_MatchResults( Other.m_MatchResults ) {}
-
-                // Assignment
-                regex_search_result& operator=( const regex_search_result& Other )
-                {
-                    base_type::operator=( Other );
-                    m_MatchResults=Other.m_MatchResults;
-                    return *this;
-                }
-
-                // Match result retrival
-                const match_results_type& match_results() const
-                {
-                    return m_MatchResults;
-                }
-
-            private:
-                // Saved matchresult
-                match_results_type m_MatchResults;
-            };
-
-            // find_regex
-            /*
-                Regex based search functor
-            */
-            template<typename RegExT>
-            struct find_regexF
-            {
-                typedef RegExT regex_type;
-                typedef const RegExT& regex_reference_type;
-                    
-                // Construction
-                find_regexF( regex_reference_type Rx, match_flag_type MatchFlags = match_default ) : 
-                    m_Rx(Rx), m_MatchFlags(MatchFlags) {}   
-
-                // Operation
-                template< typename ForwardIteratorT >
-                regex_search_result<ForwardIteratorT>
-                operator()( 
-                    ForwardIteratorT Begin, 
-                    ForwardIteratorT End ) const
-                {
-                    typedef ForwardIteratorT input_iterator_type;
-                    typedef regex_search_result<ForwardIteratorT> result_type;
-
-                    // instantiate match result
-                    match_results<input_iterator_type> result;
-                    // search for a match
-                    if ( regex_search( Begin, End, result, m_Rx, m_MatchFlags ) )
-                    {
-                        // construct a result
-                        return result_type( result );
-                    }
-                    else
-                    {
-                        // empty result
-                        return result_type( End );
-                    }
-                }
-
-            private:
-                regex_reference_type m_Rx; // Regexp
-                match_flag_type m_MatchFlags;     // match flags
-            };
-
-        } // namespace detail
-    } // namespace algorithm
-} // namespace boost
-
-#endif  // BOOST_STRING_FIND_DETAIL_HPP

+ 0 - 94
feng-authnotify/ext/boost/algorithm/string/detail/formatter.hpp

@@ -1,94 +0,0 @@
-//  Boost string_algo library formatter.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2003.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_FORMATTER_DETAIL_HPP
-#define BOOST_STRING_FORMATTER_DETAIL_HPP
-
-
-#include <boost/range/iterator_range.hpp>
-#include <boost/range/begin.hpp>
-#include <boost/range/end.hpp>
-#include <boost/range/const_iterator.hpp>
-
-#include <boost/algorithm/string/detail/util.hpp>
-
-//  generic replace functors -----------------------------------------------//
-
-namespace boost {
-    namespace algorithm {
-        namespace detail {
-
-//  const format functor ----------------------------------------------------//
-
-            // constant format functor
-            template<typename RangeT>
-            struct const_formatF
-            {
-            private:
-                typedef BOOST_STRING_TYPENAME
-                    range_const_iterator<RangeT>::type format_iterator;
-                typedef iterator_range<format_iterator> result_type;
-            
-            public:
-                // Construction
-                const_formatF(const RangeT& Format) :
-                    m_Format(::boost::begin(Format), ::boost::end(Format)) {}
-
-                // Operation
-#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
-                template<typename Range2T>
-                result_type& operator()(const Range2T&)
-                {
-                    return m_Format;
-                }
-#endif
-
-                template<typename Range2T>
-                const result_type& operator()(const Range2T&) const
-                {
-                    return m_Format;
-                }
-
-            private:
-                result_type m_Format;
-            };
-
-//  identity format functor ----------------------------------------------------//
-
-            // identity format functor
-            template<typename RangeT>
-            struct identity_formatF
-            {
-                // Operation
-                template< typename Range2T >
-                const RangeT& operator()(const Range2T& Replace) const
-                {
-                    return RangeT(::boost::begin(Replace), ::boost::end(Replace));
-                }
-            };
-
-//  empty format functor ( used by erase ) ------------------------------------//
-        
-            // empty format functor
-            template< typename CharT >
-            struct empty_formatF
-            {
-                template< typename ReplaceT >
-                empty_container<CharT> operator()(const ReplaceT&) const
-                {
-                    return empty_container<CharT>();
-                }
-            };
-
-        } // namespace detail
-    } // namespace algorithm
-} // namespace boost
-
-#endif  // BOOST_STRING_FORMATTER_DETAIL_HPP

+ 0 - 61
feng-authnotify/ext/boost/algorithm/string/detail/formatter_regex.hpp

@@ -1,61 +0,0 @@
-//  Boost string_algo library formatter_regex.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2003.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_FORMATTER_REGEX_DETAIL_HPP
-#define BOOST_STRING_FORMATTER_REGEX_DETAIL_HPP
-
-#include <boost/algorithm/string/config.hpp>
-#include <string>
-#include <boost/regex.hpp>
-#include <boost/algorithm/string/detail/finder_regex.hpp>
-
-namespace boost {
-    namespace algorithm {
-        namespace detail {
-
-//  regex format functor -----------------------------------------//
-
-            // regex format functor
-            template<typename StringT>
-            struct regex_formatF
-            {
-            private:
-                typedef StringT result_type;
-                typedef BOOST_STRING_TYPENAME StringT::value_type char_type;
-
-            public:
-                // Construction
-                regex_formatF( const StringT& Fmt, match_flag_type Flags=format_default ) :
-                    m_Fmt(Fmt), m_Flags( Flags ) {}
-
-                template<typename InputIteratorT>
-                result_type operator()( 
-                    const regex_search_result<InputIteratorT>& Replace ) const
-                {
-                    if ( Replace.empty() )
-                    {
-                        return result_type();
-                    }
-                    else
-                    {
-                        return Replace.match_results().format( m_Fmt, m_Flags );                      
-                    }
-                }
-            private:
-                const StringT& m_Fmt;
-                match_flag_type m_Flags;
-            };
-
-        
-        } // namespace detail
-    } // namespace algorithm
-} // namespace boost
-
-#endif  // BOOST_STRING_FORMATTER_DETAIL_HPP

+ 0 - 77
feng-authnotify/ext/boost/algorithm/string/detail/predicate.hpp

@@ -1,77 +0,0 @@
-//  Boost string_algo library predicate.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2003.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_PREDICATE_DETAIL_HPP
-#define BOOST_STRING_PREDICATE_DETAIL_HPP
-
-#include <iterator>
-#include <boost/algorithm/string/find.hpp>
-
-namespace boost {
-    namespace algorithm {
-        namespace detail {
-
-//  ends_with predicate implementation ----------------------------------//
-
-            template< 
-                typename ForwardIterator1T, 
-                typename ForwardIterator2T,
-                typename PredicateT>
-            inline bool ends_with_iter_select( 
-                ForwardIterator1T Begin, 
-                ForwardIterator1T End, 
-                ForwardIterator2T SubBegin,
-                ForwardIterator2T SubEnd,
-                PredicateT Comp,
-                std::bidirectional_iterator_tag)
-            {
-                ForwardIterator1T it=End;
-                ForwardIterator2T pit=SubEnd;
-                for(;it!=Begin && pit!=SubBegin;)
-                {
-                    if( !(Comp(*(--it),*(--pit))) )
-                        return false;
-                }
-
-                return pit==SubBegin;
-            }
-
-            template< 
-                typename ForwardIterator1T, 
-                typename ForwardIterator2T,
-                typename PredicateT>
-            inline bool ends_with_iter_select( 
-                ForwardIterator1T Begin, 
-                ForwardIterator1T End, 
-                ForwardIterator2T SubBegin,
-                ForwardIterator2T SubEnd,
-                PredicateT Comp,
-                std::forward_iterator_tag)
-            {
-                if ( SubBegin==SubEnd )
-                {
-                    // empty subsequence check
-                    return true;
-                }
-
-                iterator_range<ForwardIterator1T> Result
-                    =last_finder( 
-                        make_iterator_range(SubBegin, SubEnd),
-                        Comp)(Begin, End);
-
-                return !Result.empty() && Result.end()==End;
-            }
-
-        } // namespace detail
-    } // namespace algorithm
-} // namespace boost
-
-
-#endif  // BOOST_STRING_PREDICATE_DETAIL_HPP

+ 0 - 159
feng-authnotify/ext/boost/algorithm/string/detail/replace_storage.hpp

@@ -1,159 +0,0 @@
-//  Boost string_algo library replace_storage.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2003.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_REPLACE_STORAGE_DETAIL_HPP
-#define BOOST_STRING_REPLACE_STORAGE_DETAIL_HPP
-
-#include <boost/algorithm/string/config.hpp>
-#include <algorithm>
-#include <boost/mpl/bool.hpp>
-#include <boost/algorithm/string/sequence_traits.hpp>
-#include <boost/algorithm/string/detail/sequence.hpp>
-
-namespace boost {
-    namespace algorithm {
-        namespace detail {
-
-//  storage handling routines -----------------------------------------------//
-            
-            template< typename StorageT, typename OutputIteratorT >
-            inline OutputIteratorT move_from_storage(
-                StorageT& Storage,
-                OutputIteratorT DestBegin,
-                OutputIteratorT DestEnd )
-            {
-                OutputIteratorT OutputIt=DestBegin;
-                
-                while( !Storage.empty() && OutputIt!=DestEnd )
-                {
-                    *OutputIt=Storage.front();
-                    Storage.pop_front();
-                    ++OutputIt;
-                }
-
-                return OutputIt;
-            }
-
-            template< typename StorageT, typename WhatT >
-            inline void copy_to_storage(
-                StorageT& Storage,
-                const WhatT& What )
-            {
-                Storage.insert( Storage.end(), ::boost::begin(What), ::boost::end(What) );
-            }
-
-
-//  process segment routine -----------------------------------------------//
-
-            template< bool HasStableIterators >
-            struct process_segment_helper
-            {
-                // Optimized version of process_segment for generic sequence
-                template< 
-                    typename StorageT,
-                    typename InputT,
-                    typename ForwardIteratorT >
-                ForwardIteratorT operator()(
-                    StorageT& Storage,
-                    InputT& /*Input*/,
-                    ForwardIteratorT InsertIt,
-                    ForwardIteratorT SegmentBegin,
-                    ForwardIteratorT SegmentEnd )
-                {
-                    // Copy data from the storage until the beginning of the segment
-                    ForwardIteratorT It=move_from_storage( Storage, InsertIt, SegmentBegin );
-
-                    // 3 cases are possible :
-                    //   a) Storage is empty, It==SegmentBegin
-                    //   b) Storage is empty, It!=SegmentBegin
-                    //   c) Storage is not empty
-
-                    if( Storage.empty() )
-                    {
-                        if( It==SegmentBegin )
-                        {
-                            // Case a) everything is grand, just return end of segment
-                            return SegmentEnd;
-                        }
-                        else
-                        {
-                            // Case b) move the segment backwards
-                            return std::copy( SegmentBegin, SegmentEnd, It );
-                        }
-                    }
-                    else
-                    {
-                        // Case c) -> shift the segment to the left and keep the overlap in the storage
-                        while( It!=SegmentEnd )
-                        {
-                            // Store value into storage
-                            Storage.push_back( *It );
-                            // Get the top from the storage and put it here
-                            *It=Storage.front();
-                            Storage.pop_front();
-
-                            // Advance
-                            ++It;
-                        }
-
-                        return It;
-                    }
-                }
-            };
-
-            template<>
-            struct process_segment_helper< true >
-            {
-                // Optimized version of process_segment for list-like sequence
-                template< 
-                    typename StorageT,
-                    typename InputT,
-                    typename ForwardIteratorT >
-                ForwardIteratorT operator()(
-                    StorageT& Storage,
-                    InputT& Input,
-                    ForwardIteratorT InsertIt,
-                    ForwardIteratorT SegmentBegin,
-                    ForwardIteratorT SegmentEnd )
-
-                {
-                    // Call replace to do the job
-                    replace( Input, InsertIt, SegmentBegin, Storage );
-                    // Empty the storage
-                    Storage.clear();
-                    // Iterators were not changed, simply return the end of segment
-                    return SegmentEnd;
-                }
-            };
-
-            // Process one segment in the replace_all algorithm
-            template< 
-                typename StorageT,
-                typename InputT,
-                typename ForwardIteratorT >
-            inline ForwardIteratorT process_segment(
-                StorageT& Storage,
-                InputT& Input,
-                ForwardIteratorT InsertIt,
-                ForwardIteratorT SegmentBegin,
-                ForwardIteratorT SegmentEnd )
-            {
-                return 
-                    process_segment_helper< 
-                        has_stable_iterators<InputT>::value>()(
-                                Storage, Input, InsertIt, SegmentBegin, SegmentEnd );
-            }
-            
-
-        } // namespace detail
-    } // namespace algorithm
-} // namespace boost
-
-#endif  // BOOST_STRING_REPLACE_STORAGE_DETAIL_HPP

+ 0 - 200
feng-authnotify/ext/boost/algorithm/string/detail/sequence.hpp

@@ -1,200 +0,0 @@
-//  Boost string_algo library sequence.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2003.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_DETAIL_SEQUENCE_HPP
-#define BOOST_STRING_DETAIL_SEQUENCE_HPP
-
-#include <boost/algorithm/string/config.hpp>
-#include <boost/mpl/bool.hpp>
-#include <boost/mpl/logical.hpp>
-#include <boost/range/begin.hpp>
-#include <boost/range/end.hpp>
-
-#include <boost/algorithm/string/sequence_traits.hpp>
-
-namespace boost {
-    namespace algorithm {
-        namespace detail {
-
-//  insert helpers  -------------------------------------------------//
-        
-            template< typename InputT, typename ForwardIteratorT >
-            inline void insert(
-                InputT& Input,
-                BOOST_STRING_TYPENAME InputT::iterator At,
-                ForwardIteratorT Begin,
-                ForwardIteratorT End )
-            {
-                Input.insert( At, Begin, End );
-            }
-
-            template< typename InputT, typename InsertT >
-            inline void insert(
-                InputT& Input,
-                BOOST_STRING_TYPENAME InputT::iterator At,
-                const InsertT& Insert )
-            {
-                insert( Input, At, ::boost::begin(Insert), ::boost::end(Insert) );
-            }
-           
-//  erase helper  ---------------------------------------------------//
-
-            // Erase a range in the sequence
-            /*
-                Returns the iterator pointing just after the erase subrange
-            */
-            template< typename InputT >
-            inline typename InputT::iterator erase(
-                InputT& Input,
-                BOOST_STRING_TYPENAME InputT::iterator From,
-                BOOST_STRING_TYPENAME InputT::iterator To )
-            {
-                return Input.erase( From, To );
-            }
-
-//  replace helper implementation  ----------------------------------//
-
-            // Optimized version of replace for generic sequence containers
-            // Assumption: insert and erase are expensive
-            template< bool HasConstTimeOperations >
-            struct replace_const_time_helper
-            {
-                template< typename InputT, typename ForwardIteratorT >
-                void operator()(
-                    InputT& Input,
-                    BOOST_STRING_TYPENAME InputT::iterator From,
-                    BOOST_STRING_TYPENAME InputT::iterator To,
-                    ForwardIteratorT Begin,
-                    ForwardIteratorT End )
-                {
-                    // Copy data to the container ( as much as possible )
-                    ForwardIteratorT InsertIt=Begin;
-                    BOOST_STRING_TYPENAME InputT::iterator InputIt=From;
-                    for(; InsertIt!=End && InputIt!=To; InsertIt++, InputIt++ )
-                    {
-                        *InputIt=*InsertIt;
-                    }
-
-                    if ( InsertIt!=End )
-                    {
-                        // Replace sequence is longer, insert it
-                        Input.insert( InputIt, InsertIt, End );
-                    }
-                    else
-                    {
-                        if ( InputIt!=To )
-                        {
-                            // Replace sequence is shorter, erase the rest
-                            Input.erase( InputIt, To );
-                        }
-                    }
-                }
-            };
-
-            template<>
-            struct replace_const_time_helper< true >
-            {
-                // Const-time erase and insert methods -> use them
-                template< typename InputT, typename ForwardIteratorT >
-                void operator()(
-                    InputT& Input,
-                    BOOST_STRING_TYPENAME InputT::iterator From,
-                    BOOST_STRING_TYPENAME InputT::iterator To,
-                    ForwardIteratorT Begin,
-                    ForwardIteratorT End ) 
-                {
-                    BOOST_STRING_TYPENAME InputT::iterator At=Input.erase( From, To );
-                    if ( Begin!=End )
-                    {
-                        if(!Input.empty())
-                        {
-                            Input.insert( At, Begin, End );
-                        }
-                        else
-                        {
-                            Input.insert( Input.begin(), Begin, End );
-                        }
-                    }
-                }
-            };
-
-            // No native replace method
-            template< bool HasNative >
-            struct replace_native_helper
-            {
-                template< typename InputT, typename ForwardIteratorT >
-                void operator()(
-                    InputT& Input,
-                    BOOST_STRING_TYPENAME InputT::iterator From,
-                    BOOST_STRING_TYPENAME InputT::iterator To,
-                    ForwardIteratorT Begin,
-                    ForwardIteratorT End ) 
-                {
-                    replace_const_time_helper< 
-                        boost::mpl::and_<
-                            has_const_time_insert<InputT>,
-                            has_const_time_erase<InputT> >::value >()(
-                        Input, From, To, Begin, End );
-                }
-            };
-
-            // Container has native replace method
-            template<>
-            struct replace_native_helper< true >
-            {
-                template< typename InputT, typename ForwardIteratorT >
-                void operator()(
-                    InputT& Input,
-                    BOOST_STRING_TYPENAME InputT::iterator From,
-                    BOOST_STRING_TYPENAME InputT::iterator To,
-                    ForwardIteratorT Begin,
-                    ForwardIteratorT End )
-                {
-                    Input.replace( From, To, Begin, End );
-                }
-            };
-
-//  replace helper  -------------------------------------------------//
-        
-            template< typename InputT, typename ForwardIteratorT >
-            inline void replace(
-                InputT& Input,
-                BOOST_STRING_TYPENAME InputT::iterator From,
-                BOOST_STRING_TYPENAME InputT::iterator To,
-                ForwardIteratorT Begin,
-                ForwardIteratorT End )
-            {
-                replace_native_helper< has_native_replace<InputT>::value >()(
-                    Input, From, To, Begin, End );
-            }
-
-            template< typename InputT, typename InsertT >
-            inline void replace(
-                InputT& Input,
-                BOOST_STRING_TYPENAME InputT::iterator From,
-                BOOST_STRING_TYPENAME InputT::iterator To,
-                const InsertT& Insert )
-            {
-                if(From!=To)
-                {
-                    replace( Input, From, To, ::boost::begin(Insert), ::boost::end(Insert) );
-                }
-                else
-                {
-                    insert( Input, From, ::boost::begin(Insert), ::boost::end(Insert) );
-                }
-            }
-
-        } // namespace detail
-    } // namespace algorithm
-} // namespace boost
-
-
-#endif  // BOOST_STRING_DETAIL_SEQUENCE_HPP

+ 0 - 95
feng-authnotify/ext/boost/algorithm/string/detail/trim.hpp

@@ -1,95 +0,0 @@
-//  Boost string_algo library trim.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2003.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_TRIM_DETAIL_HPP
-#define BOOST_STRING_TRIM_DETAIL_HPP
-
-#include <boost/algorithm/string/config.hpp>
-#include <boost/detail/iterator.hpp>
-
-namespace boost {
-    namespace algorithm {
-        namespace detail {
-
-//  trim iterator helper -----------------------------------------------//
-
-            // Search for first non matching character from the beginning of the sequence
-            template< typename ForwardIteratorT, typename PredicateT >
-            inline ForwardIteratorT trim_begin( 
-                ForwardIteratorT InBegin, 
-                ForwardIteratorT InEnd, 
-                PredicateT IsSpace )
-            {
-                ForwardIteratorT It=InBegin;
-                for(; It!=InEnd; ++It )
-                {
-                    if (!IsSpace(*It))
-                        return It;
-                }
-
-                return It;
-            }
-
-            // Search for first non matching character from the end of the sequence
-            template< typename ForwardIteratorT, typename PredicateT >
-            inline ForwardIteratorT trim_end( 
-                ForwardIteratorT InBegin, 
-                ForwardIteratorT InEnd, 
-                PredicateT IsSpace )
-            {
-                typedef BOOST_STRING_TYPENAME boost::detail::
-                    iterator_traits<ForwardIteratorT>::iterator_category category;
-
-                return trim_end_iter_select( InBegin, InEnd, IsSpace, category() );
-            }
-
-            template< typename ForwardIteratorT, typename PredicateT >
-            inline ForwardIteratorT trim_end_iter_select( 
-                ForwardIteratorT InBegin, 
-                ForwardIteratorT InEnd, 
-                PredicateT IsSpace,
-                std::forward_iterator_tag )
-            {
-                ForwardIteratorT TrimIt=InBegin;
-
-                for( ForwardIteratorT It=InBegin; It!=InEnd; ++It )
-                {
-                    if ( !IsSpace(*It) ) 
-                    {
-                        TrimIt=It;
-                        ++TrimIt;
-                    }
-                }
-
-                return TrimIt;
-            }
-
-            template< typename ForwardIteratorT, typename PredicateT >
-            inline ForwardIteratorT trim_end_iter_select( 
-                ForwardIteratorT InBegin, 
-                ForwardIteratorT InEnd, 
-                PredicateT IsSpace,
-                std::bidirectional_iterator_tag )
-            {
-                for( ForwardIteratorT It=InEnd; It!=InBegin;  )
-                {
-                    if ( !IsSpace(*(--It)) )
-                        return ++It;
-                }
-
-                return InBegin;
-            }
-
-        } // namespace detail
-    } // namespace algorithm
-} // namespace boost
-
-
-#endif  // BOOST_STRING_TRIM_DETAIL_HPP

+ 0 - 106
feng-authnotify/ext/boost/algorithm/string/detail/util.hpp

@@ -1,106 +0,0 @@
-//  Boost string_algo library util.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2003.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_UTIL_DETAIL_HPP
-#define BOOST_STRING_UTIL_DETAIL_HPP
-
-#include <boost/algorithm/string/config.hpp>
-#include <functional>
-#include <boost/range/iterator_range.hpp>
-
-namespace boost {
-    namespace algorithm {
-        namespace detail {
-
-//  empty container  -----------------------------------------------//
-
-            //  empty_container 
-            /*
-                This class represents always empty container,
-                containing elements of type CharT.
-
-                It is supposed to be used in a const version only
-            */
-            template< typename CharT >
-            struct empty_container 
-            {
-                typedef empty_container<CharT> type;        
-                typedef CharT value_type;
-                typedef std::size_t size_type;
-                typedef std::ptrdiff_t difference_type;
-                typedef const value_type& reference;
-                typedef const value_type& const_reference;
-                typedef const value_type* iterator;
-                typedef const value_type* const_iterator;
-
-                
-                // Operations
-                const_iterator begin() const
-                {
-                    return reinterpret_cast<const_iterator>(0);
-                }
-
-                const_iterator end() const
-                {
-                    return reinterpret_cast<const_iterator>(0);
-                }
-
-                bool empty() const
-                {
-                    return false;
-                }
-
-                size_type size() const
-                {
-                    return 0;
-                }
-            };
-    
-//  bounded copy algorithm  -----------------------------------------------//
-
-            // Bounded version of the std::copy algorithm
-            template<typename InputIteratorT, typename OutputIteratorT>
-            inline OutputIteratorT bounded_copy(
-                InputIteratorT First, 
-                InputIteratorT Last, 
-                OutputIteratorT DestFirst,
-                OutputIteratorT DestLast )
-            {
-                InputIteratorT InputIt=First;
-                OutputIteratorT OutputIt=DestFirst;
-                for(; InputIt!=Last && OutputIt!=DestLast; InputIt++, OutputIt++ )
-                {
-                    *OutputIt=*InputIt;
-                }
-
-                return OutputIt;
-            }
-
-//  iterator range utilities -----------------------------------------//
-
-            // copy range functor
-            template< 
-                typename SeqT, 
-                typename IteratorT=BOOST_STRING_TYPENAME SeqT::const_iterator >
-            struct copy_iterator_rangeF : 
-                public std::unary_function< iterator_range<IteratorT>, SeqT >
-            {
-                SeqT operator()( const iterator_range<IteratorT>& Range ) const
-                {
-                    return copy_range<SeqT>(Range);
-                }
-            };
-
-        } // namespace detail
-    } // namespace algorithm
-} // namespace boost
-
-
-#endif  // BOOST_STRING_UTIL_DETAIL_HPP

+ 0 - 844
feng-authnotify/ext/boost/algorithm/string/erase.hpp

@@ -1,844 +0,0 @@
-//  Boost string_algo library erase.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2006.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_ERASE_HPP
-#define BOOST_STRING_ERASE_HPP
-
-#include <boost/algorithm/string/config.hpp>
-
-#include <boost/range/iterator_range.hpp>
-#include <boost/range/begin.hpp>
-#include <boost/range/end.hpp>
-#include <boost/range/iterator.hpp>
-#include <boost/range/const_iterator.hpp>
-
-#include <boost/algorithm/string/find_format.hpp>
-#include <boost/algorithm/string/finder.hpp>
-#include <boost/algorithm/string/formatter.hpp>
-
-/*! \file
-    Defines various erase algorithms. Each algorithm removes
-    part(s) of the input according to a searching criteria.
-*/
-
-namespace boost {
-    namespace algorithm {
-
-//  erase_range -------------------------------------------------------//
-
-        //! Erase range algorithm
-        /*!
-            Remove the given range from the input. The result is a modified copy of 
-            the input. It is returned as a sequence or copied to the output iterator.
-    
-            \param Output An output iterator to which the result will be copied
-            \param Input An input sequence
-            \param SearchRange A range in the input to be removed
-            \return An output iterator pointing just after the last inserted character or
-                a modified copy of the input
-
-            \note The second variant of this function provides the strong exception-safety guarantee
-        */
-        template<typename OutputIteratorT, typename RangeT>
-        inline OutputIteratorT erase_range_copy(
-            OutputIteratorT Output,
-            const RangeT& Input,
-            const iterator_range<
-                BOOST_STRING_TYPENAME 
-                    range_const_iterator<RangeT>::type>& SearchRange )
-        {
-            return find_format_copy(
-                Output,
-                Input,
-                range_finder(SearchRange),
-                empty_formatter(Input) );
-        }
-
-        //! Erase range algorithm
-        /*!
-            \overload
-        */
-        template<typename SequenceT>
-        inline SequenceT erase_range_copy( 
-            const SequenceT& Input,
-            const iterator_range<
-                BOOST_STRING_TYPENAME 
-                    range_const_iterator<SequenceT>::type>& SearchRange )
-        {
-            return find_format_copy( 
-                Input,
-                range_finder(SearchRange),
-                empty_formatter(Input) );
-        }
-
-        //! Erase range algorithm
-        /*!
-            Remove the given range from the input.
-            The input sequence is modified in-place.
-
-            \param Input An input sequence
-            \param SearchRange A range in the input to be removed
-        */
-        template<typename SequenceT>
-        inline void erase_range( 
-            SequenceT& Input,
-            const iterator_range<
-                BOOST_STRING_TYPENAME 
-                    range_iterator<SequenceT>::type>& SearchRange )
-        {
-            find_format( 
-                Input, 
-                range_finder(SearchRange),
-                empty_formatter(Input) );
-        }
-
-//  erase_first  --------------------------------------------------------//
-
-        //! Erase first algorithm
-        /*!
-            Remove the first occurrence of the substring from the input.
-            The result is a modified copy of the input. It is returned as a sequence 
-            or copied to the output iterator.
-
-            \param Output An output iterator to which the result will be copied
-            \param Input An input string
-            \param Search A substring to be searched for 
-            \return An output iterator pointing just after the last inserted character or
-                a modified copy of the input
-            
-            \note The second variant of this function provides the strong exception-safety guarantee
-        */
-        template<
-            typename OutputIteratorT,
-            typename Range1T, 
-            typename Range2T>
-        inline OutputIteratorT erase_first_copy(
-            OutputIteratorT Output,
-            const Range1T& Input,
-            const Range2T& Search )
-        {
-            return find_format_copy(
-                Output,
-                Input,
-                first_finder(Search),
-                empty_formatter(Input) );
-        }
-
-        //! Erase first algorithm
-        /*!
-            \overload
-        */
-        template<typename SequenceT, typename RangeT>
-        inline SequenceT erase_first_copy( 
-            const SequenceT& Input,
-            const RangeT& Search )
-        {
-            return find_format_copy( 
-                Input, 
-                first_finder(Search),
-                empty_formatter(Input) );
-        }
-
-        //! Erase first algorithm
-        /*!
-            Remove the first occurrence of the substring from the input. 
-            The input sequence is modified in-place.
-
-            \param Input An input string
-            \param Search A substring to be searched for. 
-        */
-        template<typename SequenceT, typename RangeT>
-        inline void erase_first( 
-            SequenceT& Input,
-            const RangeT& Search )
-        {
-            find_format( 
-                Input, 
-                first_finder(Search),
-                empty_formatter(Input) );
-        }
-
-//  erase_first ( case insensitive ) ------------------------------------//
-
-        //! Erase first algorithm ( case insensitive )
-        /*!
-            Remove the first occurrence of the substring from the input. 
-            The result is a modified copy of the input. It is returned as a sequence 
-            or copied to the output iterator.
-            Searching is case insensitive.
-
-            \param Output An output iterator to which the result will be copied
-            \param Input An input string
-            \param Search A substring to be searched for 
-            \param Loc A locale used for case insensitive comparison
-            \return An output iterator pointing just after the last inserted character or
-                a modified copy of the input
-
-            \note The second variant of this function provides the strong exception-safety guarantee
-        */
-        template<
-            typename OutputIteratorT,
-            typename Range1T, 
-            typename Range2T>
-        inline OutputIteratorT ierase_first_copy(
-            OutputIteratorT Output,
-            const Range1T& Input,
-            const Range2T& Search,
-            const std::locale& Loc=std::locale() )
-        {
-            return find_format_copy(
-                Output,
-                Input,
-                first_finder(Search, is_iequal(Loc)),
-                empty_formatter(Input) );
-        }
-
-        //! Erase first algorithm ( case insensitive )
-        /*!
-            \overload
-        */
-        template<typename SequenceT, typename RangeT>
-        inline SequenceT ierase_first_copy( 
-            const SequenceT& Input,
-            const RangeT& Search,
-            const std::locale& Loc=std::locale() )
-        {
-            return find_format_copy( 
-                Input, 
-                first_finder(Search, is_iequal(Loc)),
-                empty_formatter(Input) );
-        }
-
-        //! Erase first algorithm ( case insensitive )
-        /*!
-            Remove the first occurrence of the substring from the input. 
-            The input sequence is modified in-place. Searching is case insensitive.
-
-            \param Input An input string
-            \param Search A substring to be searched for
-            \param Loc A locale used for case insensitive comparison
-        */
-        template<typename SequenceT, typename RangeT>
-        inline void ierase_first( 
-            SequenceT& Input,
-            const RangeT& Search,
-            const std::locale& Loc=std::locale() )
-        {
-            find_format( 
-                Input, 
-                first_finder(Search, is_iequal(Loc)),
-                empty_formatter(Input) );
-        }
-
-//  erase_last  --------------------------------------------------------//
-
-        //! Erase last algorithm
-        /*!
-            Remove the last occurrence of the substring from the input. 
-            The result is a modified copy of the input. It is returned as a sequence 
-            or copied to the output iterator.
-
-            \param Output An output iterator to which the result will be copied
-            \param Input An input string
-            \param Search A substring to be searched for.
-            \return An output iterator pointing just after the last inserted character or
-                a modified copy of the input
-
-             \note The second variant of this function provides the strong exception-safety guarantee
-        */
-        template<
-            typename OutputIteratorT,
-            typename Range1T, 
-            typename Range2T>
-        inline OutputIteratorT erase_last_copy(
-            OutputIteratorT Output,
-            const Range1T& Input,
-            const Range2T& Search )
-        {
-            return find_format_copy(
-                Output,
-                Input,
-                last_finder(Search),
-                empty_formatter(Input) );
-        }
-
-        //! Erase last algorithm
-        /*!
-            \overload
-        */
-        template<typename SequenceT, typename RangeT>
-        inline SequenceT erase_last_copy( 
-            const SequenceT& Input,
-            const RangeT& Search )
-        {
-            return find_format_copy( 
-                Input, 
-                last_finder(Search),
-                empty_formatter(Input) );
-        }
-
-        //! Erase last algorithm
-        /*!
-            Remove the last occurrence of the substring from the input. 
-            The input sequence is modified in-place.
-
-            \param Input An input string
-            \param Search A substring to be searched for 
-        */
-        template<typename SequenceT, typename RangeT>
-        inline void erase_last( 
-            SequenceT& Input,
-            const RangeT& Search )
-        {
-            find_format( 
-                Input, 
-                last_finder(Search),
-                empty_formatter(Input) );
-        }
-
-//  erase_last ( case insensitive ) ------------------------------------//
-
-        //! Erase last algorithm ( case insensitive )
-        /*!
-            Remove the last occurrence of the substring from the input. 
-            The result is a modified copy of the input. It is returned as a sequence 
-            or copied to the output iterator.
-            Searching is case insensitive.
-
-            \param Output An output iterator to which the result will be copied
-            \param Input An input string
-            \param Search A substring to be searched for
-            \param Loc A locale used for case insensitive comparison
-            \return An output iterator pointing just after the last inserted character or
-                a modified copy of the input
-
-             \note The second variant of this function provides the strong exception-safety guarantee
-        */
-        template<
-            typename OutputIteratorT,
-            typename Range1T, 
-            typename Range2T>
-        inline OutputIteratorT ierase_last_copy(
-            OutputIteratorT Output,
-            const Range1T& Input,
-            const Range2T& Search,
-            const std::locale& Loc=std::locale() )
-        {
-            return find_format_copy(
-                Output,
-                Input,
-                last_finder(Search, is_iequal(Loc)),
-                empty_formatter(Input) );
-        }
-
-        //! Erase last algorithm ( case insensitive )
-        /*!
-            \overload
-        */
-        template<typename SequenceT, typename RangeT>
-        inline SequenceT ierase_last_copy( 
-            const SequenceT& Input,
-            const RangeT& Search,
-            const std::locale& Loc=std::locale() )
-        {
-            return find_format_copy( 
-                Input, 
-                last_finder(Search, is_iequal(Loc)),
-                empty_formatter(Input) );
-        }
-
-        //! Erase last algorithm ( case insensitive )
-        /*!
-            Remove the last occurrence of the substring from the input. 
-            The input sequence is modified in-place. Searching is case insensitive.
-
-            \param Input An input string
-            \param Search A substring to be searched for
-            \param Loc A locale used for case insensitive comparison
-        */
-        template<typename SequenceT, typename RangeT>
-        inline void ierase_last( 
-            SequenceT& Input,
-            const RangeT& Search,
-            const std::locale& Loc=std::locale() )
-        {
-            find_format( 
-                Input, 
-                last_finder(Search, is_iequal(Loc)),
-                empty_formatter(Input) );
-        }
-
-//  erase_nth --------------------------------------------------------------------//
-
-        //! Erase nth algorithm
-        /*!
-            Remove the Nth occurrence of the substring in the input.
-            The result is a modified copy of the input. It is returned as a sequence 
-            or copied to the output iterator.
-            
-
-            \param Output An output iterator to which the result will be copied
-            \param Input An input string
-            \param Search A substring to be searched for
-            \param Nth An index of the match to be replaced. The index is 0-based.
-                For negative N, matches are counted from the end of string.
-            \return An output iterator pointing just after the last inserted character or
-                a modified copy of the input
-
-             \note The second variant of this function provides the strong exception-safety guarantee
-        */
-        template<
-            typename OutputIteratorT,
-            typename Range1T, 
-            typename Range2T>
-        inline OutputIteratorT erase_nth_copy(
-            OutputIteratorT Output,
-            const Range1T& Input,
-            const Range2T& Search,
-            int Nth )
-        {
-            return find_format_copy(
-                Output,
-                Input,
-                nth_finder(Search, Nth),
-                empty_formatter(Input) );
-        }
-
-        //! Erase nth algorithm
-        /*!
-            \overload
-        */
-        template<typename SequenceT, typename RangeT>
-        inline SequenceT erase_nth_copy( 
-            const SequenceT& Input,
-            const RangeT& Search,
-            int Nth )
-        {
-            return find_format_copy( 
-                Input, 
-                nth_finder(Search, Nth),
-                empty_formatter(Input) );
-        }
-
-        //! Erase nth algorithm
-        /*!
-            Remove the Nth occurrence of the substring in the input.
-            The input sequence is modified in-place.
-
-            \param Input An input string
-            \param Search A substring to be searched for. 
-            \param Nth An index of the match to be replaced. The index is 0-based.
-                For negative N, matches are counted from the end of string.
-        */
-        template<typename SequenceT, typename RangeT>
-        inline void erase_nth( 
-            SequenceT& Input,
-            const RangeT& Search,
-            int Nth )
-        {
-            find_format( 
-                Input, 
-                nth_finder(Search, Nth),
-                empty_formatter(Input) );
-        }
-
-//  erase_nth ( case insensitive ) ---------------------------------------------//
-
-        //! Erase nth algorithm ( case insensitive )
-        /*!
-            Remove the Nth occurrence of the substring in the input.
-            The result is a modified copy of the input. It is returned as a sequence 
-            or copied to the output iterator. 
-            Searching is case insensitive.
-
-            \param Output An output iterator to which the result will be copied
-            \param Input An input string
-            \param Search A substring to be searched for.
-            \param Nth An index of the match to be replaced. The index is 0-based.
-                For negative N, matches are counted from the end of string.
-            \param Loc A locale used for case insensitive comparison
-            \return An output iterator pointing just after the last inserted character or
-                a modified copy of the input
-
-            \note The second variant of this function provides the strong exception-safety guarantee
-        */
-        template<
-            typename OutputIteratorT,
-            typename Range1T, 
-            typename Range2T>
-        inline OutputIteratorT ierase_nth_copy(
-            OutputIteratorT Output,
-            const Range1T& Input,
-            const Range2T& Search,
-            int Nth,
-            const std::locale& Loc=std::locale() )
-        {
-            return find_format_copy(
-                Output,
-                Input,
-                nth_finder(Search, Nth, is_iequal(Loc)),
-                empty_formatter(Input) );
-        }
-
-        //! Erase nth algorithm
-        /*!
-            \overload
-        */
-        template<typename SequenceT, typename RangeT>
-        inline SequenceT ierase_nth_copy( 
-            const SequenceT& Input,
-            const RangeT& Search,
-            int Nth,
-            const std::locale& Loc=std::locale() )
-        {
-            return find_format_copy( 
-                Input, 
-                nth_finder(Search, Nth, is_iequal(Loc)),
-                empty_formatter(Input) );
-        }
-
-        //! Erase nth algorithm
-        /*!
-            Remove the Nth occurrence of the substring in the input.
-            The input sequence is modified in-place. Searching is case insensitive.
-
-            \param Input An input string
-            \param Search A substring to be searched for. 
-            \param Nth An index of the match to be replaced. The index is 0-based.
-                For negative N, matches are counted from the end of string.
-            \param Loc A locale used for case insensitive comparison
-        */
-        template<typename SequenceT, typename RangeT>
-        inline void ierase_nth( 
-            SequenceT& Input,
-            const RangeT& Search,
-            int Nth,
-            const std::locale& Loc=std::locale() )
-        {
-            find_format( 
-                Input, 
-                nth_finder(Search, Nth, is_iequal(Loc)),
-                empty_formatter(Input) );
-        }
-
-
-//  erase_all  --------------------------------------------------------//
-
-        //! Erase all algorithm
-        /*!
-            Remove all the occurrences of the string from the input. 
-            The result is a modified copy of the input. It is returned as a sequence 
-            or copied to the output iterator.
-                        
-
-            \param Output An output iterator to which the result will be copied
-            \param Input An input sequence
-            \param Search A substring to be searched for. 
-            \return An output iterator pointing just after the last inserted character or
-                    a modified copy of the input
-
-            \note The second variant of this function provides the strong exception-safety guarantee
-        */
-        template<
-            typename OutputIteratorT,
-            typename Range1T, 
-            typename Range2T>
-        inline OutputIteratorT erase_all_copy(
-            OutputIteratorT Output,
-            const Range1T& Input,
-            const Range2T& Search )
-        {
-            return find_format_all_copy(
-                Output,
-                Input,
-                first_finder(Search),
-                empty_formatter(Input) );
-        }
-
-        //! Erase all algorithm
-        /*!
-            \overload
-        */  
-        template<typename SequenceT, typename RangeT>
-        inline SequenceT erase_all_copy( 
-            const SequenceT& Input,
-            const RangeT& Search )
-        {
-            return find_format_all_copy( 
-                Input, 
-                first_finder(Search),
-                empty_formatter(Input) );
-        }
-
-        //! Erase all algorithm
-        /*!
-            Remove all the occurrences of the string from the input. 
-            The input sequence is modified in-place.
-
-            \param Input An input string
-            \param Search A substring to be searched for. 
-        */
-        template<typename SequenceT, typename RangeT>
-        inline void erase_all( 
-            SequenceT& Input,
-            const RangeT& Search )
-        {
-            find_format_all( 
-                Input, 
-                first_finder(Search),
-                empty_formatter(Input) );
-        }
-
-//  erase_all ( case insensitive ) ------------------------------------//
-
-        //! Erase all algorithm ( case insensitive )
-        /*!
-            Remove all the occurrences of the string from the input. 
-            The result is a modified copy of the input. It is returned as a sequence 
-            or copied to the output iterator. 
-            Searching is case insensitive.
-
-            \param Output An output iterator to which the result will be copied
-            \param Input An input string
-            \param Search A substring to be searched for
-            \param Loc A locale used for case insensitive comparison
-            \return An output iterator pointing just after the last inserted character or
-                    a modified copy of the input
-
-              \note The second variant of this function provides the strong exception-safety guarantee
-        */
-        template<
-            typename OutputIteratorT,
-            typename Range1T, 
-            typename Range2T>
-        inline OutputIteratorT ierase_all_copy(
-            OutputIteratorT Output,
-            const Range1T& Input,
-            const Range2T& Search,
-            const std::locale& Loc=std::locale() )
-        {
-            return find_format_all_copy(
-                Output,
-                Input,
-                first_finder(Search, is_iequal(Loc)),
-                empty_formatter(Input) );
-        }
-
-        //! Erase all algorithm ( case insensitive )
-        /*!
-            \overload
-        */
-        template<typename SequenceT, typename RangeT>
-        inline SequenceT ierase_all_copy( 
-            const SequenceT& Input,
-            const RangeT& Search,
-            const std::locale& Loc=std::locale() )
-        {
-            return find_format_all_copy( 
-                Input, 
-                first_finder(Search, is_iequal(Loc)),
-                empty_formatter(Input) );
-        }
-
-        //! Erase all algorithm ( case insensitive )
-        /*!
-            Remove all the occurrences of the string from the input. 
-            The input sequence is modified in-place. Searching is case insensitive.
-
-            \param Input An input string
-            \param Search A substring to be searched for. 
-            \param Loc A locale used for case insensitive comparison
-        */
-        template<typename SequenceT, typename RangeT>
-        inline void ierase_all( 
-            SequenceT& Input,
-            const RangeT& Search,
-            const std::locale& Loc=std::locale() )
-        {
-            find_format_all( 
-                Input, 
-                first_finder(Search, is_iequal(Loc)),
-                empty_formatter(Input) );
-        }
-
-//  erase_head --------------------------------------------------------------------//
-
-        //! Erase head algorithm
-        /*!
-            Remove the head from the input. The head is a prefix of a sequence of given size. 
-            If the sequence is shorter then required, the whole string is 
-            considered to be the head. The result is a modified copy of the input. 
-            It is returned as a sequence or copied to the output iterator.
-            
-
-            \param Output An output iterator to which the result will be copied
-            \param Input An input string
-            \param N Length of the head.
-                For N>=0, at most N characters are extracted.
-                For N<0, size(Input)-|N| characters are extracted.
-            \return An output iterator pointing just after the last inserted character or
-                a modified copy of the input
-
-             \note The second variant of this function provides the strong exception-safety guarantee
-        */
-        template<
-            typename OutputIteratorT,
-            typename RangeT>
-        inline OutputIteratorT erase_head_copy(
-            OutputIteratorT Output,
-            const RangeT& Input,
-            int N )
-        {
-            return find_format_copy(
-                Output,
-                Input,
-                head_finder(N),
-                empty_formatter( Input ) );
-        }
-
-        //! Erase head algorithm
-        /*!
-            \overload
-        */
-        template<typename SequenceT>
-        inline SequenceT erase_head_copy( 
-            const SequenceT& Input,
-            int N )
-        {
-            return find_format_copy( 
-                Input,
-                head_finder(N),
-                empty_formatter( Input ) );
-        }
-
-        //! Erase head algorithm
-        /*!
-            Remove the head from the input. The head is a prefix of a sequence of given size. 
-            If the sequence is shorter then required, the whole string is 
-            considered to be the head. The input sequence is modified in-place.
-
-            \param Input An input string
-            \param N Length of the head
-                For N>=0, at most N characters are extracted.
-                For N<0, size(Input)-|N| characters are extracted.
-        */
-        template<typename SequenceT>
-        inline void erase_head( 
-            SequenceT& Input,
-            int N )
-        {
-            find_format( 
-                Input, 
-                head_finder(N),
-                empty_formatter( Input ) );
-        }
-
-//  erase_tail --------------------------------------------------------------------//
-
-        //! Erase tail algorithm
-        /*!
-            Remove the tail from the input. The tail is a suffix of a sequence of given size. 
-            If the sequence is shorter then required, the whole string is 
-            considered to be the tail. 
-            The result is a modified copy of the input. It is returned as a sequence 
-            or copied to the output iterator.
-
-            \param Output An output iterator to which the result will be copied
-            \param Input An input string
-            \param N Length of the head.                 
-                For N>=0, at most N characters are extracted.
-                For N<0, size(Input)-|N| characters are extracted.
-            \return An output iterator pointing just after the last inserted character or
-                a modified copy of the input
-            
-             \note The second variant of this function provides the strong exception-safety guarantee
-        */
-        template<
-            typename OutputIteratorT,
-            typename RangeT>
-        inline OutputIteratorT erase_tail_copy(
-            OutputIteratorT Output,
-            const RangeT& Input,
-            int N )
-        {
-            return find_format_copy(
-                Output,
-                Input,
-                tail_finder(N),
-                empty_formatter( Input ) );
-        }
-
-        //! Erase tail algorithm
-        /*!
-            \overload
-        */
-        template<typename SequenceT>
-        inline SequenceT erase_tail_copy( 
-            const SequenceT& Input,
-            int N )
-        {
-            return find_format_copy( 
-                Input,
-                tail_finder(N),
-                empty_formatter( Input ) );
-        }
-
-        //! Erase tail algorithm
-        /*!
-            Remove the tail from the input. The tail is a suffix of a sequence of given size. 
-            If the sequence is shorter then required, the whole string is
-            considered to be the tail. The input sequence is modified in-place.
-
-            \param Input An input string
-            \param N Length of the head
-                For N>=0, at most N characters are extracted.
-                For N<0, size(Input)-|N| characters are extracted.
-        */
-        template<typename SequenceT>
-        inline void erase_tail( 
-            SequenceT& Input,
-            int N )
-        {
-            find_format( 
-                Input, 
-                tail_finder(N),
-                empty_formatter( Input ) );
-        }
-
-    } // namespace algorithm
-
-    // pull names into the boost namespace
-    using algorithm::erase_range_copy;
-    using algorithm::erase_range;
-    using algorithm::erase_first_copy;
-    using algorithm::erase_first;
-    using algorithm::ierase_first_copy;
-    using algorithm::ierase_first;
-    using algorithm::erase_last_copy;
-    using algorithm::erase_last;
-    using algorithm::ierase_last_copy;
-    using algorithm::ierase_last;
-    using algorithm::erase_nth_copy;
-    using algorithm::erase_nth;
-    using algorithm::ierase_nth_copy;
-    using algorithm::ierase_nth;
-    using algorithm::erase_all_copy;
-    using algorithm::erase_all;
-    using algorithm::ierase_all_copy;
-    using algorithm::ierase_all;
-    using algorithm::erase_head_copy;
-    using algorithm::erase_head;
-    using algorithm::erase_tail_copy;
-    using algorithm::erase_tail;
-
-} // namespace boost
-
-
-#endif  // BOOST_ERASE_HPP

+ 0 - 334
feng-authnotify/ext/boost/algorithm/string/find.hpp

@@ -1,334 +0,0 @@
-//  Boost string_algo library find.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2003.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_FIND_HPP
-#define BOOST_STRING_FIND_HPP
-
-#include <boost/algorithm/string/config.hpp>
-
-#include <boost/range/iterator_range.hpp>
-#include <boost/range/begin.hpp>
-#include <boost/range/end.hpp>
-#include <boost/range/iterator.hpp>
-#include <boost/range/as_literal.hpp>
-
-#include <boost/algorithm/string/finder.hpp>
-#include <boost/algorithm/string/compare.hpp>
-#include <boost/algorithm/string/constants.hpp>
-
-/*! \file
-    Defines a set of find algorithms. The algorithms are searching
-    for a substring of the input. The result is given as an \c iterator_range
-    delimiting the substring.
-*/
-
-namespace boost {
-    namespace algorithm {
-
-//  Generic find -----------------------------------------------//
-
-        //! Generic find algorithm
-        /*!
-            Search the input using the given finder.
-
-            \param Input A string which will be searched.
-            \param Finder Finder object used for searching.
-            \return 
-                An \c iterator_range delimiting the match. 
-                Returned iterator is either \c RangeT::iterator or 
-                \c RangeT::const_iterator, depending on the constness of 
-                the input parameter.
-        */
-        template<typename RangeT, typename FinderT>
-        inline iterator_range< 
-            BOOST_STRING_TYPENAME range_iterator<RangeT>::type>
-        find( 
-            RangeT& Input, 
-            const FinderT& Finder)
-        {
-            iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_input(as_literal(Input));
-
-            return Finder(::boost::begin(lit_input),::boost::end(lit_input));
-        }
-
-//  find_first  -----------------------------------------------//
-
-        //! Find first algorithm
-        /*!
-            Search for the first occurrence of the substring in the input. 
-            
-            \param Input A string which will be searched.
-            \param Search A substring to be searched for.
-            \return 
-                An \c iterator_range delimiting the match. 
-                Returned iterator is either \c RangeT::iterator or 
-                \c RangeT::const_iterator, depending on the constness of 
-                the input parameter.
-
-              \note This function provides the strong exception-safety guarantee
-        */
-        template<typename Range1T, typename Range2T>
-        inline iterator_range< 
-            BOOST_STRING_TYPENAME range_iterator<Range1T>::type>
-        find_first( 
-            Range1T& Input, 
-            const Range2T& Search)
-        {
-            return find(Input, first_finder(Search));
-        }
-
-        //! Find first algorithm ( case insensitive )
-        /*!
-            Search for the first occurence of the substring in the input. 
-            Searching is case insensitive.
-            
-            \param Input A string which will be searched.
-            \param Search A substring to be searched for.
-            \param Loc A locale used for case insensitive comparison
-            \return 
-                An \c iterator_range delimiting the match. 
-                Returned iterator is either \c Range1T::iterator or 
-                \c Range1T::const_iterator, depending on the constness of 
-                the input parameter.
-
-            \note This function provides the strong exception-safety guarantee
-        */
-        template<typename Range1T, typename Range2T>
-        inline iterator_range< 
-            BOOST_STRING_TYPENAME range_iterator<Range1T>::type>
-        ifind_first( 
-            Range1T& Input, 
-            const Range2T& Search,
-            const std::locale& Loc=std::locale())
-        {
-            return find(Input, first_finder(Search,is_iequal(Loc)));
-        }
-
-//  find_last  -----------------------------------------------//
-
-        //! Find last algorithm
-        /*!
-            Search for the last occurrence of the substring in the input. 
-            
-            \param Input A string which will be searched.
-            \param Search A substring to be searched for.
-            \return 
-                An \c iterator_range delimiting the match. 
-                Returned iterator is either \c Range1T::iterator or 
-                \c Range1T::const_iterator, depending on the constness of 
-                the input parameter.
-
-            \note This function provides the strong exception-safety guarantee
-        */
-        template<typename Range1T, typename Range2T>
-        inline iterator_range< 
-            BOOST_STRING_TYPENAME range_iterator<Range1T>::type>
-        find_last( 
-            Range1T& Input, 
-            const Range2T& Search)
-        {
-            return find(Input, last_finder(Search));
-        }
-
-        //! Find last algorithm ( case insensitive )
-        /*!
-            Search for the last match a string in the input. 
-            Searching is case insensitive.
-            
-            \param Input A string which will be searched.
-            \param Search A substring to be searched for.
-            \param Loc A locale used for case insensitive comparison
-            \return 
-                An \c iterator_range delimiting the match. 
-                Returned iterator is either \c Range1T::iterator or 
-                \c Range1T::const_iterator, depending on the constness of 
-                the input parameter.
-        
-            \note This function provides the strong exception-safety guarantee    
-        */
-        template<typename Range1T, typename Range2T>
-        inline iterator_range< 
-            BOOST_STRING_TYPENAME range_iterator<Range1T>::type>
-        ifind_last( 
-            Range1T& Input, 
-            const Range2T& Search,
-            const std::locale& Loc=std::locale())
-        {
-            return find(Input, last_finder(Search, is_iequal(Loc)));
-        }
-
-//  find_nth ----------------------------------------------------------------------//
-
-        //! Find n-th algorithm 
-        /*!
-            Search for the n-th (zero-indexed) occurrence of the substring in the 
-            input.         
-            
-            \param Input A string which will be searched.
-            \param Search A substring to be searched for.
-            \param Nth An index (zero-indexed) of the match to be found.
-                For negative N, the matches are counted from the end of string.
-            \return 
-                An \c iterator_range delimiting the match. 
-                Returned iterator is either \c Range1T::iterator or 
-                \c Range1T::const_iterator, depending on the constness of 
-                the input parameter.
-        */
-        template<typename Range1T, typename Range2T>
-        inline iterator_range< 
-            BOOST_STRING_TYPENAME range_iterator<Range1T>::type>
-        find_nth( 
-            Range1T& Input, 
-            const Range2T& Search,
-            int Nth)
-        {
-            return find(Input, nth_finder(Search,Nth));
-        }
-
-        //! Find n-th algorithm ( case insensitive ).
-        /*!
-            Search for the n-th (zero-indexed) occurrence of the substring in the 
-            input. Searching is case insensitive.
-            
-            \param Input A string which will be searched.
-            \param Search A substring to be searched for.
-            \param Nth An index (zero-indexed) of the match to be found. 
-                For negative N, the matches are counted from the end of string.
-            \param Loc A locale used for case insensitive comparison
-            \return 
-                An \c iterator_range delimiting the match. 
-                Returned iterator is either \c Range1T::iterator or 
-                \c Range1T::const_iterator, depending on the constness of 
-                the input parameter.
-
-
-            \note This function provides the strong exception-safety guarantee
-        */
-        template<typename Range1T, typename Range2T>
-        inline iterator_range< 
-            BOOST_STRING_TYPENAME range_iterator<Range1T>::type>
-        ifind_nth( 
-            Range1T& Input, 
-            const Range2T& Search,
-            int Nth,
-            const std::locale& Loc=std::locale())
-        {
-            return find(Input, nth_finder(Search,Nth,is_iequal(Loc)));
-        }
-
-//  find_head ----------------------------------------------------------------------//
-
-        //! Find head algorithm
-        /*!
-            Get the head of the input. Head is a prefix of the string of the 
-            given size. If the input is shorter then required, whole input if considered 
-            to be the head.
-
-            \param Input An input string
-            \param N Length of the head
-                For N>=0, at most N characters are extracted.
-                For N<0, size(Input)-|N| characters are extracted.
-            \return 
-                An \c iterator_range delimiting the match. 
-                Returned iterator is either \c Range1T::iterator or 
-                \c Range1T::const_iterator, depending on the constness of 
-                the input parameter.
-
-            \note This function provides the strong exception-safety guarantee
-        */
-        template<typename RangeT>
-        inline iterator_range< 
-            BOOST_STRING_TYPENAME range_iterator<RangeT>::type>
-        find_head( 
-            RangeT& Input, 
-            int N)
-        {
-            return find(Input, head_finder(N));
-        }
-
-//  find_tail ----------------------------------------------------------------------//
-
-        //! Find tail algorithm
-        /*!
-            Get the head of the input. Head is a suffix of the string of the 
-            given size. If the input is shorter then required, whole input if considered 
-            to be the tail.
-
-            \param Input An input string
-            \param N Length of the tail. 
-                For N>=0, at most N characters are extracted.
-                For N<0, size(Input)-|N| characters are extracted.
-            \return 
-                An \c iterator_range delimiting the match. 
-                Returned iterator is either \c RangeT::iterator or 
-                \c RangeT::const_iterator, depending on the constness of 
-                the input parameter.
-
-
-            \note This function provides the strong exception-safety guarantee
-        */
-        template<typename RangeT>
-        inline iterator_range< 
-            BOOST_STRING_TYPENAME range_iterator<RangeT>::type>
-        find_tail( 
-            RangeT& Input, 
-            int N)
-        {
-            return find(Input, tail_finder(N));
-        }
-
-//  find_token --------------------------------------------------------------------//
-
-        //! Find token algorithm
-        /*!
-            Look for a given token in the string. Token is a character that matches the
-            given predicate.
-            If the "token compress mode" is enabled, adjacent tokens are considered to be one match.
-            
-            \param Input A input string.
-            \param Pred An unary predicate to identify a token
-            \param eCompress Enable/Disable compressing of adjacent tokens
-            \return 
-                An \c iterator_range delimiting the match. 
-                Returned iterator is either \c RangeT::iterator or 
-                \c RangeT::const_iterator, depending on the constness of 
-                the input parameter.
-        
-            \note This function provides the strong exception-safety guarantee    
-        */
-        template<typename RangeT, typename PredicateT>
-        inline iterator_range< 
-            BOOST_STRING_TYPENAME range_iterator<RangeT>::type>
-        find_token( 
-            RangeT& Input,
-            PredicateT Pred,
-            token_compress_mode_type eCompress=token_compress_off)
-        {
-            return find(Input, token_finder(Pred, eCompress));
-        }
-
-    } // namespace algorithm
-
-    // pull names to the boost namespace
-    using algorithm::find;
-    using algorithm::find_first;
-    using algorithm::ifind_first;
-    using algorithm::find_last;
-    using algorithm::ifind_last;
-    using algorithm::find_nth;
-    using algorithm::ifind_nth;
-    using algorithm::find_head;
-    using algorithm::find_tail;
-    using algorithm::find_token;
-
-} // namespace boost
-
-
-#endif  // BOOST_STRING_FIND_HPP

+ 0 - 269
feng-authnotify/ext/boost/algorithm/string/find_format.hpp

@@ -1,269 +0,0 @@
-//  Boost string_algo library find_format.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2003.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_FIND_FORMAT_HPP
-#define BOOST_STRING_FIND_FORMAT_HPP
-
-#include <deque>
-#include <boost/detail/iterator.hpp>
-#include <boost/range/iterator_range.hpp>
-#include <boost/range/begin.hpp>
-#include <boost/range/end.hpp>
-#include <boost/range/const_iterator.hpp>
-#include <boost/range/as_literal.hpp>
-
-#include <boost/algorithm/string/concept.hpp>
-#include <boost/algorithm/string/detail/find_format.hpp>
-#include <boost/algorithm/string/detail/find_format_all.hpp>
-
-/*! \file
-    Defines generic replace algorithms. Each algorithm replaces
-    part(s) of the input. The part to be replaced is looked up using a Finder object.
-    Result of finding is then used by a Formatter object to generate the replacement.
-*/
-
-namespace boost {
-    namespace algorithm {
-
-// generic replace  -----------------------------------------------------------------//
-
-        //! Generic replace algorithm
-        /*!
-            Use the Finder to search for a substring. Use the Formatter to format
-            this substring and replace it in the input.
-            The result is a modified copy of the input. It is returned as a sequence 
-            or copied to the output iterator.
-    
-            \param Output An output iterator to which the result will be copied
-            \param Input An input sequence
-            \param Finder A Finder object used to search for a match to be replaced
-            \param Formatter A Formatter object used to format a match
-            \return An output iterator pointing just after the last inserted character or
-                a modified copy of the input
-
-            \note The second variant of this function provides the strong exception-safety guarantee
-        */
-        template< 
-            typename OutputIteratorT,
-            typename RangeT,
-            typename FinderT,
-            typename FormatterT>
-        inline OutputIteratorT find_format_copy(
-            OutputIteratorT Output,
-            const RangeT& Input,
-            FinderT Finder,
-            FormatterT Formatter )
-        {
-            // Concept check
-            function_requires< 
-                FinderConcept<FinderT,
-                BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >();
-            function_requires< 
-                FormatterConcept<
-                    FormatterT,
-                    FinderT,BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >();
-
-            iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_input(as_literal(Input));
-
-            return detail::find_format_copy_impl(
-                Output,
-                lit_input,
-                Formatter,
-                Finder( ::boost::begin(lit_input), ::boost::end(lit_input) ) );
-        }
-
-        //! Generic replace algorithm
-        /*!
-            \overload
-        */
-        template< 
-            typename SequenceT, 
-            typename FinderT,
-            typename FormatterT>
-        inline SequenceT find_format_copy(
-            const SequenceT& Input,
-            FinderT Finder,
-            FormatterT Formatter )
-        {
-            // Concept check
-            function_requires< 
-                FinderConcept<FinderT,
-                BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();
-            function_requires< 
-                FormatterConcept<
-                    FormatterT,
-                    FinderT,BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();
-
-            return detail::find_format_copy_impl(
-                Input,
-                Formatter,
-                Finder(::boost::begin(Input), ::boost::end(Input)));
-        }
-
-        //! Generic replace algorithm
-        /*!
-            Use the Finder to search for a substring. Use the Formatter to format
-            this substring and replace it in the input. The input is modified in-place.
-
-            \param Input An input sequence
-            \param Finder A Finder object used to search for a match to be replaced
-            \param Formatter A Formatter object used to format a match
-        */
-        template<
-            typename SequenceT,
-            typename FinderT,
-            typename FormatterT>
-        inline void find_format( 
-            SequenceT& Input,
-            FinderT Finder,
-            FormatterT Formatter)
-        {
-            // Concept check
-            function_requires< 
-                FinderConcept<FinderT,
-                BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();
-            function_requires< 
-                FormatterConcept<
-                    FormatterT,
-                    FinderT,BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();
-
-            detail::find_format_impl(
-                Input,
-                Formatter,
-                Finder(::boost::begin(Input), ::boost::end(Input)));
-        }
-
-
-//  find_format_all generic ----------------------------------------------------------------//
-
-        //! Generic replace all algorithm
-        /*!
-            Use the Finder to search for a substring. Use the Formatter to format
-            this substring and replace it in the input. Repeat this for all matching
-            substrings.
-            The result is a modified copy of the input. It is returned as a sequence 
-            or copied to the output iterator.
-
-            \param Output An output iterator to which the result will be copied
-            \param Input An input sequence
-            \param Finder A Finder object used to search for a match to be replaced
-            \param Formatter A Formatter object used to format a match
-            \return An output iterator pointing just after the last inserted character or
-                a modified copy of the input
-
-             \note The second variant of this function provides the strong exception-safety guarantee
-        */
-        template< 
-            typename OutputIteratorT,
-            typename RangeT,
-            typename FinderT,
-            typename FormatterT>
-        inline OutputIteratorT find_format_all_copy(
-            OutputIteratorT Output,
-            const RangeT& Input,
-            FinderT Finder,
-            FormatterT Formatter)
-        {
-            // Concept check
-            function_requires< 
-                FinderConcept<FinderT,
-                BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >();
-            function_requires< 
-                FormatterConcept<
-                    FormatterT,
-                    FinderT,BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >();
-
-            iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_input(as_literal(Input));
-
-            return detail::find_format_all_copy_impl(
-                Output,
-                lit_input,
-                Finder,
-                Formatter,
-                Finder(::boost::begin(lit_input), ::boost::end(lit_input)));
-        }
-
-        //! Generic replace all algorithm
-        /*!
-            \overload
-        */
-        template< 
-            typename SequenceT, 
-            typename FinderT,
-            typename FormatterT >
-        inline SequenceT find_format_all_copy(
-            const SequenceT& Input,
-            FinderT Finder,
-            FormatterT Formatter )
-        {
-            // Concept check
-            function_requires< 
-                FinderConcept<FinderT,
-                BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();
-            function_requires< 
-                FormatterConcept<
-                    FormatterT,
-                    FinderT,BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();
-
-            return detail::find_format_all_copy_impl(
-                Input,
-                Finder,
-                Formatter,
-                Finder( ::boost::begin(Input), ::boost::end(Input) ) );
-        }
-
-        //! Generic replace all algorithm
-        /*!
-            Use the Finder to search for a substring. Use the Formatter to format
-            this substring and replace it in the input. Repeat this for all matching
-            substrings.The input is modified in-place.
-
-            \param Input An input sequence
-            \param Finder A Finder object used to search for a match to be replaced
-            \param Formatter A Formatter object used to format a match
-        */
-        template<
-            typename SequenceT,
-            typename FinderT,
-            typename FormatterT >
-        inline void find_format_all( 
-            SequenceT& Input,
-            FinderT Finder,
-            FormatterT Formatter )
-        {
-            // Concept check
-            function_requires< 
-                FinderConcept<FinderT,
-                BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();
-            function_requires< 
-                FormatterConcept<
-                    FormatterT,
-                    FinderT,BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();
-
-            detail::find_format_all_impl(
-                Input,
-                Finder,
-                Formatter,
-                Finder(::boost::begin(Input), ::boost::end(Input)));
-
-        }
-
-    } // namespace algorithm
-
-    // pull the names to the boost namespace
-    using algorithm::find_format_copy;
-    using algorithm::find_format;
-    using algorithm::find_format_all_copy;
-    using algorithm::find_format_all;
-
-} // namespace boost
-
-
-#endif  // BOOST_STRING_FIND_FORMAT_HPP

+ 0 - 375
feng-authnotify/ext/boost/algorithm/string/find_iterator.hpp

@@ -1,375 +0,0 @@
-//  Boost string_algo library find_iterator.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2004.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_FIND_ITERATOR_HPP
-#define BOOST_STRING_FIND_ITERATOR_HPP
-
-#include <boost/algorithm/string/config.hpp>
-#include <boost/iterator/iterator_facade.hpp>
-#include <boost/iterator/iterator_categories.hpp>
-
-#include <boost/range/iterator_range.hpp>
-#include <boost/range/begin.hpp>
-#include <boost/range/end.hpp>
-#include <boost/range/iterator.hpp>
-#include <boost/range/as_literal.hpp>
-
-#include <boost/algorithm/string/detail/find_iterator.hpp>
-
-/*! \file
-    Defines find iterator classes. Find iterator repeatedly applies a Finder
-    to the specified input string to search for matches. Dereferencing
-    the iterator yields the current match or a range between the last and the current
-    match depending on the iterator used.
-*/
-
-namespace boost {
-    namespace algorithm { 
-
-//  find_iterator -----------------------------------------------//
-
-        //! find_iterator
-        /*!    
-            Find iterator encapsulates a Finder and allows
-            for incremental searching in a string.
-            Each increment moves the iterator to the next match.
-
-            Find iterator is a readable forward traversal iterator.
-
-            Dereferencing the iterator yields an iterator_range delimiting
-            the current match.
-        */
-        template<typename IteratorT>
-        class find_iterator : 
-            public iterator_facade<
-                find_iterator<IteratorT>,
-                const iterator_range<IteratorT>,
-                forward_traversal_tag >,
-            private detail::find_iterator_base<IteratorT>
-        {
-        private:
-            // facade support
-            friend class ::boost::iterator_core_access;
-
-        private:
-        // typedefs
-
-            typedef detail::find_iterator_base<IteratorT> base_type;
-            typedef BOOST_STRING_TYPENAME 
-                base_type::input_iterator_type input_iterator_type;
-            typedef BOOST_STRING_TYPENAME 
-                base_type::match_type match_type;
-
-        public:
-            //! Default constructor
-            /*!
-                Construct null iterator. All null iterators are equal.
-
-                \post eof()==true
-            */
-            find_iterator() {}
-
-            //! Copy constructor
-            /*!
-                Construct a copy of the find_iterator
-            */
-            find_iterator( const find_iterator& Other ) :
-                base_type(Other),
-                m_Match(Other.m_Match),
-                m_End(Other.m_End) {}
-
-            //! Constructor
-            /*!
-                Construct new find_iterator for a given finder
-                and a range.
-            */
-            template<typename FinderT>
-            find_iterator(
-                    IteratorT Begin,
-                    IteratorT End,
-                    FinderT Finder ) :
-                detail::find_iterator_base<IteratorT>(Finder,0),
-                m_Match(Begin,Begin),
-                m_End(End)
-            {
-                increment();
-            }
-
-            //! Constructor
-            /*!
-                Construct new find_iterator for a given finder
-                and a range.
-            */
-            template<typename FinderT, typename RangeT>
-            find_iterator(
-                    RangeT& Col,
-                    FinderT Finder ) :
-                detail::find_iterator_base<IteratorT>(Finder,0)
-            {
-                iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_col(as_literal(Col));
-                m_Match=make_iterator_range(::boost::begin(lit_col), ::boost::begin(lit_col));
-                m_End=::boost::end(lit_col);
-
-                increment();
-            }
-
-        private:
-        // iterator operations
-
-            // dereference
-            const match_type& dereference() const
-            {
-                return m_Match;
-            }
-
-            // increment
-            void increment()
-            {
-                m_Match=this->do_find(m_Match.end(),m_End);
-            }
-
-            // comparison
-            bool equal( const find_iterator& Other ) const
-            {
-                bool bEof=eof();
-                bool bOtherEof=Other.eof();
-
-                return bEof || bOtherEof ? bEof==bOtherEof :
-                    (
-                        m_Match==Other.m_Match &&
-                        m_End==Other.m_End 
-                    );
-            }
-
-        public:
-        // operations
-
-            //! Eof check
-            /*!
-                Check the eof condition. Eof condition means that
-                there is nothing more to be searched i.e. find_iterator
-                is after the last match.
-            */
-            bool eof() const
-            {
-                return 
-                    this->is_null() || 
-                    ( 
-                        m_Match.begin() == m_End &&
-                        m_Match.end() == m_End
-                    );
-            }
-
-        private:
-        // Attributes
-            match_type m_Match;
-            input_iterator_type m_End;
-        };
-
-        //! find iterator construction helper
-        /*!
-         *    Construct a find iterator to iterate through the specified string
-         */
-        template<typename RangeT, typename FinderT>
-        inline find_iterator< 
-            BOOST_STRING_TYPENAME range_iterator<RangeT>::type>
-        make_find_iterator(
-            RangeT& Collection,
-            FinderT Finder)
-        {
-            return find_iterator<BOOST_STRING_TYPENAME range_iterator<RangeT>::type>(
-                Collection, Finder);
-        }
-
-//  split iterator -----------------------------------------------//
-
-        //! split_iterator
-        /*!    
-            Split iterator encapsulates a Finder and allows
-            for incremental searching in a string.
-            Unlike the find iterator, split iterator iterates
-            through gaps between matches.
-
-            Find iterator is a readable forward traversal iterator.
-
-            Dereferencing the iterator yields an iterator_range delimiting
-            the current match.
-        */
-        template<typename IteratorT>
-        class split_iterator : 
-            public iterator_facade<
-                split_iterator<IteratorT>,
-                const iterator_range<IteratorT>,
-                forward_traversal_tag >,
-            private detail::find_iterator_base<IteratorT>
-        {
-        private:
-            // facade support
-            friend class ::boost::iterator_core_access;
-
-        private:
-        // typedefs
-
-            typedef detail::find_iterator_base<IteratorT> base_type;
-            typedef BOOST_STRING_TYPENAME 
-                base_type::input_iterator_type input_iterator_type;
-            typedef BOOST_STRING_TYPENAME 
-                base_type::match_type match_type;
-
-        public:
-            //! Default constructor
-            /*!
-                Construct null iterator. All null iterators are equal.
-    
-                \post eof()==true
-            */
-            split_iterator() {}
-            //! Copy constructor
-            /*!
-                Construct a copy of the split_iterator
-            */
-            split_iterator( const split_iterator& Other ) :
-                base_type(Other),
-                m_Match(Other.m_Match),
-                m_Next(Other.m_Next),
-                m_End(Other.m_End),
-                m_bEof(false)
-            {}
-
-            //! Constructor
-            /*!
-                Construct new split_iterator for a given finder
-                and a range.
-            */
-            template<typename FinderT>
-            split_iterator(
-                    IteratorT Begin,
-                    IteratorT End,
-                    FinderT Finder ) :
-                detail::find_iterator_base<IteratorT>(Finder,0),
-                m_Match(Begin,Begin),
-                m_Next(Begin),
-                m_End(End),
-                m_bEof(false)
-            {
-                increment();
-            }
-            //! Constructor
-            /*!
-                Construct new split_iterator for a given finder
-                and a collection.
-            */
-            template<typename FinderT, typename RangeT>
-            split_iterator(
-                    RangeT& Col,
-                    FinderT Finder ) :
-                detail::find_iterator_base<IteratorT>(Finder,0),
-                m_bEof(false)
-            {
-                iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_col(as_literal(Col));
-                m_Match=make_iterator_range(::boost::begin(lit_col), ::boost::begin(lit_col));
-                m_Next=::boost::begin(lit_col);
-                m_End=::boost::end(lit_col);
-
-                increment();
-            }
-
-
-        private:
-        // iterator operations
-
-            // dereference
-            const match_type& dereference() const
-            {
-                return m_Match;
-            }
-
-            // increment
-            void increment()
-            {
-                match_type FindMatch=this->do_find( m_Next, m_End );
-
-                if(FindMatch.begin()==m_End && FindMatch.end()==m_End)
-                {
-                    if(m_Match.end()==m_End)
-                    {
-                        // Mark iterator as eof
-                        m_bEof=true;
-                    }
-                }
-
-                m_Match=match_type( m_Next, FindMatch.begin() );
-                m_Next=FindMatch.end();
-            }
-
-            // comparison
-            bool equal( const split_iterator& Other ) const
-            {
-                bool bEof=eof();
-                bool bOtherEof=Other.eof();
-
-                return bEof || bOtherEof ? bEof==bOtherEof :
-                    (
-                        m_Match==Other.m_Match &&
-                        m_Next==Other.m_Next &&
-                        m_End==Other.m_End
-                    );
-            }
-
-        public:
-        // operations
-
-            //! Eof check
-            /*!
-                Check the eof condition. Eof condition means that
-                there is nothing more to be searched i.e. find_iterator
-                is after the last match.
-            */
-            bool eof() const
-            {
-                return this->is_null() || m_bEof;
-            }
-
-        private:
-        // Attributes
-            match_type m_Match;
-            input_iterator_type m_Next;
-            input_iterator_type m_End;
-            bool m_bEof;
-        };
-
-        //! split iterator construction helper
-        /*!
-         *    Construct a split iterator to iterate through the specified collection
-         */
-        template<typename RangeT, typename FinderT>
-        inline split_iterator< 
-            BOOST_STRING_TYPENAME range_iterator<RangeT>::type>
-        make_split_iterator(
-            RangeT& Collection,
-            FinderT Finder)
-        {
-            return split_iterator<BOOST_STRING_TYPENAME range_iterator<RangeT>::type>(
-                Collection, Finder);
-        }
-
-
-    } // namespace algorithm
-
-    // pull names to the boost namespace
-    using algorithm::find_iterator;
-    using algorithm::make_find_iterator;
-    using algorithm::split_iterator;
-    using algorithm::make_split_iterator;
-
-} // namespace boost
-
-
-#endif  // BOOST_STRING_FIND_ITERATOR_HPP

+ 0 - 270
feng-authnotify/ext/boost/algorithm/string/finder.hpp

@@ -1,270 +0,0 @@
-//  Boost string_algo library finder.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2006.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_FINDER_HPP
-#define BOOST_STRING_FINDER_HPP
-
-#include <boost/algorithm/string/config.hpp>
-
-#include <boost/range/iterator_range.hpp>
-#include <boost/range/begin.hpp>
-#include <boost/range/end.hpp>
-#include <boost/range/iterator.hpp>
-#include <boost/range/const_iterator.hpp>
-
-#include <boost/algorithm/string/constants.hpp>
-#include <boost/algorithm/string/detail/finder.hpp>
-#include <boost/algorithm/string/compare.hpp>
-
-/*! \file
-    Defines Finder generators. Finder object is a functor which is able to 
-    find a substring matching a specific criteria in the input.
-    Finders are used as a pluggable components for replace, find 
-    and split facilities. This header contains generator functions 
-    for finders provided in this library.
-*/
-
-namespace boost {
-    namespace algorithm {
-
-//  Finder generators ------------------------------------------//
-        
-        //! "First" finder 
-        /*!
-            Construct the \c first_finder. The finder searches for the first
-            occurrence of the string in a given input.
-            The result is given as an \c iterator_range delimiting the match.
-
-            \param Search A substring to be searched for.
-            \param Comp An element comparison predicate
-            \return An instance of the \c first_finder object
-        */
-        template<typename RangeT>
-        inline detail::first_finderF<
-            BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type,
-            is_equal>
-        first_finder( const RangeT& Search )
-        {
-            return 
-                detail::first_finderF<
-                    BOOST_STRING_TYPENAME 
-                        range_const_iterator<RangeT>::type,
-                    is_equal>( as_literal(Search), is_equal() ) ;
-        }
-
-        //! "First" finder
-        /*!
-            \overload
-        */
-        template<typename RangeT,typename PredicateT>
-        inline detail::first_finderF<
-            BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type,
-            PredicateT>
-        first_finder( 
-            const RangeT& Search, PredicateT Comp )
-        {
-            return 
-                detail::first_finderF<
-                    BOOST_STRING_TYPENAME 
-                        range_const_iterator<RangeT>::type,
-                    PredicateT>( as_literal(Search), Comp );
-        }
-
-        //! "Last" finder
-        /*!
-            Construct the \c last_finder. The finder searches for the last
-            occurrence of the string in a given input.
-            The result is given as an \c iterator_range delimiting the match.
-
-            \param Search A substring to be searched for.
-            \param Comp An element comparison predicate
-            \return An instance of the \c last_finder object
-        */
-        template<typename RangeT>
-        inline detail::last_finderF<
-            BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type,
-            is_equal>
-        last_finder( const RangeT& Search )
-        {
-            return 
-                detail::last_finderF<
-                    BOOST_STRING_TYPENAME 
-                        range_const_iterator<RangeT>::type,
-                    is_equal>( as_literal(Search), is_equal() );
-        }
-        //! "Last" finder
-        /*!
-            \overload
-        */
-        template<typename RangeT, typename PredicateT>
-        inline detail::last_finderF<
-            BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type,
-            PredicateT>
-        last_finder( const RangeT& Search, PredicateT Comp )
-        {
-            return 
-                detail::last_finderF<
-                    BOOST_STRING_TYPENAME 
-                        range_const_iterator<RangeT>::type,
-                    PredicateT>( as_literal(Search), Comp ) ;
-        }
-
-        //! "Nth" finder
-        /*!
-            Construct the \c nth_finder. The finder searches for the n-th (zero-indexed)
-            occurrence of the string in a given input.
-            The result is given as an \c iterator_range delimiting the match.
-
-            \param Search A substring to be searched for.
-            \param Nth An index of the match to be find
-            \param Comp An element comparison predicate
-            \return An instance of the \c nth_finder object
-        */
-        template<typename RangeT>
-        inline detail::nth_finderF<
-            BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type,
-            is_equal>
-        nth_finder( 
-            const RangeT& Search, 
-            int Nth)
-        {
-            return 
-                detail::nth_finderF<
-                    BOOST_STRING_TYPENAME 
-                        range_const_iterator<RangeT>::type,
-                    is_equal>( as_literal(Search), Nth, is_equal() ) ;
-        }
-        //! "Nth" finder
-        /*!
-            \overload
-        */
-        template<typename RangeT, typename PredicateT>
-        inline detail::nth_finderF<
-            BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type,
-            PredicateT>
-        nth_finder( 
-            const RangeT& Search, 
-            int Nth, 
-            PredicateT Comp )
-        {
-            return 
-                detail::nth_finderF<
-                    BOOST_STRING_TYPENAME 
-                        range_const_iterator<RangeT>::type,
-                    PredicateT>( as_literal(Search), Nth, Comp );
-        }
-
-        //! "Head" finder
-        /*!
-            Construct the \c head_finder. The finder returns a head of a given
-            input. The head is a prefix of a string up to n elements in
-            size. If an input has less then n elements, whole input is 
-            considered a head.
-            The result is given as an \c iterator_range delimiting the match.
-
-            \param N The size of the head
-            \return An instance of the \c head_finder object
-        */
-        inline detail::head_finderF
-        head_finder( int N )
-        {
-            return detail::head_finderF(N);
-        }
-        
-        //! "Tail" finder
-        /*!
-            Construct the \c tail_finder. The finder returns a tail of a given
-            input. The tail is a suffix of a string up to n elements in
-            size. If an input has less then n elements, whole input is 
-            considered a head.
-            The result is given as an \c iterator_range delimiting the match.
-
-            \param N The size of the head
-            \return An instance of the \c tail_finder object
-        */
-        inline detail::tail_finderF
-        tail_finder( int N )
-        {
-            return detail::tail_finderF(N);
-        }
-
-        //! "Token" finder
-        /*!
-            Construct the \c token_finder. The finder searches for a token 
-            specified by a predicate. It is similar to std::find_if 
-            algorithm, with an exception that it return a range of
-            instead of a single iterator.
-
-            If "compress token mode" is enabled, adjacent matching tokens are 
-            concatenated into one match. Thus the finder can be used to 
-            search for continuous segments of characters satisfying the 
-            given predicate.
-
-            The result is given as an \c iterator_range delimiting the match.
-
-            \param Pred An element selection predicate
-            \param eCompress Compress flag
-            \return An instance of the \c token_finder object
-        */
-        template< typename PredicateT >
-        inline detail::token_finderF<PredicateT>
-        token_finder( 
-            PredicateT Pred, 
-            token_compress_mode_type eCompress=token_compress_off )
-        {
-            return detail::token_finderF<PredicateT>( Pred, eCompress );
-        }
-
-        //! "Range" finder
-        /*!
-            Construct the \c range_finder. The finder does not perform 
-            any operation. It simply returns the given range for 
-            any input. 
-
-            \param Begin Beginning of the range
-            \param End End of the range
-            \param Range The range.
-            \return An instance of the \c range_finger object
-        */
-        template< typename ForwardIteratorT >
-        inline detail::range_finderF<ForwardIteratorT>
-        range_finder(
-            ForwardIteratorT Begin,
-            ForwardIteratorT End )
-        {
-            return detail::range_finderF<ForwardIteratorT>( Begin, End );
-        }
-
-        //! "Range" finder
-        /*!       
-            \overload
-        */
-        template< typename ForwardIteratorT >
-        inline detail::range_finderF<ForwardIteratorT>
-        range_finder( iterator_range<ForwardIteratorT> Range )
-        {
-            return detail::range_finderF<ForwardIteratorT>( Range );
-        }
-
-    } // namespace algorithm
-
-    // pull the names to the boost namespace
-    using algorithm::first_finder;
-    using algorithm::last_finder;
-    using algorithm::nth_finder;
-    using algorithm::head_finder;
-    using algorithm::tail_finder;
-    using algorithm::token_finder;
-    using algorithm::range_finder;
-
-} // namespace boost
-
-
-#endif  // BOOST_STRING_FINDER_HPP

+ 0 - 103
feng-authnotify/ext/boost/algorithm/string/formatter.hpp

@@ -1,103 +0,0 @@
-//  Boost string_algo library formatter.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2003.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_FORMATTER_HPP
-#define BOOST_STRING_FORMATTER_HPP
-
-#include <boost/detail/iterator.hpp>
-#include <boost/range/value_type.hpp>
-#include <boost/range/iterator_range.hpp>
-#include <boost/range/as_literal.hpp>
-
-#include <boost/algorithm/string/detail/formatter.hpp>
-
-/*! \file
-    Defines Formatter generators. Formatter is a functor which formats
-    a string according to given parameters. A Formatter works
-    in conjunction with a Finder. A Finder can provide additional information
-    for a specific Formatter. An example of such a cooperation is regex_finder
-    and regex_formatter.
-
-    Formatters are used as pluggable components for replace facilities. 
-    This header contains generator functions for the Formatters provided in this library.
-*/
-
-namespace boost {
-    namespace algorithm {
-
-// generic formatters  ---------------------------------------------------------------//
-
-        //! Constant formatter
-        /*!
-            Construct the \c const_formatter. Const formatter always returns
-            the same value, regardless of the parameter.
-
-            \param Format A predefined value used as a result for formating
-            \return An instance of the \c const_formatter object.
-        */
-        template<typename RangeT>
-        inline detail::const_formatF<
-            iterator_range<
-                BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >
-        const_formatter(const RangeT& Format)
-        {
-            return detail::const_formatF<
-                iterator_range<
-                    BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >(as_literal(Format));
-        }
-
-        //! Identity formatter
-        /*!
-            Construct the \c identity_formatter. Identity formatter always returns
-            the parameter.
-
-            \return An instance of the \c identity_formatter object.
-        */
-        template<typename RangeT>
-        inline detail::identity_formatF<
-            iterator_range<
-                BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >
-        identity_formatter()
-        {
-            return detail::identity_formatF<
-                iterator_range<
-                    BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >();
-        }
-
-        //! Empty formatter
-        /*!
-            Construct the \c empty_formatter. Empty formatter always returns an empty
-            sequence. 
-
-            \param Input container used to select a correct value_type for the
-                         resulting empty_container<>.
-            \return An instance of the \c empty_formatter object.
-        */
-        template<typename RangeT>
-        inline detail::empty_formatF< 
-            BOOST_STRING_TYPENAME range_value<RangeT>::type>
-        empty_formatter(const RangeT&)
-        {
-            return detail::empty_formatF<
-                BOOST_STRING_TYPENAME range_value<RangeT>::type>();
-        }
-
-
-    } // namespace algorithm
-
-    // pull the names to the boost namespace
-    using algorithm::const_formatter;
-    using algorithm::identity_formatter;
-    using algorithm::empty_formatter;
-
-} // namespace boost
-
-
-#endif  // BOOST_FORMATTER_HPP

+ 0 - 190
feng-authnotify/ext/boost/algorithm/string/iter_find.hpp

@@ -1,190 +0,0 @@
-//  Boost string_algo library iter_find.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2003.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_ITER_FIND_HPP
-#define BOOST_STRING_ITER_FIND_HPP
-
-#include <boost/algorithm/string/config.hpp>
-#include <algorithm>
-#include <iterator>
-#include <boost/iterator/transform_iterator.hpp>
-
-#include <boost/range/iterator_range.hpp>
-#include <boost/range/begin.hpp>
-#include <boost/range/end.hpp>
-#include <boost/range/iterator.hpp>
-#include <boost/range/value_type.hpp>
-#include <boost/range/as_literal.hpp>
-
-#include <boost/algorithm/string/concept.hpp>
-#include <boost/algorithm/string/find_iterator.hpp>
-#include <boost/algorithm/string/detail/util.hpp>
-
-/*! \file
-    Defines generic split algorithms. Split algorithms can be 
-    used to divide a sequence into several part according 
-    to a given criteria. Result is given as a 'container 
-    of containers' where elements are copies or references 
-    to extracted parts.
-
-    There are two algorithms provided. One iterates over matching
-    substrings, the other one over the gaps between these matches.
-*/
-
-namespace boost {
-    namespace algorithm {
-
-//  iterate find ---------------------------------------------------//
-
-        //! Iter find algorithm
-        /*!
-            This algorithm executes a given finder in iteration on the input,
-            until the end of input is reached, or no match is found.
-            Iteration is done using built-in find_iterator, so the real 
-            searching is performed only when needed.
-            In each iteration new match is found and added to the result.
-
-            \param Result A 'container container' to contain the result of search.
-                Both outer and inner container must have constructor taking a pair
-                of iterators as an argument.
-                Typical type of the result is 
-                    \c std::vector<boost::iterator_range<iterator>>
-                (each element of such a vector will container a range delimiting 
-                a match).
-            \param Input A container which will be searched.
-            \param Finder A Finder object used for searching
-            \return A reference the result
-
-            \note Prior content of the result will be overwritten.
-        */
-        template< 
-            typename SequenceSequenceT,
-            typename RangeT,
-            typename FinderT >
-        inline SequenceSequenceT&
-        iter_find(
-            SequenceSequenceT& Result,
-            RangeT& Input,
-            FinderT Finder )
-        {
-            function_requires< 
-                FinderConcept<FinderT,
-                BOOST_STRING_TYPENAME range_iterator<RangeT>::type> >();
-
-            iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_input(as_literal(Input));
-
-            typedef BOOST_STRING_TYPENAME 
-                range_iterator<RangeT>::type input_iterator_type;
-            typedef find_iterator<input_iterator_type> find_iterator_type;
-            typedef detail::copy_iterator_rangeF<
-                BOOST_STRING_TYPENAME 
-                    range_value<SequenceSequenceT>::type,
-                input_iterator_type> copy_range_type;
-            
-            input_iterator_type InputEnd=::boost::end(lit_input);
-
-            typedef transform_iterator<copy_range_type, find_iterator_type>
-                transform_iter_type;
-    
-            transform_iter_type itBegin=
-                make_transform_iterator( 
-                    find_iterator_type( ::boost::begin(lit_input), InputEnd, Finder ),
-                    copy_range_type());
-            
-            transform_iter_type itEnd=
-                make_transform_iterator( 
-                    find_iterator_type(),
-                    copy_range_type());
-
-            SequenceSequenceT Tmp(itBegin, itEnd);
-                        
-            Result.swap(Tmp);
-            return Result;
-        }
-
-//  iterate split ---------------------------------------------------//
-
-        //! Split find algorithm
-        /*!
-            This algorithm executes a given finder in iteration on the input,
-            until the end of input is reached, or no match is found.
-            Iteration is done using built-in find_iterator, so the real 
-            searching is performed only when needed.
-            Each match is used as a separator of segments. These segments are then
-            returned in the result.
-
-            \param Result A 'container container' to container the result of search.
-                Both outer and inner container must have constructor taking a pair
-                of iterators as an argument.
-                Typical type of the result is 
-                    \c std::vector<boost::iterator_range<iterator>>
-                (each element of such a vector will container a range delimiting 
-                a match).
-            \param Input A container which will be searched.
-            \param Finder A finder object used for searching
-            \return A reference the result
-
-            \note Prior content of the result will be overwritten.
-        */
-        template< 
-            typename SequenceSequenceT,
-            typename RangeT,
-            typename FinderT >
-        inline SequenceSequenceT&
-        iter_split(
-            SequenceSequenceT& Result,
-            RangeT& Input,
-            FinderT Finder )
-        {
-            function_requires< 
-                FinderConcept<FinderT,
-                BOOST_STRING_TYPENAME range_iterator<RangeT>::type> >();
-
-            iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_input(as_literal(Input));
-
-            typedef BOOST_STRING_TYPENAME 
-                range_iterator<RangeT>::type input_iterator_type;
-            typedef split_iterator<input_iterator_type> find_iterator_type;
-            typedef detail::copy_iterator_rangeF<
-                BOOST_STRING_TYPENAME 
-                    range_value<SequenceSequenceT>::type,
-                input_iterator_type> copy_range_type;
-            
-            input_iterator_type InputEnd=::boost::end(lit_input);
-
-            typedef transform_iterator<copy_range_type, find_iterator_type>
-                transform_iter_type;
-    
-            transform_iter_type itBegin=
-                make_transform_iterator( 
-                    find_iterator_type( ::boost::begin(lit_input), InputEnd, Finder ),
-                    copy_range_type() );
-
-            transform_iter_type itEnd=
-                make_transform_iterator( 
-                    find_iterator_type(),
-                    copy_range_type() );
-            
-            SequenceSequenceT Tmp(itBegin, itEnd);
-
-            Result.swap(Tmp);
-            return Result;
-        }
-
-    } // namespace algorithm
-
-    // pull names to the boost namespace
-    using algorithm::iter_find;
-    using algorithm::iter_split;
-
-} // namespace boost
-
-
-#endif  // BOOST_STRING_ITER_FIND_HPP

+ 0 - 145
feng-authnotify/ext/boost/algorithm/string/join.hpp

@@ -1,145 +0,0 @@
-//  Boost string_algo library join.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2006.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_JOIN_HPP
-#define BOOST_STRING_JOIN_HPP
-
-#include <boost/algorithm/string/config.hpp>
-#include <boost/algorithm/string/detail/sequence.hpp>
-#include <boost/range/value_type.hpp>
-#include <boost/range/as_literal.hpp>
-
-/*! \file
-    Defines join algorithm. 
-
-    Join algorithm is a counterpart to split algorithms.
-    It joins strings from a 'list' by adding user defined separator.
-    Additionally there is a version that allows simple filtering
-    by providing a predicate.
-*/
-
-namespace boost {
-    namespace algorithm {
-
-//  join --------------------------------------------------------------//
-
-        //! Join algorithm
-        /*!
-            This algorithm joins all strings in a 'list' into one long string.
-            Segments are concatenated by given separator.
-
-            \param Input A container that holds the input strings. It must be a container-of-containers.
-            \param Separator A string that will separate the joined segments.
-            \return Concatenated string.
-
-            \note This function provides the strong exception-safety guarantee
-        */
-        template< typename SequenceSequenceT, typename Range1T>
-        inline typename range_value<SequenceSequenceT>::type 
-        join(
-            const SequenceSequenceT& Input,
-            const Range1T& Separator)
-        {
-            // Define working types
-            typedef typename range_value<SequenceSequenceT>::type ResultT;
-            typedef typename range_const_iterator<SequenceSequenceT>::type InputIteratorT;
-
-            // Parse input
-            InputIteratorT itBegin=::boost::begin(Input);
-            InputIteratorT itEnd=::boost::end(Input);
-
-            // Construct container to hold the result
-            ResultT Result;
-            
-            // Append first element
-            if(itBegin!=itEnd)
-            {
-                detail::insert(Result, ::boost::end(Result), *itBegin);
-                ++itBegin;
-            }
-
-            for(;itBegin!=itEnd; ++itBegin)
-            {
-                // Add separator
-                detail::insert(Result, ::boost::end(Result), as_literal(Separator));
-                // Add element
-                detail::insert(Result, ::boost::end(Result), *itBegin);
-            }
-
-            return Result;
-        }
-
-// join_if ----------------------------------------------------------//
-
-        //! Conditional join algorithm
-        /*!
-            This algorithm joins all strings in a 'list' into one long string.
-            Segments are concatenated by given separator. Only segments that
-            satisfy the predicate will be added to the result.
-
-            \param Input A container that holds the input strings. It must be a container-of-containers.
-            \param Separator A string that will separate the joined segments.
-            \param Pred A segment selection predicate
-            \return Concatenated string.
-
-            \note This function provides the strong exception-safety guarantee
-        */
-        template< typename SequenceSequenceT, typename Range1T, typename PredicateT>
-        inline typename range_value<SequenceSequenceT>::type 
-        join_if(
-            const SequenceSequenceT& Input,
-            const Range1T& Separator,
-            PredicateT Pred)
-        {
-            // Define working types
-            typedef typename range_value<SequenceSequenceT>::type ResultT;
-            typedef typename range_const_iterator<SequenceSequenceT>::type InputIteratorT;
-
-            // Parse input
-            InputIteratorT itBegin=::boost::begin(Input);
-            InputIteratorT itEnd=::boost::end(Input);
-
-            // Construct container to hold the result
-            ResultT Result;
-
-            // Roll to the first element that will be added
-            while(itBegin!=itEnd && !Pred(*itBegin)) ++itBegin;
-            // Add this element
-            if(itBegin!=itEnd)
-            {
-                detail::insert(Result, ::boost::end(Result), *itBegin);
-                ++itBegin;
-            }
-
-            for(;itBegin!=itEnd; ++itBegin)
-            {
-                if(Pred(*itBegin))
-                {
-                    // Add separator
-                    detail::insert(Result, ::boost::end(Result), as_literal(Separator));
-                    // Add element
-                    detail::insert(Result, ::boost::end(Result), *itBegin);
-                }
-            }
-
-            return Result;
-        }
-
-    } // namespace algorithm
-
-    // pull names to the boost namespace
-    using algorithm::join;
-    using algorithm::join_if;
-
-} // namespace boost
-
-
-#endif  // BOOST_STRING_JOIN_HPP
-

+ 0 - 475
feng-authnotify/ext/boost/algorithm/string/predicate.hpp

@@ -1,475 +0,0 @@
-//  Boost string_algo library predicate.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2003.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_PREDICATE_HPP
-#define BOOST_STRING_PREDICATE_HPP
-
-#include <boost/algorithm/string/config.hpp>
-#include <boost/range/begin.hpp>
-#include <boost/range/end.hpp>
-#include <boost/range/iterator.hpp>
-#include <boost/range/const_iterator.hpp>
-#include <boost/range/as_literal.hpp>
-#include <boost/range/iterator_range.hpp>
-
-#include <boost/algorithm/string/compare.hpp>
-#include <boost/algorithm/string/find.hpp>
-#include <boost/algorithm/string/detail/predicate.hpp>
-
-/*! \file boost/algorithm/string/predicate.hpp
-    Defines string-related predicates. 
-    The predicates determine whether a substring is contained in the input string 
-    under various conditions: a string starts with the substring, ends with the 
-    substring, simply contains the substring or if both strings are equal.
-    Additionaly the algorithm \c all() checks all elements of a container to satisfy a 
-    condition.
-
-    All predicates provide the strong exception guarantee.
-*/
-
-namespace boost {
-    namespace algorithm {
-
-//  starts_with predicate  -----------------------------------------------//
-
-        //! 'Starts with' predicate
-        /*!
-            This predicate holds when the test string is a prefix of the Input.
-            In other words, if the input starts with the test.
-            When the optional predicate is specified, it is used for character-wise
-            comparison.
-
-            \param Input An input sequence
-            \param Test A test sequence
-            \param Comp An element comparison predicate
-            \return The result of the test
-
-              \note This function provides the strong exception-safety guarantee
-        */
-        template<typename Range1T, typename Range2T, typename PredicateT>
-            inline bool starts_with( 
-            const Range1T& Input, 
-            const Range2T& Test,
-            PredicateT Comp)
-        {
-            iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range1T>::type> lit_input(as_literal(Input));
-            iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range2T>::type> lit_test(as_literal(Test));
-
-            typedef BOOST_STRING_TYPENAME 
-                range_const_iterator<Range1T>::type Iterator1T;
-            typedef BOOST_STRING_TYPENAME 
-                range_const_iterator<Range2T>::type Iterator2T;
-
-            Iterator1T InputEnd=::boost::end(lit_input);
-            Iterator2T TestEnd=::boost::end(lit_test);
-
-            Iterator1T it=::boost::begin(lit_input);
-            Iterator2T pit=::boost::begin(lit_test);
-            for(;
-                it!=InputEnd && pit!=TestEnd;
-                ++it,++pit)
-            {
-                if( !(Comp(*it,*pit)) )
-                    return false;
-            }
-
-            return pit==TestEnd;
-        }
-
-        //! 'Starts with' predicate
-        /*!
-            \overload
-        */
-        template<typename Range1T, typename Range2T>
-        inline bool starts_with( 
-            const Range1T& Input, 
-            const Range2T& Test)
-        {
-            return starts_with(Input, Test, is_equal());
-        }
-
-        //! 'Starts with' predicate ( case insensitive )
-        /*!
-            This predicate holds when the test string is a prefix of the Input.
-            In other words, if the input starts with the test.
-            Elements are compared case insensitively.
-
-            \param Input An input sequence
-            \param Test A test sequence
-            \param Loc A locale used for case insensitive comparison
-            \return The result of the test
-
-            \note This function provides the strong exception-safety guarantee
-        */
-        template<typename Range1T, typename Range2T>
-        inline bool istarts_with( 
-            const Range1T& Input, 
-            const Range2T& Test,
-            const std::locale& Loc=std::locale())
-        {
-            return starts_with(Input, Test, is_iequal(Loc));
-        }
-
-
-//  ends_with predicate  -----------------------------------------------//
-
-        //! 'Ends with' predicate
-        /*!
-            This predicate holds when the test string is a suffix of the Input.
-            In other words, if the input ends with the test.
-            When the optional predicate is specified, it is used for character-wise
-            comparison.
-
-
-            \param Input An input sequence
-            \param Test A test sequence
-            \param Comp An element comparison predicate
-            \return The result of the test
-
-              \note This function provides the strong exception-safety guarantee
-        */
-        template<typename Range1T, typename Range2T, typename PredicateT>
-        inline bool ends_with( 
-            const Range1T& Input, 
-            const Range2T& Test,
-            PredicateT Comp)
-        {
-            iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range1T>::type> lit_input(as_literal(Input));
-            iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range2T>::type> lit_test(as_literal(Test));
-
-            typedef BOOST_STRING_TYPENAME 
-                range_const_iterator<Range1T>::type Iterator1T;
-            typedef BOOST_STRING_TYPENAME boost::detail::
-                iterator_traits<Iterator1T>::iterator_category category;
-
-            return detail::
-                ends_with_iter_select( 
-                    ::boost::begin(lit_input), 
-                    ::boost::end(lit_input), 
-                    ::boost::begin(lit_test), 
-                    ::boost::end(lit_test), 
-                    Comp,
-                    category());
-        }
-
-
-        //! 'Ends with' predicate
-        /*!
-            \overload
-        */
-        template<typename Range1T, typename Range2T>
-        inline bool ends_with( 
-            const Range1T& Input, 
-            const Range2T& Test)
-        {
-            return ends_with(Input, Test, is_equal());
-        }
-
-        //! 'Ends with' predicate ( case insensitive )
-        /*!
-            This predicate holds when the test container is a suffix of the Input.
-            In other words, if the input ends with the test.
-            Elements are compared case insensitively.
-
-            \param Input An input sequence
-            \param Test A test sequence
-            \param Loc A locale used for case insensitive comparison
-            \return The result of the test
-
-            \note This function provides the strong exception-safety guarantee
-        */
-        template<typename Range1T, typename Range2T>
-        inline bool iends_with( 
-            const Range1T& Input, 
-            const Range2T& Test,
-            const std::locale& Loc=std::locale())
-        {
-            return ends_with(Input, Test, is_iequal(Loc));
-        }
-
-//  contains predicate  -----------------------------------------------//
-
-        //! 'Contains' predicate
-        /*!
-            This predicate holds when the test container is contained in the Input.
-            When the optional predicate is specified, it is used for character-wise
-            comparison.
-
-            \param Input An input sequence
-            \param Test A test sequence
-            \param Comp An element comparison predicate
-            \return The result of the test
-
-               \note This function provides the strong exception-safety guarantee
-        */
-        template<typename Range1T, typename Range2T, typename PredicateT>
-        inline bool contains( 
-            const Range1T& Input, 
-            const Range2T& Test,
-            PredicateT Comp)
-        {
-            iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range1T>::type> lit_input(as_literal(Input));
-            iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range2T>::type> lit_test(as_literal(Test));
-
-            if (empty(lit_test))
-            {
-                // Empty range is contained always
-                return true;
-            }
-            
-            // Use the temporary variable to make VACPP happy
-            bool bResult=(first_finder(lit_test,Comp)(::boost::begin(lit_input), ::boost::end(lit_input)));
-            return bResult;
-        }
-
-        //! 'Contains' predicate
-        /*!
-            \overload
-        */
-        template<typename Range1T, typename Range2T>
-        inline bool contains( 
-            const Range1T& Input, 
-            const Range2T& Test)
-        {
-            return contains(Input, Test, is_equal());
-        }
-
-        //! 'Contains' predicate ( case insensitive )
-        /*!
-            This predicate holds when the test container is contained in the Input.
-            Elements are compared case insensitively.
-
-            \param Input An input sequence
-            \param Test A test sequence
-            \param Loc A locale used for case insensitive comparison
-            \return The result of the test
-
-            \note This function provides the strong exception-safety guarantee
-        */
-        template<typename Range1T, typename Range2T>
-        inline bool icontains( 
-            const Range1T& Input, 
-            const Range2T& Test, 
-            const std::locale& Loc=std::locale())
-        {
-            return contains(Input, Test, is_iequal(Loc));
-        }
-
-//  equals predicate  -----------------------------------------------//
-
-        //! 'Equals' predicate
-        /*!
-            This predicate holds when the test container is equal to the
-            input container i.e. all elements in both containers are same.
-            When the optional predicate is specified, it is used for character-wise
-            comparison.
-
-            \param Input An input sequence
-            \param Test A test sequence
-            \param Comp An element comparison predicate
-            \return The result of the test
-
-            \note This is a two-way version of \c std::equal algorithm
-
-            \note This function provides the strong exception-safety guarantee
-        */
-        template<typename Range1T, typename Range2T, typename PredicateT>
-        inline bool equals( 
-            const Range1T& Input, 
-            const Range2T& Test,
-            PredicateT Comp)
-        {
-            iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range1T>::type> lit_input(as_literal(Input));
-            iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range2T>::type> lit_test(as_literal(Test));
-
-            typedef BOOST_STRING_TYPENAME 
-                range_const_iterator<Range1T>::type Iterator1T;
-            typedef BOOST_STRING_TYPENAME 
-                range_const_iterator<Range2T>::type Iterator2T;
-                
-            Iterator1T InputEnd=::boost::end(lit_input);
-            Iterator2T TestEnd=::boost::end(lit_test);
-
-            Iterator1T it=::boost::begin(lit_input);
-            Iterator2T pit=::boost::begin(lit_test);
-            for(;
-                it!=InputEnd && pit!=TestEnd;
-                ++it,++pit)
-            {
-                if( !(Comp(*it,*pit)) )
-                    return false;
-            }
-
-            return  (pit==TestEnd) && (it==InputEnd);
-        }
-
-        //! 'Equals' predicate
-        /*!
-            \overload
-        */
-        template<typename Range1T, typename Range2T>
-        inline bool equals( 
-            const Range1T& Input, 
-            const Range2T& Test)
-        {
-            return equals(Input, Test, is_equal());
-        }
-
-        //! 'Equals' predicate ( case insensitive )
-        /*!
-            This predicate holds when the test container is equal to the
-            input container i.e. all elements in both containers are same.
-            Elements are compared case insensitively.
-
-            \param Input An input sequence
-            \param Test A test sequence
-            \param Loc A locale used for case insensitive comparison
-            \return The result of the test
-
-            \note This is a two-way version of \c std::equal algorithm
-
-            \note This function provides the strong exception-safety guarantee
-        */
-        template<typename Range1T, typename Range2T>
-        inline bool iequals( 
-            const Range1T& Input, 
-            const Range2T& Test,
-            const std::locale& Loc=std::locale())
-        {
-            return equals(Input, Test, is_iequal(Loc));
-        }
-
-// lexicographical_compare predicate -----------------------------//
-
-        //! Lexicographical compare predicate
-        /*!
-             This predicate is an overload of std::lexicographical_compare
-             for range arguments
-
-             It check whether the first argument is lexicographically less
-             then the second one.
-
-             If the optional predicate is specified, it is used for character-wise
-             comparison
-
-             \param Arg1 First argument 
-             \param Arg2 Second argument
-             \param Pred Comparison predicate
-             \return The result of the test
-
-             \note This function provides the strong exception-safety guarantee
-         */
-        template<typename Range1T, typename Range2T, typename PredicateT>
-        inline bool lexicographical_compare(
-            const Range1T& Arg1,
-            const Range2T& Arg2,
-            PredicateT Pred)
-        {
-            iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range1T>::type> lit_arg1(as_literal(Arg1));
-            iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range2T>::type> lit_arg2(as_literal(Arg2));
-
-            return std::lexicographical_compare(
-                ::boost::begin(lit_arg1),
-                ::boost::end(lit_arg1),
-                ::boost::begin(lit_arg2),
-                ::boost::end(lit_arg2),
-                Pred);
-        }
-
-        //! Lexicographical compare predicate
-        /*!
-            \overload
-         */
-        template<typename Range1T, typename Range2T>
-            inline bool lexicographical_compare(
-            const Range1T& Arg1,
-            const Range2T& Arg2)
-        {
-            return lexicographical_compare(Arg1, Arg2, is_less());
-        }
-
-        //! Lexicographical compare predicate (case-insensitive)
-        /*!
-            This predicate is an overload of std::lexicographical_compare
-            for range arguments.
-            It check whether the first argument is lexicographically less
-            then the second one.
-            Elements are compared case insensitively
-
-
-             \param Arg1 First argument 
-             \param Arg2 Second argument
-             \param Loc A locale used for case insensitive comparison
-             \return The result of the test
-
-             \note This function provides the strong exception-safety guarantee
-         */
-        template<typename Range1T, typename Range2T>
-        inline bool ilexicographical_compare(
-            const Range1T& Arg1,
-            const Range2T& Arg2,
-            const std::locale& Loc=std::locale())
-        {
-            return lexicographical_compare(Arg1, Arg2, is_iless(Loc));
-        }
-        
-
-//  all predicate  -----------------------------------------------//
-
-        //! 'All' predicate
-        /*!
-            This predicate holds it all its elements satisfy a given 
-            condition, represented by the predicate.
-            
-            \param Input An input sequence
-            \param Pred A predicate
-            \return The result of the test
-
-            \note This function provides the strong exception-safety guarantee
-        */
-        template<typename RangeT, typename PredicateT>
-        inline bool all( 
-            const RangeT& Input, 
-            PredicateT Pred)
-        {
-            iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_input(as_literal(Input));
-
-            typedef BOOST_STRING_TYPENAME 
-                range_const_iterator<RangeT>::type Iterator1T;
-
-            Iterator1T InputEnd=::boost::end(lit_input);
-            for( Iterator1T It=::boost::begin(lit_input); It!=InputEnd; ++It)
-            {
-                if (!Pred(*It))
-                    return false;
-            }
-            
-            return true;
-        }
-
-    } // namespace algorithm
-
-    // pull names to the boost namespace
-    using algorithm::starts_with;
-    using algorithm::istarts_with;
-    using algorithm::ends_with;
-    using algorithm::iends_with;
-    using algorithm::contains;
-    using algorithm::icontains;
-    using algorithm::equals;
-    using algorithm::iequals;
-    using algorithm::all;
-    using algorithm::lexicographical_compare;
-    using algorithm::ilexicographical_compare;
-
-} // namespace boost
-
-
-#endif  // BOOST_STRING_PREDICATE_HPP

+ 0 - 42
feng-authnotify/ext/boost/algorithm/string/predicate_facade.hpp

@@ -1,42 +0,0 @@
-//  Boost string_algo library predicate_facade.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2003.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_PREDICATE_FACADE_HPP
-#define BOOST_STRING_PREDICATE_FACADE_HPP
-
-#include <boost/algorithm/string/config.hpp>
-
-/*
- \file boost/algorith/string/predicate_facade.hpp
- This file containes predicate_facade definition. This template class is used
- to identify classification predicates, so they can be combined using
- composition operators.
-*/
-
-namespace boost {
-    namespace algorithm {
-
-//  predicate facade ------------------------------------------------------//
-
-        //! Predicate facade
-        /*!
-            This class allows to recognize classification
-            predicates, so that they can be combined using
-            composition operators.
-            Every classification predicate must be derived from this class.
-        */
-        template<typename Derived>
-        struct predicate_facade {};
-
-    } // namespace algorithm
-} // namespace boost
-
-
-#endif  // BOOST_STRING_CLASSIFICATION_DETAIL_HPP

+ 0 - 646
feng-authnotify/ext/boost/algorithm/string/regex.hpp

@@ -1,646 +0,0 @@
-//  Boost string_algo library regex.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2003.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_REGEX_HPP
-#define BOOST_STRING_REGEX_HPP
-
-#include <boost/algorithm/string/config.hpp>
-#include <boost/regex.hpp>
-
-#include <boost/range/iterator_range.hpp>
-#include <boost/range/begin.hpp>
-#include <boost/range/end.hpp>
-#include <boost/range/iterator.hpp>
-#include <boost/range/as_literal.hpp>
-
-#include <boost/algorithm/string/find_format.hpp>
-#include <boost/algorithm/string/regex_find_format.hpp>
-#include <boost/algorithm/string/formatter.hpp>
-#include <boost/algorithm/string/iter_find.hpp>
-
-/*! \file
-    Defines regex variants of the algorithms. 
-*/
-
-namespace boost {
-    namespace algorithm {
-
-//  find_regex  -----------------------------------------------//
-
-        //! Find regex algorithm
-        /*!
-            Search for a substring matching the given regex in the input.
-            
-            \param Input A container which will be searched.
-            \param Rx A regular expression
-            \param Flags Regex options
-            \return 
-                An \c iterator_range delimiting the match. 
-                Returned iterator is either \c RangeT::iterator or 
-                \c RangeT::const_iterator, depending on the constness of 
-                the input parameter.
-
-              \note This function provides the strong exception-safety guarantee
-        */
-        template< 
-            typename RangeT, 
-            typename CharT, 
-            typename RegexTraitsT>
-        inline iterator_range< 
-            BOOST_STRING_TYPENAME range_iterator<RangeT>::type >
-        find_regex( 
-            RangeT& Input, 
-            const basic_regex<CharT, RegexTraitsT>& Rx,
-            match_flag_type Flags=match_default )
-        {
-            iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_input(as_literal(Input));
-
-            return regex_finder(Rx,Flags)(
-                ::boost::begin(lit_input), ::boost::end(lit_input) );
-        }
-
-//  replace_regex --------------------------------------------------------------------//
-
-        //! Replace regex algorithm
-        /*!
-            Search for a substring matching given regex and format it with 
-            the specified format.             
-            The result is a modified copy of the input. It is returned as a sequence 
-            or copied to the output iterator.
-
-            \param Output An output iterator to which the result will be copied
-            \param Input An input string
-            \param Rx A regular expression
-            \param Format Regex format definition
-            \param Flags Regex options
-            \return An output iterator pointing just after the last inserted character or
-                    a modified copy of the input   
-
-             \note The second variant of this function provides the strong exception-safety guarantee
-        */
-        template< 
-            typename OutputIteratorT,
-            typename RangeT, 
-            typename CharT, 
-            typename RegexTraitsT,
-            typename FormatStringTraitsT, typename FormatStringAllocatorT >
-        inline OutputIteratorT replace_regex_copy(
-            OutputIteratorT Output,
-            const RangeT& Input,
-            const basic_regex<CharT, RegexTraitsT>& Rx,
-            const std::basic_string<CharT, FormatStringTraitsT, FormatStringAllocatorT>& Format,
-            match_flag_type Flags=match_default | format_default )
-        {
-            return find_format_copy( 
-                Output,
-                Input,
-                regex_finder( Rx, Flags ),
-                regex_formatter( Format, Flags ) );
-        }
-
-        //! Replace regex algorithm
-        /*!
-            \overload
-        */
-        template< 
-            typename SequenceT, 
-            typename CharT, 
-            typename RegexTraitsT,
-            typename FormatStringTraitsT, typename FormatStringAllocatorT >
-        inline SequenceT replace_regex_copy( 
-            const SequenceT& Input,
-            const basic_regex<CharT, RegexTraitsT>& Rx,
-            const std::basic_string<CharT, FormatStringTraitsT, FormatStringAllocatorT>& Format,
-            match_flag_type Flags=match_default | format_default )
-        {
-            return find_format_copy( 
-                Input,
-                regex_finder( Rx, Flags ),
-                regex_formatter( Format, Flags ) );
-        }
-
-        //! Replace regex algorithm
-        /*!
-            Search for a substring matching given regex and format it with 
-            the specified format. The input string is modified in-place.
-
-            \param Input An input string
-            \param Rx A regular expression
-            \param Format Regex format definition
-            \param Flags Regex options
-        */
-        template< 
-            typename SequenceT, 
-            typename CharT, 
-            typename RegexTraitsT,
-            typename FormatStringTraitsT, typename FormatStringAllocatorT >
-        inline void replace_regex( 
-            SequenceT& Input,
-            const basic_regex<CharT, RegexTraitsT>& Rx,
-            const std::basic_string<CharT, FormatStringTraitsT, FormatStringAllocatorT>& Format,
-            match_flag_type Flags=match_default | format_default )
-        {
-            find_format( 
-                Input,
-                regex_finder( Rx, Flags ),
-                regex_formatter( Format, Flags ) );
-        }
-
-//  replace_all_regex --------------------------------------------------------------------//
-
-        //! Replace all regex algorithm
-        /*!
-            Format all substrings, matching given regex, with the specified format. 
-            The result is a modified copy of the input. It is returned as a sequence 
-            or copied to the output iterator.
-
-            \param Output An output iterator to which the result will be copied
-            \param Input An input string
-            \param Rx A regular expression
-            \param Format Regex format definition
-            \param Flags Regex options
-            \return An output iterator pointing just after the last inserted character or
-                    a modified copy of the input     
-
-              \note The second variant of this function provides the strong exception-safety guarantee
-        */
-        template< 
-            typename OutputIteratorT,
-            typename RangeT, 
-            typename CharT, 
-            typename RegexTraitsT,
-            typename FormatStringTraitsT, typename FormatStringAllocatorT >
-        inline OutputIteratorT replace_all_regex_copy(
-            OutputIteratorT Output,
-            const RangeT& Input,
-            const basic_regex<CharT, RegexTraitsT>& Rx,
-            const std::basic_string<CharT, FormatStringTraitsT, FormatStringAllocatorT>& Format,
-            match_flag_type Flags=match_default | format_default )
-        {
-            return find_format_all_copy( 
-                Output,
-                Input,
-                regex_finder( Rx, Flags ),
-                regex_formatter( Format, Flags ) );
-        }
-
-        //! Replace all regex algorithm
-        /*!
-            \overload
-        */
-        template< 
-            typename SequenceT, 
-            typename CharT, 
-            typename RegexTraitsT,
-            typename FormatStringTraitsT, typename FormatStringAllocatorT >
-        inline SequenceT replace_all_regex_copy( 
-            const SequenceT& Input,
-            const basic_regex<CharT, RegexTraitsT>& Rx,
-            const std::basic_string<CharT, FormatStringTraitsT, FormatStringAllocatorT>& Format,
-            match_flag_type Flags=match_default | format_default )
-        {
-            return find_format_all_copy( 
-                Input,
-                regex_finder( Rx, Flags ),
-                regex_formatter( Format, Flags ) );
-        }
-
-        //! Replace all regex algorithm
-        /*!
-            Format all substrings, matching given regex, with the specified format. 
-            The input string is modified in-place.
-
-            \param Input An input string
-            \param Rx A regular expression
-            \param Format Regex format definition
-            \param Flags Regex options            
-        */
-        template< 
-            typename SequenceT, 
-            typename CharT, 
-            typename RegexTraitsT,
-            typename FormatStringTraitsT, typename FormatStringAllocatorT >
-        inline void replace_all_regex( 
-            SequenceT& Input,
-            const basic_regex<CharT, RegexTraitsT>& Rx,
-            const std::basic_string<CharT, FormatStringTraitsT, FormatStringAllocatorT>& Format,
-            match_flag_type Flags=match_default | format_default )
-        {
-            find_format_all( 
-                Input,
-                regex_finder( Rx, Flags ),
-                regex_formatter( Format, Flags ) );
-        }
-
-//  erase_regex --------------------------------------------------------------------//
-
-        //! Erase regex algorithm
-        /*!
-            Remove a substring matching given regex from the input.
-            The result is a modified copy of the input. It is returned as a sequence 
-            or copied to the output iterator.                        
-
-            \param Output An output iterator to which the result will be copied
-            \param Input An input string
-            \param Rx A regular expression
-            \param Flags Regex options
-            \return An output iterator pointing just after the last inserted character or
-                       a modified copy of the input    
-
-             \note The second variant of this function provides the strong exception-safety guarantee
-       */
-        template< 
-            typename OutputIteratorT,
-            typename RangeT, 
-            typename CharT, 
-            typename RegexTraitsT >
-        inline OutputIteratorT erase_regex_copy(
-            OutputIteratorT Output,
-            const RangeT& Input,
-            const basic_regex<CharT, RegexTraitsT>& Rx,
-            match_flag_type Flags=match_default )
-        {
-            return find_format_copy(
-                Output,
-                Input,
-                regex_finder( Rx, Flags ),
-                empty_formatter( Input ) );
-        }
-
-        //! Erase regex algorithm
-        /*!
-            \overload
-        */
-        template< 
-            typename SequenceT, 
-            typename CharT, 
-            typename RegexTraitsT >
-        inline SequenceT erase_regex_copy( 
-            const SequenceT& Input,
-            const basic_regex<CharT, RegexTraitsT>& Rx,
-            match_flag_type Flags=match_default )
-        {
-            return find_format_copy( 
-                Input, 
-                regex_finder( Rx, Flags ),
-                empty_formatter( Input ) );
-        }
-
-        //! Erase regex algorithm
-        /*!
-            Remove a substring matching given regex from the input.
-            The input string is modified in-place.
-
-            \param Input An input string
-            \param Rx A regular expression
-            \param Flags Regex options
-        */
-        template< 
-            typename SequenceT, 
-            typename CharT, 
-            typename RegexTraitsT >
-        inline void erase_regex( 
-            SequenceT& Input,
-            const basic_regex<CharT, RegexTraitsT>& Rx,
-            match_flag_type Flags=match_default )
-        {
-            find_format( 
-                Input, 
-                regex_finder( Rx, Flags ),
-                empty_formatter( Input ) );
-        }
-
-//  erase_all_regex --------------------------------------------------------------------//
-
-        //! Erase all regex algorithm
-        /*!
-            Erase all substrings, matching given regex, from the input.
-            The result is a modified copy of the input. It is returned as a sequence 
-            or copied to the output iterator.
-            
-
-            \param Output An output iterator to which the result will be copied
-            \param Input An input string
-            \param Rx A regular expression
-            \param Flags Regex options
-            \return An output iterator pointing just after the last inserted character or
-                    a modified copy of the input                        
-
-             \note The second variant of this function provides the strong exception-safety guarantee
-        */
-        template< 
-            typename OutputIteratorT,
-            typename RangeT, 
-            typename CharT, 
-            typename RegexTraitsT >
-        inline OutputIteratorT erase_all_regex_copy(
-            OutputIteratorT Output,
-            const RangeT& Input,
-            const basic_regex<CharT, RegexTraitsT>& Rx,
-            match_flag_type Flags=match_default )
-        {
-            return find_format_all_copy(
-                Output,
-                Input,
-                regex_finder( Rx, Flags ),
-                empty_formatter( Input ) );
-        }
-
-        //! Erase all regex algorithm
-        /*!
-            \overload
-        */
-        template< 
-            typename SequenceT, 
-            typename CharT, 
-            typename RegexTraitsT >
-        inline SequenceT erase_all_regex_copy( 
-            const SequenceT& Input,
-            const basic_regex<CharT, RegexTraitsT>& Rx,
-            match_flag_type Flags=match_default )
-        {
-            return find_format_all_copy( 
-                Input, 
-                regex_finder( Rx, Flags ),
-                empty_formatter( Input ) );
-        }
-
-        //! Erase all regex algorithm
-        /*!
-            Erase all substrings, matching given regex, from the input.
-            The input string is modified in-place.
-
-            \param Input An input string
-            \param Rx A regular expression
-            \param Flags Regex options
-        */
-        template< 
-            typename SequenceT, 
-            typename CharT, 
-            typename RegexTraitsT>
-        inline void erase_all_regex( 
-            SequenceT& Input,
-            const basic_regex<CharT, RegexTraitsT>& Rx,
-            match_flag_type Flags=match_default )
-        {
-            find_format_all( 
-                Input, 
-                regex_finder( Rx, Flags ),
-                empty_formatter( Input ) );
-        }
-
-//  find_all_regex ------------------------------------------------------------------//
-
-        //! Find all regex algorithm
-        /*!
-            This algorithm finds all substrings matching the give regex
-            in the input.             
-            
-            Each part is copied and added as a new element to the output container.
-            Thus the result container must be able to hold copies
-            of the matches (in a compatible structure like std::string) or
-            a reference to it (e.g. using the iterator range class).
-            Examples of such a container are \c std::vector<std::string>
-            or \c std::list<boost::iterator_range<std::string::iterator>>
-
-            \param Result A container that can hold copies of references to the substrings.
-            \param Input A container which will be searched.
-            \param Rx A regular expression
-            \param Flags Regex options
-            \return A reference to the result
-
-            \note Prior content of the result will be overwritten.
-
-             \note This function provides the strong exception-safety guarantee
-        */
-        template< 
-            typename SequenceSequenceT, 
-            typename RangeT,         
-            typename CharT, 
-            typename RegexTraitsT >
-        inline SequenceSequenceT& find_all_regex(
-            SequenceSequenceT& Result,
-            const RangeT& Input,
-            const basic_regex<CharT, RegexTraitsT>& Rx,
-            match_flag_type Flags=match_default )
-        {
-            return iter_find(
-                Result,
-                Input,
-                regex_finder(Rx,Flags) );         
-        }
-
-//  split_regex ------------------------------------------------------------------//
-
-        //! Split regex algorithm
-        /*! 
-            Tokenize expression. This function is equivalent to C strtok. Input
-            sequence is split into tokens, separated  by separators. Separator
-            is an every match of the given regex.
-            Each part is copied and added as a new element to the output container.
-            Thus the result container must be able to hold copies
-            of the matches (in a compatible structure like std::string) or
-            a reference to it (e.g. using the iterator range class).
-            Examples of such a container are \c std::vector<std::string>
-            or \c std::list<boost::iterator_range<std::string::iterator>>
-    
-            \param Result A container that can hold copies of references to the substrings.          
-            \param Input A container which will be searched.
-            \param Rx A regular expression
-            \param Flags Regex options
-            \return A reference to the result
-
-            \note Prior content of the result will be overwritten.
-
-               \note This function provides the strong exception-safety guarantee
-        */
-        template< 
-            typename SequenceSequenceT, 
-            typename RangeT,         
-            typename CharT, 
-            typename RegexTraitsT >
-        inline SequenceSequenceT& split_regex(
-            SequenceSequenceT& Result,
-            const RangeT& Input,
-            const basic_regex<CharT, RegexTraitsT>& Rx,
-            match_flag_type Flags=match_default )
-        {
-            return iter_split(
-                Result,
-                Input,
-                regex_finder(Rx,Flags) );         
-        }
-
-//  join_if ------------------------------------------------------------------//
-
-#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-
-        //! Conditional join algorithm
-        /*!
-            This algorithm joins all strings in a 'list' into one long string.
-            Segments are concatenated by given separator. Only segments that
-            match the given regular expression will be added to the result
-
-            This is a specialization of join_if algorithm.
-
-            \param Input A container that holds the input strings. It must be a container-of-containers.
-            \param Separator A string that will separate the joined segments.
-            \param Rx A regular expression
-            \param Flags Regex options
-            \return Concatenated string.
-
-            \note This function provides the strong exception-safety guarantee
-        */
-        template< 
-            typename SequenceSequenceT, 
-            typename Range1T,             
-            typename CharT, 
-            typename RegexTraitsT >
-        inline typename range_value<SequenceSequenceT>::type 
-        join_if(
-            const SequenceSequenceT& Input,
-            const Range1T& Separator,
-            const basic_regex<CharT, RegexTraitsT>& Rx,
-            match_flag_type Flags=match_default )
-        {
-            // Define working types
-            typedef typename range_value<SequenceSequenceT>::type ResultT;
-            typedef typename range_const_iterator<SequenceSequenceT>::type InputIteratorT;
-
-            // Parse input
-            InputIteratorT itBegin=::boost::begin(Input);
-            InputIteratorT itEnd=::boost::end(Input);
-
-            // Construct container to hold the result
-            ResultT Result;
-
-
-            // Roll to the first element that will be added
-            while(
-                itBegin!=itEnd && 
-                !regex_match(::boost::begin(*itBegin), ::boost::end(*itBegin), Rx, Flags)) ++itBegin;
-
-            // Add this element
-            if(itBegin!=itEnd)
-            {
-                detail::insert(Result, ::boost::end(Result), *itBegin);
-                ++itBegin;
-            }
-
-            for(;itBegin!=itEnd; ++itBegin)
-            {
-                if(regex_match(::boost::begin(*itBegin), ::boost::end(*itBegin), Rx, Flags))
-                {
-                    // Add separator
-                    detail::insert(Result, ::boost::end(Result), as_literal(Separator));
-                    // Add element
-                    detail::insert(Result, ::boost::end(Result), *itBegin);
-                }
-            }
-
-            return Result;
-        }
-
-#else  // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-
-                //! Conditional join algorithm
-        /*!
-            This algorithm joins all strings in a 'list' into one long string.
-            Segments are concatenated by given separator. Only segments that
-            match the given regular expression will be added to the result
-
-            This is a specialization of join_if algorithm.
-
-            \param Input A container that holds the input strings. It must be a container-of-containers.
-            \param Separator A string that will separate the joined segments.
-            \param Rx A regular expression
-            \param Flags Regex options
-            \return Concatenated string.
-
-            \note This function provides the strong exception-safety guarantee
-        */
-        template< 
-            typename SequenceSequenceT, 
-            typename Range1T,             
-            typename CharT, 
-            typename RegexTraitsT >
-        inline typename range_value<SequenceSequenceT>::type 
-        join_if_regex(
-            const SequenceSequenceT& Input,
-            const Range1T& Separator,
-            const basic_regex<CharT, RegexTraitsT>& Rx,
-            match_flag_type Flags=match_default )
-        {
-            // Define working types
-            typedef typename range_value<SequenceSequenceT>::type ResultT;
-            typedef typename range_const_iterator<SequenceSequenceT>::type InputIteratorT;
-
-            // Parse input
-            InputIteratorT itBegin=::boost::begin(Input);
-            InputIteratorT itEnd=::boost::end(Input);
-
-            // Construct container to hold the result
-            ResultT Result;
-
-
-            // Roll to the first element that will be added
-            while(
-                itBegin!=itEnd && 
-                !regex_match(::boost::begin(*itBegin), ::boost::end(*itBegin), Rx, Flags)) ++itBegin;
-
-            // Add this element
-            if(itBegin!=itEnd)
-            {
-                detail::insert(Result, ::boost::end(Result), *itBegin);
-                ++itBegin;
-            }
-
-            for(;itBegin!=itEnd; ++itBegin)
-            {
-                if(regex_match(::boost::begin(*itBegin), ::boost::end(*itBegin), Rx, Flags))
-                {
-                    // Add separator
-                    detail::insert(Result, ::boost::end(Result), as_literal(Separator));
-                    // Add element
-                    detail::insert(Result, ::boost::end(Result), *itBegin);
-                }
-            }
-
-            return Result;
-        }
-
-
-#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-
-    } // namespace algorithm
-
-    // pull names into the boost namespace
-    using algorithm::find_regex;
-    using algorithm::replace_regex;
-    using algorithm::replace_regex_copy;
-    using algorithm::replace_all_regex;
-    using algorithm::replace_all_regex_copy;
-    using algorithm::erase_regex;
-    using algorithm::erase_regex_copy;
-    using algorithm::erase_all_regex;
-    using algorithm::erase_all_regex_copy;
-    using algorithm::find_all_regex;
-    using algorithm::split_regex;
-
-#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-    using algorithm::join_if;
-#else  // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-    using algorithm::join_if_regex;
-#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-
-} // namespace boost
-
-
-#endif  // BOOST_STRING_REGEX_HPP

+ 0 - 90
feng-authnotify/ext/boost/algorithm/string/regex_find_format.hpp

@@ -1,90 +0,0 @@
-//  Boost string_algo library regex_find_format.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2003.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_REGEX_FIND_FORMAT_HPP
-#define BOOST_STRING_REGEX_FIND_FORMAT_HPP
-
-#include <boost/algorithm/string/config.hpp>
-#include <boost/regex.hpp>
-#include <boost/algorithm/string/detail/finder_regex.hpp>
-#include <boost/algorithm/string/detail/formatter_regex.hpp>
-
-/*! \file
-    Defines the \c regex_finder and \c regex_formatter generators. These two functors
-    are designed to work together. \c regex_formatter uses additional information
-    about a match contained in the regex_finder search result.
-*/
-
-namespace boost {
-    namespace algorithm {
-
-//  regex_finder  -----------------------------------------------//
-
-        //! "Regex" finder 
-        /*!
-            Construct the \c regex_finder. Finder uses the regex engine to search
-            for a match.
-            Result is given in \c regex_search_result. This is an extension
-            of the iterator_range. In addition it containes match results 
-            from the \c regex_search algorithm.
-
-            \param Rx A regular expression
-            \param MatchFlags Regex search options
-            \return An instance of the \c regex_finder object
-        */
-        template< 
-            typename CharT, 
-            typename RegexTraitsT>
-        inline detail::find_regexF< basic_regex<CharT, RegexTraitsT> >
-        regex_finder(
-            const basic_regex<CharT, RegexTraitsT>& Rx,
-            match_flag_type MatchFlags=match_default )
-        {
-            return detail::
-                find_regexF< 
-                    basic_regex<CharT, RegexTraitsT> >( Rx, MatchFlags );
-        }
-
-//  regex_formater  ---------------------------------------------//
-
-        //! Regex formatter
-        /*!
-            Construct the \c regex_formatter. Regex formatter uses the regex engine to
-            format a match found by the \c regex_finder. 
-            This formatted it designed to closely cooperate with \c regex_finder.
-
-            \param Format Regex format definition
-            \param Flags Format flags
-            \return An instance of the \c regex_formatter functor
-        */
-       template< 
-            typename CharT, 
-            typename TraitsT, typename AllocT >
-        inline detail::regex_formatF< std::basic_string< CharT, TraitsT, AllocT > >
-        regex_formatter( 
-            const std::basic_string<CharT, TraitsT, AllocT>& Format,
-            match_flag_type Flags=format_default )
-        {
-            return 
-                detail::regex_formatF< std::basic_string<CharT, TraitsT, AllocT> >(
-                    Format,
-                    Flags );
-        }
-
-    } // namespace algorithm
-
-    // pull the names to the boost namespace
-    using algorithm::regex_finder;
-    using algorithm::regex_formatter;
-
-} // namespace boost
-
-
-#endif  // BOOST_STRING_REGEX_FIND_FORMAT_HPP

+ 0 - 928
feng-authnotify/ext/boost/algorithm/string/replace.hpp

@@ -1,928 +0,0 @@
-//  Boost string_algo library replace.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2006.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_REPLACE_HPP
-#define BOOST_STRING_REPLACE_HPP
-
-#include <boost/algorithm/string/config.hpp>
-
-#include <boost/range/iterator_range.hpp>
-#include <boost/range/begin.hpp>
-#include <boost/range/end.hpp>
-#include <boost/range/iterator.hpp>
-#include <boost/range/const_iterator.hpp>
-
-#include <boost/algorithm/string/find_format.hpp>
-#include <boost/algorithm/string/finder.hpp>
-#include <boost/algorithm/string/formatter.hpp>
-#include <boost/algorithm/string/compare.hpp>
-
-/*! \file
-    Defines various replace algorithms. Each algorithm replaces
-    part(s) of the input according to set of searching and replace criteria.
-*/
-
-namespace boost {
-    namespace algorithm {
-
-//  replace_range --------------------------------------------------------------------//
-
-        //! Replace range algorithm
-        /*!
-            Replace the given range in the input string.
-            The result is a modified copy of the input. It is returned as a sequence 
-            or copied to the output iterator.
-            
-            \param Output An output iterator to which the result will be copied
-            \param Input An input string
-            \param SearchRange A range in the input to be substituted
-            \param Format A substitute string
-            \return An output iterator pointing just after the last inserted character or
-                a modified copy of the input
-
-              \note The second variant of this function provides the strong exception-safety guarantee
-        */
-        template<
-            typename OutputIteratorT,
-            typename Range1T, 
-            typename Range2T>
-        inline OutputIteratorT replace_range_copy(
-            OutputIteratorT Output,
-            const Range1T& Input,
-            const iterator_range<
-                BOOST_STRING_TYPENAME 
-                    range_const_iterator<Range1T>::type>& SearchRange,
-            const Range2T& Format)
-        {
-            return find_format_copy(
-                Output,
-                Input,
-                range_finder(SearchRange),
-                const_formatter(Format));
-        }
-
-        //! Replace range algorithm
-        /*!
-            \overload
-        */
-        template<typename SequenceT, typename RangeT>
-        inline SequenceT replace_range_copy( 
-            const SequenceT& Input,
-            const iterator_range<
-                BOOST_STRING_TYPENAME 
-                    range_const_iterator<SequenceT>::type>& SearchRange,
-            const RangeT& Format)
-        {
-            return find_format_copy(
-                Input,
-                range_finder(SearchRange),
-                const_formatter(Format));
-        }
-
-        //! Replace range algorithm
-        /*!
-            Replace the given range in the input string. 
-            The input sequence is modified in-place.
-
-            \param Input An input string
-            \param SearchRange A range in the input to be substituted
-            \param Format A substitute string
-        */
-        template<typename SequenceT, typename RangeT>
-        inline void replace_range( 
-            SequenceT& Input,
-            const iterator_range<
-                BOOST_STRING_TYPENAME 
-                    range_iterator<SequenceT>::type>& SearchRange,
-            const RangeT& Format)
-        {
-            find_format(
-                Input,
-                range_finder(SearchRange),
-                const_formatter(Format));
-        }
-
-//  replace_first --------------------------------------------------------------------//
-
-        //! Replace first algorithm
-        /*!
-            Replace the first match of the search substring in the input 
-            with the format string. 
-            The result is a modified copy of the input. It is returned as a sequence 
-            or copied to the output iterator.
-            
-            \param Output An output iterator to which the result will be copied
-            \param Input An input string
-            \param Search A substring to be searched for 
-            \param Format A substitute string
-            \return An output iterator pointing just after the last inserted character or
-                    a modified copy of the input
-
-              \note The second variant of this function provides the strong exception-safety guarantee
-        */
-        template<
-            typename OutputIteratorT,
-            typename Range1T, 
-            typename Range2T,
-            typename Range3T>
-        inline OutputIteratorT replace_first_copy(
-            OutputIteratorT Output,
-            const Range1T& Input,
-            const Range2T& Search,
-            const Range3T& Format)
-        {
-            return find_format_copy(
-                Output,
-                Input,
-                first_finder(Search),
-                const_formatter(Format) );
-        }
-
-        //! Replace first algorithm
-        /*!
-            \overload
-        */
-        template<typename SequenceT, typename Range1T, typename Range2T>
-        inline SequenceT replace_first_copy( 
-            const SequenceT& Input,
-            const Range1T& Search,
-            const Range2T& Format )
-        {
-            return find_format_copy( 
-                Input,
-                first_finder(Search),
-                const_formatter(Format) );
-        }
-
-        //! Replace first algorithm
-        /*!
-            replace the first match of the search substring in the input 
-            with the format string. The input sequence is modified in-place.
-
-            \param Input An input string
-            \param Search A substring to be searched for 
-            \param Format A substitute string
-        */
-        template<typename SequenceT, typename Range1T, typename Range2T>
-        inline void replace_first( 
-            SequenceT& Input,
-            const Range1T& Search,
-            const Range2T& Format )
-        {
-            find_format( 
-                Input, 
-                first_finder(Search),
-                const_formatter(Format) );
-        }
-
-//  replace_first ( case insensitive ) ---------------------------------------------//
-
-        //! Replace first algorithm ( case insensitive )
-        /*!
-            Replace the first match of the search substring in the input 
-            with the format string. 
-            The result is a modified copy of the input. It is returned as a sequence 
-            or copied to the output iterator.
-            Searching is case insensitive.
-
-            \param Output An output iterator to which the result will be copied
-            \param Input An input string
-            \param Search A substring to be searched for 
-            \param Format A substitute string
-            \param Loc A locale used for case insensitive comparison
-            \return An output iterator pointing just after the last inserted character or
-                a modified copy of the input
-
-             \note The second variant of this function provides the strong exception-safety guarantee
-        */
-        template<
-            typename OutputIteratorT,
-            typename Range1T, 
-            typename Range2T,
-            typename Range3T>
-        inline OutputIteratorT ireplace_first_copy(
-            OutputIteratorT Output,
-            const Range1T& Input,
-            const Range2T& Search,
-            const Range3T& Format,
-            const std::locale& Loc=std::locale() )
-        {
-            return find_format_copy(
-                Output,
-                Input,
-                first_finder(Search, is_iequal(Loc)),
-                const_formatter(Format) );
-        }
-
-        //! Replace first algorithm ( case insensitive )
-        /*!
-            \overload
-        */
-        template<typename SequenceT, typename Range2T, typename Range1T>
-        inline SequenceT ireplace_first_copy( 
-            const SequenceT& Input,
-            const Range2T& Search,
-            const Range1T& Format,
-            const std::locale& Loc=std::locale() )
-        {
-            return find_format_copy( 
-                Input,
-                first_finder(Search, is_iequal(Loc)),
-                const_formatter(Format) );
-        }
-
-        //! Replace first algorithm ( case insensitive )
-        /*!
-            Replace the first match of the search substring in the input 
-            with the format string. Input sequence is modified in-place.
-            Searching is case insensitive.
-
-            \param Input An input string
-            \param Search A substring to be searched for 
-            \param Format A substitute string
-            \param Loc A locale used for case insensitive comparison
-        */
-        template<typename SequenceT, typename Range1T, typename Range2T>
-        inline void ireplace_first( 
-            SequenceT& Input,
-            const Range1T& Search,
-            const Range2T& Format,
-            const std::locale& Loc=std::locale() )
-        {
-            find_format( 
-                Input, 
-                first_finder(Search, is_iequal(Loc)),
-                const_formatter(Format) );
-        }
-
-//  replace_last --------------------------------------------------------------------//
-
-        //! Replace last algorithm
-        /*!
-            Replace the last match of the search string in the input 
-            with the format string. 
-            The result is a modified copy of the input. It is returned as a sequence 
-            or copied to the output iterator.
-
-            \param Output An output iterator to which the result will be copied
-            \param Input An input string
-            \param Search A substring to be searched for
-            \param Format A substitute string
-            \return An output iterator pointing just after the last inserted character or
-                    a modified copy of the input            
-
-              \note The second variant of this function provides the strong exception-safety guarantee
-        */
-        template<
-            typename OutputIteratorT,
-            typename Range1T, 
-            typename Range2T,
-            typename Range3T>
-        inline OutputIteratorT replace_last_copy(
-            OutputIteratorT Output,
-            const Range1T& Input,
-            const Range2T& Search,
-            const Range3T& Format )
-        {
-            return find_format_copy(
-                Output,
-                Input,
-                last_finder(Search),
-                const_formatter(Format) );
-        }
-
-        //! Replace last algorithm
-        /*!
-            \overload
-        */
-        template<typename SequenceT, typename Range1T, typename Range2T>
-        inline SequenceT replace_last_copy( 
-            const SequenceT& Input,
-            const Range1T& Search,
-            const Range2T& Format )
-        {
-            return find_format_copy( 
-                Input,
-                last_finder(Search),
-                const_formatter(Format) );
-        }
-
-        //! Replace last algorithm
-        /*!
-            Replace the last match of the search string in the input 
-            with the format string. Input sequence is modified in-place.
-
-            \param Input An input string
-            \param Search A substring to be searched for 
-            \param Format A substitute string
-        */
-        template<typename SequenceT, typename Range1T, typename Range2T>
-        inline void replace_last( 
-            SequenceT& Input,
-            const Range1T& Search,
-            const Range2T& Format )
-        {
-            find_format( 
-                Input, 
-                last_finder(Search),
-                const_formatter(Format) );
-        }
-
-//  replace_last ( case insensitive ) -----------------------------------------------//
-
-        //! Replace last algorithm ( case insensitive )
-        /*!
-            Replace the last match of the search string in the input 
-            with the format string. 
-            The result is a modified copy of the input. It is returned as a sequence 
-            or copied to the output iterator.
-            Searching is case insensitive.
-
-            \param Output An output iterator to which the result will be copied
-            \param Input An input string
-            \param Search A substring to be searched for 
-            \param Format A substitute string
-            \param Loc A locale used for case insensitive comparison
-            \return An output iterator pointing just after the last inserted character or
-                    a modified copy of the input  
-
-            \note The second variant of this function provides the strong exception-safety guarantee
-        */
-        template<
-            typename OutputIteratorT,
-            typename Range1T, 
-            typename Range2T,
-            typename Range3T>
-        inline OutputIteratorT ireplace_last_copy(
-            OutputIteratorT Output,
-            const Range1T& Input,
-            const Range2T& Search,
-            const Range3T& Format,
-            const std::locale& Loc=std::locale() )
-        {
-            return find_format_copy(
-                Output,
-                Input,
-                last_finder(Search, is_iequal(Loc)),
-                const_formatter(Format) );
-        }
-
-        //! Replace last algorithm ( case insensitive )
-        /*!
-            \overload
-        */
-        template<typename SequenceT, typename Range1T, typename Range2T>
-        inline SequenceT ireplace_last_copy( 
-            const SequenceT& Input,
-            const Range1T& Search,
-            const Range2T& Format,
-            const std::locale& Loc=std::locale() )
-        {
-            return find_format_copy( 
-                Input,
-                last_finder(Search, is_iequal(Loc)),
-                const_formatter(Format) );
-        }
-
-        //! Replace last algorithm ( case insensitive )
-        /*!
-            Replace the last match of the search string in the input 
-            with the format string.The input sequence is modified in-place.
-            Searching is case insensitive.
-
-            \param Input An input string
-            \param Search A substring to be searched for 
-            \param Format A substitute string
-            \param Loc A locale used for case insensitive comparison
-            \return A reference to the modified input
-        */
-        template<typename SequenceT, typename Range1T, typename Range2T>
-        inline void ireplace_last( 
-            SequenceT& Input,
-            const Range1T& Search,
-            const Range2T& Format,
-            const std::locale& Loc=std::locale() )
-        {
-            find_format( 
-                Input, 
-                last_finder(Search, is_iequal(Loc)),
-                const_formatter(Format) );
-        }
-
-//  replace_nth --------------------------------------------------------------------//
-
-        //! Replace nth algorithm
-        /*!
-            Replace an Nth (zero-indexed) match of the search string in the input 
-            with the format string. 
-            The result is a modified copy of the input. It is returned as a sequence 
-            or copied to the output iterator.
-
-            \param Output An output iterator to which the result will be copied
-            \param Input An input string
-            \param Search A substring to be searched for 
-            \param Nth An index of the match to be replaced. The index is 0-based.
-                For negative N, matches are counted from the end of string.
-            \param Format A substitute string
-            \return An output iterator pointing just after the last inserted character or
-                a modified copy of the input
-
-            \note The second variant of this function provides the strong exception-safety guarantee
-        */
-        template<
-            typename OutputIteratorT,
-            typename Range1T, 
-            typename Range2T,
-            typename Range3T>
-        inline OutputIteratorT replace_nth_copy(
-            OutputIteratorT Output,
-            const Range1T& Input,
-            const Range2T& Search,
-            int Nth,
-            const Range3T& Format )
-        {
-            return find_format_copy(
-                Output,
-                Input,
-                nth_finder(Search, Nth),
-                const_formatter(Format) );
-        }
-
-        //! Replace nth algorithm
-        /*!
-            \overload
-        */
-        template<typename SequenceT, typename Range1T, typename Range2T>
-        inline SequenceT replace_nth_copy( 
-            const SequenceT& Input,
-            const Range1T& Search,
-            int Nth,
-            const Range2T& Format )
-        {
-            return find_format_copy( 
-                Input,
-                nth_finder(Search, Nth),
-                const_formatter(Format) );
-        }
-
-        //! Replace nth algorithm
-        /*!
-            Replace an Nth (zero-indexed) match of the search string in the input 
-            with the format string. Input sequence is modified in-place.
-
-            \param Input An input string
-            \param Search A substring to be searched for 
-            \param Nth An index of the match to be replaced. The index is 0-based.
-                For negative N, matches are counted from the end of string.
-            \param Format A substitute string
-        */
-        template<typename SequenceT, typename Range1T, typename Range2T>
-        inline void replace_nth( 
-            SequenceT& Input,
-            const Range1T& Search,
-            int Nth,
-            const Range2T& Format )
-        {
-            find_format( 
-                Input, 
-                nth_finder(Search, Nth),
-                const_formatter(Format) );
-        }
-
-//  replace_nth ( case insensitive ) -----------------------------------------------//
-        
-        //! Replace nth algorithm ( case insensitive )
-        /*!
-            Replace an Nth (zero-indexed) match of the search string in the input 
-            with the format string. 
-            The result is a modified copy of the input. It is returned as a sequence 
-            or copied to the output iterator.
-            Searching is case insensitive.
-
-            \param Output An output iterator to which the result will be copied
-            \param Input An input string
-            \param Search A substring to be searched for 
-            \param Nth An index of the match to be replaced. The index is 0-based.
-                For negative N, matches are counted from the end of string.
-            \param Format A substitute string
-            \param Loc A locale used for case insensitive comparison
-            \return An output iterator pointing just after the last inserted character or
-                    a modified copy of the input            
-
-            \note The second variant of this function provides the strong exception-safety guarantee
-       */
-        template<
-            typename OutputIteratorT,
-            typename Range1T, 
-            typename Range2T,
-            typename Range3T>
-        inline OutputIteratorT ireplace_nth_copy(
-            OutputIteratorT Output,
-            const Range1T& Input,
-            const Range2T& Search,
-            int Nth,
-            const Range3T& Format,
-            const std::locale& Loc=std::locale() )
-        {
-            return find_format_copy(
-                Output,
-                Input,
-                nth_finder(Search, Nth, is_iequal(Loc) ),
-                const_formatter(Format) );
-        }
-
-        //! Replace nth algorithm ( case insensitive )
-        /*!
-            \overload
-        */
-        template<typename SequenceT, typename Range1T, typename Range2T>
-        inline SequenceT ireplace_nth_copy( 
-            const SequenceT& Input,
-            const Range1T& Search,
-            int Nth,
-            const Range2T& Format,
-            const std::locale& Loc=std::locale() )
-        {
-            return find_format_copy( 
-                Input,
-                nth_finder(Search, Nth, is_iequal(Loc)),
-                const_formatter(Format) );
-        }
-
-        //! Replace nth algorithm ( case insensitive )
-        /*!
-            Replace an Nth (zero-indexed) match of the search string in the input 
-            with the format string. Input sequence is modified in-place.
-            Searching is case insensitive.
-
-            \param Input An input string
-            \param Search A substring to be searched for 
-            \param Nth An index of the match to be replaced. The index is 0-based.
-                For negative N, matches are counted from the end of string.
-            \param Format A substitute string
-            \param Loc A locale used for case insensitive comparison
-        */
-        template<typename SequenceT, typename Range1T, typename Range2T>
-        inline void ireplace_nth( 
-            SequenceT& Input,
-            const Range1T& Search,
-            int Nth,
-            const Range2T& Format,
-            const std::locale& Loc=std::locale() )
-        {
-            find_format( 
-                Input, 
-                nth_finder(Search, Nth, is_iequal(Loc)),
-                const_formatter(Format) );
-        }
-
-//  replace_all --------------------------------------------------------------------//
-
-        //! Replace all algorithm
-        /*!
-            Replace all occurrences of the search string in the input 
-            with the format string. 
-            The result is a modified copy of the input. It is returned as a sequence 
-            or copied to the output iterator.
-
-            \param Output An output iterator to which the result will be copied
-            \param Input An input string
-            \param Search A substring to be searched for 
-            \param Format A substitute string
-            \return An output iterator pointing just after the last inserted character or
-                    a modified copy of the input 
-
-             \note The second variant of this function provides the strong exception-safety guarantee
-        */
-        template<
-            typename OutputIteratorT,
-            typename Range1T, 
-            typename Range2T,
-            typename Range3T>
-        inline OutputIteratorT replace_all_copy(
-            OutputIteratorT Output,
-            const Range1T& Input,
-            const Range2T& Search,
-            const Range3T& Format )
-        {
-            return find_format_all_copy(
-                Output,
-                Input,
-                first_finder(Search),
-                const_formatter(Format) );
-        }
-
-        //! Replace all algorithm
-        /*!
-            \overload
-        */
-        template<typename SequenceT, typename Range1T, typename Range2T>
-        inline SequenceT replace_all_copy( 
-            const SequenceT& Input,
-            const Range1T& Search,
-            const Range2T& Format )
-        {
-            return find_format_all_copy( 
-                Input,
-                first_finder(Search),
-                const_formatter(Format) );
-        }
-
-        //! Replace all algorithm
-        /*!
-            Replace all occurrences of the search string in the input 
-            with the format string. The input sequence is modified in-place.
-
-            \param Input An input string
-            \param Search A substring to be searched for 
-            \param Format A substitute string
-            \return A reference to the modified input
-        */
-        template<typename SequenceT, typename Range1T, typename Range2T>
-        inline void replace_all( 
-            SequenceT& Input,
-            const Range1T& Search,
-            const Range2T& Format )
-        {
-            find_format_all( 
-                Input, 
-                first_finder(Search),
-                const_formatter(Format) );
-        }
-        
-//  replace_all ( case insensitive ) -----------------------------------------------//
-
-        //! Replace all algorithm ( case insensitive )
-        /*!
-            Replace all occurrences of the search string in the input 
-            with the format string. 
-            The result is a modified copy of the input. It is returned as a sequence 
-            or copied to the output iterator.
-            Searching is case insensitive.
-
-            \param Output An output iterator to which the result will be copied
-            \param Input An input string
-            \param Search A substring to be searched for 
-            \param Format A substitute string
-            \param Loc A locale used for case insensitive comparison
-            \return An output iterator pointing just after the last inserted character or
-                    a modified copy of the input 
-
-            \note The second variant of this function provides the strong exception-safety guarantee
-        */
-        template<
-            typename OutputIteratorT,
-            typename Range1T, 
-            typename Range2T,
-            typename Range3T>
-        inline OutputIteratorT ireplace_all_copy(
-            OutputIteratorT Output,
-            const Range1T& Input,
-            const Range2T& Search,
-            const Range3T& Format,
-            const std::locale& Loc=std::locale() )
-        {
-            return find_format_all_copy(
-                Output,
-                Input,
-                first_finder(Search, is_iequal(Loc)),
-                const_formatter(Format) );
-        }
-
-        //! Replace all algorithm ( case insensitive )
-        /*!
-            \overload
-        */
-        template<typename SequenceT, typename Range1T, typename Range2T>
-        inline SequenceT ireplace_all_copy( 
-            const SequenceT& Input,
-            const Range1T& Search,
-            const Range2T& Format,
-            const std::locale& Loc=std::locale() )
-        {
-            return find_format_all_copy( 
-                Input,
-                first_finder(Search, is_iequal(Loc)),
-                const_formatter(Format) );
-        }
-
-        //! Replace all algorithm ( case insensitive )
-        /*!
-            Replace all occurrences of the search string in the input 
-            with the format string.The input sequence is modified in-place.
-            Searching is case insensitive.
-
-            \param Input An input string
-            \param Search A substring to be searched for 
-            \param Format A substitute string
-            \param Loc A locale used for case insensitive comparison
-        */
-        template<typename SequenceT, typename Range1T, typename Range2T>
-        inline void ireplace_all( 
-            SequenceT& Input,
-            const Range1T& Search,
-            const Range2T& Format,
-            const std::locale& Loc=std::locale() )
-        {
-            find_format_all( 
-                Input, 
-                first_finder(Search, is_iequal(Loc)),
-                const_formatter(Format) );
-        }
-        
-//  replace_head --------------------------------------------------------------------//
-
-        //! Replace head algorithm
-        /*!
-            Replace the head of the input with the given format string. 
-            The head is a prefix of a string of given size. 
-            If the sequence is shorter then required, whole string if 
-            considered to be the head. 
-            The result is a modified copy of the input. It is returned as a sequence 
-            or copied to the output iterator.
-            
-            \param Output An output iterator to which the result will be copied
-            \param Input An input string
-            \param N Length of the head.
-                For N>=0, at most N characters are extracted.
-                For N<0, size(Input)-|N| characters are extracted.
-            \param Format A substitute string
-            \return An output iterator pointing just after the last inserted character or
-                a modified copy of the input  
-
-            \note The second variant of this function provides the strong exception-safety guarantee
-        */
-        template<
-            typename OutputIteratorT,
-            typename Range1T, 
-            typename Range2T>
-        inline OutputIteratorT replace_head_copy(
-            OutputIteratorT Output,
-            const Range1T& Input,
-            int N,
-            const Range2T& Format )
-        {
-            return find_format_copy(
-                Output,
-                Input,
-                head_finder(N),
-                const_formatter(Format) );
-        }
-
-        //! Replace head algorithm
-        /*!
-            \overload
-        */
-        template<typename SequenceT, typename RangeT>
-        inline SequenceT replace_head_copy( 
-            const SequenceT& Input,
-            int N,
-            const RangeT& Format )
-        {
-            return find_format_copy( 
-                Input,
-                head_finder(N),
-                const_formatter(Format) );
-        }
-
-        //! Replace head algorithm
-        /*!
-            Replace the head of the input with the given format string. 
-            The head is a prefix of a string of given size. 
-            If the sequence is shorter then required, the whole string is 
-            considered to be the head. The input sequence is modified in-place.
-
-            \param Input An input string
-            \param N Length of the head.
-                For N>=0, at most N characters are extracted.
-                For N<0, size(Input)-|N| characters are extracted.
-            \param Format A substitute string
-        */
-        template<typename SequenceT, typename RangeT>
-        inline void replace_head( 
-            SequenceT& Input,
-            int N,
-            const RangeT& Format )
-        {
-            find_format( 
-                Input, 
-                head_finder(N),
-                const_formatter(Format) );
-        }
-
-//  replace_tail --------------------------------------------------------------------//
-
-        //! Replace tail algorithm
-        /*!
-            Replace the tail of the input with the given format string. 
-            The tail is a suffix of a string of given size. 
-            If the sequence is shorter then required, whole string is 
-            considered to be the tail. 
-            The result is a modified copy of the input. It is returned as a sequence 
-            or copied to the output iterator.
-
-            \param Output An output iterator to which the result will be copied
-            \param Input An input string
-            \param N Length of the tail.
-                For N>=0, at most N characters are extracted.
-                For N<0, size(Input)-|N| characters are extracted.
-            \param Format A substitute string
-            \return An output iterator pointing just after the last inserted character or
-                    a modified copy of the input   
-
-              \note The second variant of this function provides the strong exception-safety guarantee
-        */
-        template<
-            typename OutputIteratorT,
-            typename Range1T, 
-            typename Range2T>
-        inline OutputIteratorT replace_tail_copy(
-            OutputIteratorT Output,
-            const Range1T& Input,
-            int N,
-            const Range2T& Format )
-        {
-            return find_format_copy(
-                Output,
-                Input,
-                tail_finder(N),
-                const_formatter(Format) );
-        }
-
-        //! Replace tail algorithm
-        /*!
-            \overload
-        */
-        template<typename SequenceT, typename RangeT>
-        inline SequenceT replace_tail_copy( 
-            const SequenceT& Input,
-            int N,
-            const RangeT& Format )
-        {
-            return find_format_copy( 
-                Input,
-                tail_finder(N),
-                const_formatter(Format) );
-        }
-
-        //! Replace tail algorithm
-        /*!
-            Replace the tail of the input with the given format sequence. 
-            The tail is a suffix of a string of given size. 
-            If the sequence is shorter then required, the whole string is 
-            considered to be the tail. The input sequence is modified in-place.
-
-            \param Input An input string
-            \param N Length of the tail.
-                For N>=0, at most N characters are extracted.
-                For N<0, size(Input)-|N| characters are extracted.
-            \param Format A substitute string
-        */
-        template<typename SequenceT, typename RangeT>
-        inline void replace_tail( 
-            SequenceT& Input,
-            int N,
-            const RangeT& Format )
-        {
-            find_format( 
-                Input, 
-                tail_finder(N),
-                const_formatter(Format) );
-        }
-
-    } // namespace algorithm
-
-    // pull names to the boost namespace
-    using algorithm::replace_range_copy;
-    using algorithm::replace_range;
-    using algorithm::replace_first_copy;
-    using algorithm::replace_first;
-    using algorithm::ireplace_first_copy;
-    using algorithm::ireplace_first;
-    using algorithm::replace_last_copy;
-    using algorithm::replace_last;
-    using algorithm::ireplace_last_copy;
-    using algorithm::ireplace_last;
-    using algorithm::replace_nth_copy;
-    using algorithm::replace_nth;
-    using algorithm::ireplace_nth_copy;
-    using algorithm::ireplace_nth;
-    using algorithm::replace_all_copy;
-    using algorithm::replace_all;
-    using algorithm::ireplace_all_copy;
-    using algorithm::ireplace_all;
-    using algorithm::replace_head_copy;
-    using algorithm::replace_head;
-    using algorithm::replace_tail_copy;
-    using algorithm::replace_tail;
-
-} // namespace boost
-
-#endif  // BOOST_REPLACE_HPP

+ 0 - 193
feng-authnotify/ext/boost/algorithm/string/sequence_traits.hpp

@@ -1,193 +0,0 @@
-//  Boost string_algo library sequence_traits.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2003.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_SEQUENCE_TRAITS_HPP
-#define BOOST_STRING_SEQUENCE_TRAITS_HPP
-
-#include <boost/config.hpp>
-#include <boost/mpl/bool.hpp>
-#include <boost/algorithm/string/yes_no_type.hpp>
-
-/*! \file
-    Traits defined in this header are used by various algorithms to achieve
-    better performance for specific containers.
-    Traits provide fail-safe defaults. If a container supports some of these
-    features, it is possible to specialize the specific trait for this container.
-    For lacking compilers, it is possible of define an override for a specific tester
-    function.
-
-    Due to a language restriction, it is not currently possible to define specializations for
-    stl containers without including the corresponding header. To decrease the overhead
-    needed by this inclusion, user can selectively include a specialization
-    header for a specific container. They are located in boost/algorithm/string/stl
-    directory. Alternatively she can include boost/algorithm/string/std_collection_traits.hpp
-    header which contains specializations for all stl containers.
-*/
-
-namespace boost {
-    namespace algorithm {
-
-//  sequence traits  -----------------------------------------------//
-
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-        //! Native replace tester
-        /*!
-            Declare an override of this tester function with return
-            type boost::string_algo::yes_type for a sequence with this property.
-
-            \return yes_type if the container has basic_string like native replace
-            method.
-        */
-        no_type has_native_replace_tester(...);
-
-        //! Stable iterators tester
-        /*!
-            Declare an override of this tester function with return
-            type boost::string_algo::yes_type for a sequence with this property.
-
-            \return yes_type if the sequence's insert/replace/erase methods do not invalidate
-            existing iterators.
-        */
-        no_type has_stable_iterators_tester(...);
-
-        //! const time insert tester
-        /*!
-            Declare an override of this tester function with return
-            type boost::string_algo::yes_type for a sequence with this property.
-
-            \return yes_type if the sequence's insert method is working in constant time
-        */
-        no_type has_const_time_insert_tester(...);
-
-        //! const time erase tester
-        /*!
-            Declare an override of this tester function with return
-            type boost::string_algo::yes_type for a sequence with this property.
-
-            \return yes_type if the sequence's erase method is working in constant time
-        */
-        no_type has_const_time_erase_tester(...);
-
-#endif //BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-        //! Native replace trait
-        /*!
-            This trait specifies that the sequence has \c std::string like replace method
-        */
-        template< typename T >
-        class has_native_replace
-        {
-
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-        private:
-            static T* t;
-        public:
-            BOOST_STATIC_CONSTANT(bool, value=(
-                sizeof(has_native_replace_tester(t))==sizeof(yes_type) ) );
-#else  // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-        public:
-#    if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
-            enum { value = false };
-#    else
-            BOOST_STATIC_CONSTANT(bool, value=false);
-#    endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-
-            typedef mpl::bool_<has_native_replace<T>::value> type;
-        };
-
-
-        //! Stable iterators trait
-        /*!
-            This trait specifies that the sequence has stable iterators. It means
-            that operations like insert/erase/replace do not invalidate iterators.
-        */
-        template< typename T >
-        class has_stable_iterators
-        {
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-        private:
-            static T* t;
-        public:
-            BOOST_STATIC_CONSTANT(bool, value=(
-                sizeof(has_stable_iterators_tester(t))==sizeof(yes_type) ) );
-#else  // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-        public:
-#    if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
-            enum { value = false };
-#    else
-            BOOST_STATIC_CONSTANT(bool, value=false);
-#    endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-            typedef mpl::bool_<has_stable_iterators<T>::value> type;
-        };
-
-
-        //! Const time insert trait
-        /*!
-            This trait specifies that the sequence's insert method has
-            constant time complexity.
-        */
-        template< typename T >
-        class has_const_time_insert
-        {
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-        private:
-            static T* t;
-        public:
-            BOOST_STATIC_CONSTANT(bool, value=(
-                sizeof(has_const_time_insert_tester(t))==sizeof(yes_type) ) );
-#else  // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-        public:
-#    if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
-            enum { value = false };
-#    else
-            BOOST_STATIC_CONSTANT(bool, value=false);
-#    endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-            typedef mpl::bool_<has_const_time_insert<T>::value> type;
-        };
-
-
-        //! Const time erase trait
-        /*!
-            This trait specifies that the sequence's erase method has
-            constant time complexity.
-        */
-        template< typename T >
-        class has_const_time_erase
-        {
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-        private:
-            static T* t;
-        public:
-            BOOST_STATIC_CONSTANT(bool, value=(
-                sizeof(has_const_time_erase_tester(t))==sizeof(yes_type) ) );
-#else  // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-        public:
-#    if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
-            enum { value = false };
-#    else
-            BOOST_STATIC_CONSTANT(bool, value=false);
-#    endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-            typedef mpl::bool_<has_const_time_erase<T>::value> type;
-        };
-
-    } // namespace algorithm
-} // namespace boost
-
-
-#endif  // BOOST_STRING_SEQUENCE_TRAITS_HPP

+ 0 - 163
feng-authnotify/ext/boost/algorithm/string/split.hpp

@@ -1,163 +0,0 @@
-//  Boost string_algo library split.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2006.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_SPLIT_HPP
-#define BOOST_STRING_SPLIT_HPP
-
-#include <boost/algorithm/string/config.hpp>
-
-#include <boost/algorithm/string/iter_find.hpp>
-#include <boost/algorithm/string/finder.hpp>
-#include <boost/algorithm/string/compare.hpp>
-
-/*! \file
-    Defines basic split algorithms. 
-    Split algorithms can be used to divide a string
-    into several parts according to given criteria.
-    
-    Each part is copied and added as a new element to the
-    output container.
-    Thus the result container must be able to hold copies
-    of the matches (in a compatible structure like std::string) or
-    a reference to it (e.g. using the iterator range class).
-    Examples of such a container are \c std::vector<std::string>
-    or \c std::list<boost::iterator_range<std::string::iterator>>
-*/
-
-namespace boost {
-    namespace algorithm {
-
-//  find_all  ------------------------------------------------------------//
-
-        //! Find all algorithm
-        /*!
-            This algorithm finds all occurrences of the search string
-            in the input.
-            
-            Each part is copied and added as a new element to the
-            output container.
-            Thus the result container must be able to hold copies
-            of the matches (in a compatible structure like std::string) or
-            a reference to it (e.g. using the iterator range class).
-            Examples of such a container are \c std::vector<std::string>
-            or \c std::list<boost::iterator_range<std::string::iterator>>
-
-            \param Result A container that can hold copies of references to the substrings
-            \param Input A container which will be searched.
-            \param Search A substring to be searched for.
-            \return A reference the result
-
-            \note Prior content of the result will be overwritten.
-
-            \note This function provides the strong exception-safety guarantee
-        */
-        template< typename SequenceSequenceT, typename Range1T, typename Range2T >
-        inline SequenceSequenceT& find_all(
-            SequenceSequenceT& Result,
-            Range1T& Input,
-            const Range2T& Search)
-        {
-            return iter_find(
-                Result,
-                Input,
-                first_finder(Search) );        
-        }
-
-        //! Find all algorithm ( case insensitive ) 
-        /*!
-            This algorithm finds all occurrences of the search string
-            in the input. 
-            Each part is copied and added as a new element to the
-            output container. Thus the result container must be able to hold copies
-            of the matches (in a compatible structure like std::string) or
-            a reference to it (e.g. using the iterator range class).
-            Examples of such a container are \c std::vector<std::string>
-            or \c std::list<boost::iterator_range<std::string::iterator>>
-
-            Searching is case insensitive.
-
-            \param Result A container that can hold copies of references to the substrings
-            \param Input A container which will be searched.
-            \param Search A substring to be searched for.
-            \param Loc A locale used for case insensitive comparison
-            \return A reference the result
-
-            \note Prior content of the result will be overwritten.
-
-            \note This function provides the strong exception-safety guarantee
-        */
-        template< typename SequenceSequenceT, typename Range1T, typename Range2T >
-        inline SequenceSequenceT& ifind_all(
-            SequenceSequenceT& Result,
-            Range1T& Input,
-            const Range2T& Search,
-            const std::locale& Loc=std::locale() )
-        {
-            return iter_find(
-                Result,
-                Input,
-                first_finder(Search, is_iequal(Loc) ) );        
-        }
-
-
-//  tokenize  -------------------------------------------------------------//
-
-        //! Split algorithm
-        /*! 
-            Tokenize expression. This function is equivalent to C strtok. Input
-            sequence is split into tokens, separated by separators. Separators 
-            are given by means of the predicate.
-
-            Each part is copied and added as a new element to the
-            output container.
-            Thus the result container must be able to hold copies
-            of the matches (in a compatible structure like std::string) or
-            a reference to it (e.g. using the iterator range class).
-            Examples of such a container are \c std::vector<std::string>
-            or \c std::list<boost::iterator_range<std::string::iterator>>
-    
-            \param Result A container that can hold copies of references to the substrings          
-            \param Input A container which will be searched.
-            \param Pred A predicate to identify separators. This predicate is 
-                supposed to return true if a given element is a separator.
-            \param eCompress If eCompress argument is set to token_compress_on, adjacent 
-                separators are merged together. Otherwise, every two separators
-                delimit a token.
-            \return A reference the result
-
-            \note Prior content of the result will be overwritten.
-
-            \note This function provides the strong exception-safety guarantee
-        */
-        template< typename SequenceSequenceT, typename RangeT, typename PredicateT >
-        inline SequenceSequenceT& split(
-            SequenceSequenceT& Result,
-            RangeT& Input,
-            PredicateT Pred,
-            token_compress_mode_type eCompress=token_compress_off )
-        {
-            return iter_split(
-                Result,
-                Input,
-                token_finder( Pred, eCompress ) );         
-        }
-
-    } // namespace algorithm
-
-    // pull names to the boost namespace
-    using algorithm::find_all;
-    using algorithm::ifind_all;
-    using algorithm::split;    
-
-} // namespace boost
-
-
-#endif  // BOOST_STRING_SPLIT_HPP
-

+ 0 - 85
feng-authnotify/ext/boost/algorithm/string/std/list_traits.hpp

@@ -1,85 +0,0 @@
-//  Boost string_algo library list_traits.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2003.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_STD_LIST_TRAITS_HPP
-#define BOOST_STRING_STD_LIST_TRAITS_HPP
-
-#include <boost/algorithm/string/yes_no_type.hpp>
-#include <list>
-#include <boost/algorithm/string/sequence_traits.hpp>
-
-namespace boost {
-    namespace algorithm {
-
-//  std::list<> traits  -----------------------------------------------//
-
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-        // stable iterators tester
-        template<typename T, typename AllocT>
-        yes_type has_stable_iterators_tester( const ::std::list<T,AllocT>* );
-
-        // const time insert tester
-        template<typename T, typename AllocT>
-        yes_type has_const_time_insert_tester( const ::std::list<T,AllocT>* );
-
-        // const time erase tester
-        template<typename T, typename AllocT>
-        yes_type has_const_time_erase_tester( const ::std::list<T,AllocT>* );
-
-
-#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-        // stable iterators trait
-        template<typename T, typename AllocT>
-        class has_stable_iterators< ::std::list<T,AllocT> >
-        {
-        public:
-#if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
-            enum { value = true };
-#else
-            BOOST_STATIC_CONSTANT(bool, value=true);
-#endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
-            typedef mpl::bool_<has_stable_iterators<T>::value> type;
-        };
-
-        // const time insert trait
-        template<typename T, typename AllocT>
-        class has_const_time_insert< ::std::list<T,AllocT> >
-        {
-        public:
-#if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
-            enum { value = true };
-#else
-            BOOST_STATIC_CONSTANT(bool, value=true);
-#endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
-            typedef mpl::bool_<has_const_time_insert<T>::value> type;
-        };
-
-        // const time erase trait
-        template<typename T, typename AllocT>
-        class has_const_time_erase< ::std::list<T,AllocT> >
-        {
-        public:
-#if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
-            enum { value = true };
-#else
-            BOOST_STATIC_CONSTANT(bool, value=true);
-#endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
-            typedef mpl::bool_<has_const_time_erase<T>::value> type;
-        };
-#endif
-
-
-    } // namespace algorithm
-} // namespace boost
-
-
-#endif  // BOOST_STRING_STD_LIST_TRAITS_HPP

+ 0 - 101
feng-authnotify/ext/boost/algorithm/string/std/rope_traits.hpp

@@ -1,101 +0,0 @@
-//  Boost string_algo library string_traits.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2003.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_STD_ROPE_TRAITS_HPP
-#define BOOST_STRING_STD_ROPE_TRAITS_HPP
-
-#include <boost/algorithm/string/yes_no_type.hpp>
-#include <rope>
-#include <boost/algorithm/string/sequence_traits.hpp>
-
-namespace boost {
-    namespace algorithm {
-
-//  SGI's std::rope<> traits  -----------------------------------------------//
-
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-        // native replace tester
-        template<typename T, typename TraitsT, typename AllocT>
-        yes_type has_native_replace_tester( const std::rope<T, TraitsT, AllocT>* );
-
-        // stable iterators tester
-        template<typename T, typename TraitsT, typename AllocT>
-        yes_type has_stable_iterators_tester( const std::rope<T, TraitsT, AllocT>* );
-
-        // const time insert tester
-        template<typename T, typename TraitsT, typename AllocT>
-        yes_type has_const_time_insert_tester( const std::rope<T, TraitsT, AllocT>* );
-
-        // const time erase tester
-        template<typename T, typename TraitsT, typename AllocT>
-        yes_type has_const_time_erase_tester( const std::rope<T, TraitsT, AllocT>* );
-
-#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-    
-    // native replace trait
-        template<typename T, typename TraitsT, typename AllocT>
-        class has_native_replace< std::rope<T,TraitsT,AllocT> >
-        {
-        public:
-#if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
-            enum { value = true };
-#else
-            BOOST_STATIC_CONSTANT(bool, value=true);
-#endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
-            typedef mpl::bool_<value> type;     
-        };
-
-    // stable iterators trait
-        template<typename T, typename TraitsT, typename AllocT>
-        class has_stable_iterators< std::rope<T,TraitsT,AllocT> >
-        {
-        public:
-#if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
-            enum { value = true };
-#else
-            BOOST_STATIC_CONSTANT(bool, value=true);
-#endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
-            typedef mpl::bool_<value> type;     
-        };
-
-    // const time insert trait
-        template<typename T, typename TraitsT, typename AllocT>
-        class has_const_time_insert< std::rope<T,TraitsT,AllocT> >
-        {
-        public:
-#if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
-            enum { value = true };
-#else
-            BOOST_STATIC_CONSTANT(bool, value=true);
-#endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
-            typedef mpl::bool_<value> type;     
-        };
-
-    // const time erase trait
-        template<typename T, typename TraitsT, typename AllocT>
-        class has_const_time_erase< std::rope<T,TraitsT,AllocT> >
-        {
-        public:
-#if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
-            enum { value = true };
-#else
-            BOOST_STATIC_CONSTANT(bool, value=true);
-#endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
-            typedef mpl::bool_<value> type;     
-        };
-#endif
-
-
-    } // namespace algorithm
-} // namespace boost
-
-
-#endif  // BOOST_STRING_ROPE_TRAITS_HPP

+ 0 - 85
feng-authnotify/ext/boost/algorithm/string/std/slist_traits.hpp

@@ -1,85 +0,0 @@
-//  Boost string_algo library slist_traits.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2003. 
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_STD_SLIST_TRAITS_HPP
-#define BOOST_STRING_STD_SLIST_TRAITS_HPP
-
-#include <boost/algorithm/string/config.hpp>
-#include <boost/algorithm/string/yes_no_type.hpp>
-#include BOOST_SLIST_HEADER 
-#include <boost/algorithm/string/sequence_traits.hpp>
-
-namespace boost {
-    namespace algorithm {
-
-//  SGI's std::slist<> traits  -----------------------------------------------//
-
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-        // stable iterators tester
-        template<typename T, typename AllocT>
-        yes_type has_stable_iterators_tester( const BOOST_STD_EXTENSION_NAMESPACE::slist<T,AllocT>* );
-
-        // const time insert tester
-        template<typename T, typename AllocT>
-        yes_type has_const_time_insert_tester( const BOOST_STD_EXTENSION_NAMESPACE::slist<T,AllocT>* );
-
-        // const time erase tester
-        template<typename T, typename AllocT>
-        yes_type has_const_time_erase_tester( const BOOST_STD_EXTENSION_NAMESPACE::slist<T,AllocT>* );
-
-#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-    // stable iterators trait
-        template<typename T, typename AllocT>
-        class has_stable_iterators< BOOST_STD_EXTENSION_NAMESPACE::slist<T,AllocT> >
-        {
-        public:
-#if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
-            enum { value = true };
-#else
-            BOOST_STATIC_CONSTANT(bool, value=true);
-#endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
-            typedef mpl::bool_<has_stable_iterators<T>::value> type;
-        };
-
-    // const time insert trait
-        template<typename T, typename AllocT>
-        class has_const_time_insert< BOOST_STD_EXTENSION_NAMESPACE::slist<T,AllocT> >
-        {
-        public:
-#if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
-            enum { value = true };
-#else
-            BOOST_STATIC_CONSTANT(bool, value=true);
-#endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
-            typedef mpl::bool_<has_const_time_insert<T>::value> type;
-        };
-
-    // const time erase trait
-        template<typename T, typename AllocT>
-        class has_const_time_erase< BOOST_STD_EXTENSION_NAMESPACE::slist<T,AllocT> >
-        {
-        public:
-#if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
-            enum { value = true };
-#else
-            BOOST_STATIC_CONSTANT(bool, value=true);
-#endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
-            typedef mpl::bool_<has_const_time_erase<T>::value> type;
-        };
-#endif
-
-
-    } // namespace algorithm
-} // namespace boost
-
-
-#endif  // BOOST_STRING_STD_LIST_TRAITS_HPP

+ 0 - 52
feng-authnotify/ext/boost/algorithm/string/std/string_traits.hpp

@@ -1,52 +0,0 @@
-//  Boost string_algo library string_traits.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2003.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_STD_STRING_TRAITS_HPP
-#define BOOST_STRING_STD_STRING_TRAITS_HPP
-
-#include <boost/algorithm/string/yes_no_type.hpp>
-#include <string>
-#include <boost/algorithm/string/sequence_traits.hpp>
-
-namespace boost {
-    namespace algorithm {
-
-//  std::basic_string<> traits  -----------------------------------------------//
-
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-        // native replace tester
-        template<typename T, typename TraitsT, typename AllocT>
-        yes_type has_native_replace_tester( const std::basic_string<T, TraitsT, AllocT>* );
-
-#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-    // native replace trait
-        template<typename T, typename TraitsT, typename AllocT>
-        class has_native_replace< std::basic_string<T, TraitsT, AllocT> >
-        {
-        public:
-#if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
-            enum { value = true } ;
-#else
-            BOOST_STATIC_CONSTANT(bool, value=true);
-#endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
-
-        typedef mpl::bool_<has_native_replace<T>::value> type;
-        };
-
-
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-    } // namespace algorithm
-} // namespace boost
-
-
-#endif  // BOOST_STRING_LIST_TRAITS_HPP

+ 0 - 26
feng-authnotify/ext/boost/algorithm/string/std_containers_traits.hpp

@@ -1,26 +0,0 @@
-//  Boost string_algo library std_containers_traits.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2003.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_STD_CONTAINERS_TRAITS_HPP
-#define BOOST_STRING_STD_CONTAINERS_TRAITS_HPP
-
-/*!\file 
-    This file includes sequence traits for stl containers.
-*/
-
-#include <boost/config.hpp>
-#include <boost/algorithm/string/std/string_traits.hpp>
-#include <boost/algorithm/string/std/list_traits.hpp>
-
-#ifdef BOOST_HAS_SLIST
-#   include <boost/algorithm/string/std/slist_traits.hpp>
-#endif
-
-#endif  // BOOST_STRING_STD_CONTAINERS_TRAITS_HPP

+ 0 - 398
feng-authnotify/ext/boost/algorithm/string/trim.hpp

@@ -1,398 +0,0 @@
-//  Boost string_algo library trim.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2003.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_TRIM_HPP
-#define BOOST_STRING_TRIM_HPP
-
-#include <boost/algorithm/string/config.hpp>
-
-#include <boost/range/begin.hpp>
-#include <boost/range/end.hpp>
-#include <boost/range/const_iterator.hpp>
-#include <boost/range/as_literal.hpp>
-#include <boost/range/iterator_range.hpp>
-
-#include <boost/algorithm/string/detail/trim.hpp>
-#include <boost/algorithm/string/classification.hpp>
-#include <locale>
-
-/*! \file
-    Defines trim algorithms.
-    Trim algorithms are used to remove trailing and leading spaces from a 
-    sequence (string). Space is recognized using given locales.
-
-    Parametric (\c _if) variants use a predicate (functor) to select which characters
-    are to be trimmed.. 
-    Functions take a selection predicate as a parameter, which is used to determine 
-    whether a character is a space. Common predicates are provided in classification.hpp header.
-
-*/
-
-namespace boost {
-    namespace algorithm {
-
-    //  left trim  -----------------------------------------------//
-
-
-        //! Left trim - parametric
-        /*!
-            Remove all leading spaces from the input. 
-            The supplied predicate is used to determine which characters are considered spaces.
-            The result is a trimmed copy of the input. It is returned as a sequence 
-            or copied to the output iterator
-
-            \param Output An output iterator to which the result will be copied
-            \param Input An input range
-            \param IsSpace An unary predicate identifying spaces
-            \return 
-                An output iterator pointing just after the last inserted character or
-                a copy of the input
-
-               \note The second variant of this function provides the strong exception-safety guarantee
-        */
-        template<typename OutputIteratorT, typename RangeT, typename PredicateT>
-        inline OutputIteratorT trim_left_copy_if( 
-            OutputIteratorT Output,
-            const RangeT& Input,
-            PredicateT IsSpace)
-        {
-            iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_range(as_literal(Input));
-
-            std::copy( 
-                ::boost::algorithm::detail::trim_begin( 
-                    ::boost::begin(lit_range), 
-                    ::boost::end(lit_range), 
-                    IsSpace ),
-                ::boost::end(lit_range),
-                Output);
-
-            return Output;
-        }
-
-        //! Left trim - parametric
-        /*!
-            \overload
-        */
-        template<typename SequenceT, typename PredicateT>
-        inline SequenceT trim_left_copy_if(const SequenceT& Input, PredicateT IsSpace)
-        {
-            return SequenceT( 
-                ::boost::algorithm::detail::trim_begin( 
-                    ::boost::begin(Input), 
-                    ::boost::end(Input), 
-                    IsSpace ),
-                ::boost::end(Input));
-        }
-
-        //! Left trim - parametric
-        /*!
-            Remove all leading spaces from the input. 
-            The result is a trimmed copy of the input.
-
-            \param Input An input sequence
-            \param Loc a locale used for 'space' classification
-            \return A trimmed copy of the input
-
-            \note This function provides the strong exception-safety guarantee
-        */
-        template<typename SequenceT>
-        inline SequenceT trim_left_copy(const SequenceT& Input, const std::locale& Loc=std::locale())
-        {
-            return            
-                trim_left_copy_if(
-                    Input, 
-                    is_space(Loc));
-        }
-
-        //! Left trim
-        /*!
-            Remove all leading spaces from the input. The supplied predicate is 
-            used to determine which characters are considered spaces.
-            The input sequence is modified in-place.
-
-            \param Input An input sequence
-            \param IsSpace An unary predicate identifying spaces
-        */
-        template<typename SequenceT, typename PredicateT>
-        inline void trim_left_if(SequenceT& Input, PredicateT IsSpace)
-        {
-            Input.erase( 
-                ::boost::begin(Input),
-                ::boost::algorithm::detail::trim_begin( 
-                    ::boost::begin(Input), 
-                    ::boost::end(Input), 
-                    IsSpace));
-        }
-
-        //! Left trim
-        /*!
-            Remove all leading spaces from the input.
-            The Input sequence is modified in-place.
-
-            \param Input An input sequence
-            \param Loc A locale used for 'space' classification
-        */
-        template<typename SequenceT>
-        inline void trim_left(SequenceT& Input, const std::locale& Loc=std::locale())
-        {
-            trim_left_if( 
-                Input, 
-                is_space(Loc));
-        }
-
-    //  right trim  -----------------------------------------------//
-
-        //! Right trim - parametric
-        /*!
-            Remove all trailing spaces from the input.             
-            The supplied predicate is used to determine which characters are considered spaces.
-            The result is a trimmed copy of the input. It is returned as a sequence 
-            or copied to the output iterator
-
-            \param Output An output iterator to which the result will be copied
-            \param Input An input range
-            \param IsSpace An unary predicate identifying spaces
-            \return 
-                An output iterator pointing just after the last inserted character or
-                a copy of the input
-
-             \note The second variant of this function provides the strong exception-safety guarantee
-        */
-        template<typename OutputIteratorT, typename RangeT, typename PredicateT>
-        inline OutputIteratorT trim_right_copy_if( 
-            OutputIteratorT Output,
-            const RangeT& Input,
-            PredicateT IsSpace )
-        {
-            iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_range(as_literal(Input));
-         
-            std::copy( 
-                ::boost::begin(lit_range),
-                ::boost::algorithm::detail::trim_end( 
-                    ::boost::begin(lit_range), 
-                    ::boost::end(lit_range), 
-                    IsSpace ),
-                Output );
-
-            return Output;
-        }
-
-        //! Right trim - parametric
-        /*!
-            \overload
-         */
-        template<typename SequenceT, typename PredicateT>
-        inline SequenceT trim_right_copy_if(const SequenceT& Input, PredicateT IsSpace)
-        {
-            return SequenceT( 
-                ::boost::begin(Input),
-                ::boost::algorithm::detail::trim_end( 
-                    ::boost::begin(Input), 
-                    ::boost::end(Input), 
-                    IsSpace)
-                );
-        }
-
-        //! Right trim
-        /*!
-            Remove all trailing spaces from the input. 
-            The result is a trimmed copy of the input
-
-            \param Input An input sequence
-            \param Loc A locale used for 'space' classification
-            \return A trimmed copy of the input
-
-            \note This function provides the strong exception-safety guarantee
-        */
-        template<typename SequenceT>
-        inline SequenceT trim_right_copy(const SequenceT& Input, const std::locale& Loc=std::locale())
-        {
-            return 
-                trim_right_copy_if( 
-                    Input, 
-                    is_space(Loc));
-        }
-
-            
-        //! Right trim - parametric
-        /*!
-            Remove all trailing spaces from the input.
-            The supplied predicate is used to determine which characters are considered spaces.
-            The input sequence is modified in-place.
-
-            \param Input An input sequence
-            \param IsSpace An unary predicate identifying spaces
-        */
-        template<typename SequenceT, typename PredicateT>
-        inline void trim_right_if(SequenceT& Input, PredicateT IsSpace)
-        {
-            Input.erase(
-                ::boost::algorithm::detail::trim_end( 
-                    ::boost::begin(Input), 
-                    ::boost::end(Input), 
-                    IsSpace ),
-                ::boost::end(Input)
-                );
-        }
-
-
-        //! Right trim
-        /*!
-            Remove all trailing spaces from the input. 
-            The input sequence is modified in-place.
-
-            \param Input An input sequence
-            \param Loc A locale used for 'space' classification
-        */
-        template<typename SequenceT>
-        inline void trim_right(SequenceT& Input, const std::locale& Loc=std::locale())
-        {
-            trim_right_if(
-                Input, 
-                is_space(Loc) );
-        }
-
-    //  both side trim  -----------------------------------------------//
-
-        //! Trim - parametric
-        /*!
-            Remove all trailing and leading spaces from the input. 
-            The supplied predicate is used to determine which characters are considered spaces.
-            The result is a trimmed copy of the input. It is returned as a sequence 
-            or copied to the output iterator
-
-            \param Output An output iterator to which the result will be copied
-            \param Input An input range
-            \param IsSpace An unary predicate identifying spaces
-            \return 
-                An output iterator pointing just after the last inserted character or
-                a copy of the input
-
-             \note The second variant of this function provides the strong exception-safety guarantee
-        */
-        template<typename OutputIteratorT, typename RangeT, typename PredicateT>
-        inline OutputIteratorT trim_copy_if( 
-            OutputIteratorT Output,
-            const RangeT& Input,
-            PredicateT IsSpace)
-        {
-            iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_range(as_literal(Input));
-
-            BOOST_STRING_TYPENAME 
-                range_const_iterator<RangeT>::type TrimEnd=
-                ::boost::algorithm::detail::trim_end( 
-                    ::boost::begin(lit_range), 
-                    ::boost::end(lit_range), 
-                    IsSpace);
-
-            std::copy( 
-                detail::trim_begin( 
-                    ::boost::begin(lit_range), TrimEnd, IsSpace),
-                TrimEnd,
-                Output
-                );
-
-            return Output;
-        }
-
-        //! Trim - parametric
-        /*!
-            \overload
-         */
-        template<typename SequenceT, typename PredicateT>
-        inline SequenceT trim_copy_if(const SequenceT& Input, PredicateT IsSpace)
-        {
-            BOOST_STRING_TYPENAME 
-                range_const_iterator<SequenceT>::type TrimEnd=
-                    ::boost::algorithm::detail::trim_end( 
-                        ::boost::begin(Input), 
-                        ::boost::end(Input), 
-                        IsSpace);
-
-            return SequenceT( 
-                detail::trim_begin( 
-                    ::boost::begin(Input), 
-                    TrimEnd, 
-                    IsSpace),
-                TrimEnd
-                );
-        }
-
-        //! Trim
-        /*!
-            Remove all leading and trailing spaces from the input. 
-            The result is a trimmed copy of the input
-
-            \param Input An input sequence
-            \param Loc A locale used for 'space' classification
-            \return A trimmed copy of the input
-
-            \note This function provides the strong exception-safety guarantee
-        */
-        template<typename SequenceT>
-        inline SequenceT trim_copy( const SequenceT& Input, const std::locale& Loc=std::locale() )
-        {
-            return
-                trim_copy_if(
-                    Input, 
-                    is_space(Loc) );
-        }
-     
-        //! Trim
-        /*!
-            Remove all leading and trailing spaces from the input. 
-            The supplied predicate is used to determine which characters are considered spaces.
-            The input sequence is modified in-place.
-
-            \param Input An input sequence
-            \param IsSpace An unary predicate identifying spaces
-        */
-        template<typename SequenceT, typename PredicateT>
-        inline void trim_if(SequenceT& Input, PredicateT IsSpace)
-        {
-            trim_right_if( Input, IsSpace );
-            trim_left_if( Input, IsSpace );
-        }
-
-        //! Trim
-        /*!
-            Remove all leading and trailing spaces from the input. 
-            The input sequence is modified in-place.
-
-            \param Input An input sequence
-            \param Loc A locale used for 'space' classification
-        */
-        template<typename SequenceT>
-        inline void trim(SequenceT& Input, const std::locale& Loc=std::locale())
-        {
-            trim_if(
-                Input, 
-                is_space( Loc ) );
-        }
-
-    } // namespace algorithm 
-
-    // pull names to the boost namespace
-    using algorithm::trim_left;
-    using algorithm::trim_left_if;
-    using algorithm::trim_left_copy;
-    using algorithm::trim_left_copy_if;
-    using algorithm::trim_right;
-    using algorithm::trim_right_if;
-    using algorithm::trim_right_copy;
-    using algorithm::trim_right_copy_if;
-    using algorithm::trim;
-    using algorithm::trim_if;
-    using algorithm::trim_copy;
-    using algorithm::trim_copy_if;
-
-} // namespace boost
-
-#endif  // BOOST_STRING_TRIM_HPP

+ 0 - 33
feng-authnotify/ext/boost/algorithm/string/yes_no_type.hpp

@@ -1,33 +0,0 @@
-//  Boost string_algo library yes_no_type.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2003.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_YES_NO_TYPE_DETAIL_HPP
-#define BOOST_STRING_YES_NO_TYPE_DETAIL_HPP
-
-namespace boost {
-    namespace algorithm {
-
-        // taken from boost mailing-list
-        // when yes_no_type will become officially
-        // a part of boost distribution, this header
-        // will be deprecated
-        template<int I> struct size_descriptor 
-        {
-            typedef char (& type)[I];
-        }; 
-
-        typedef size_descriptor<1>::type yes_type;
-        typedef size_descriptor<2>::type no_type;
-
-    } // namespace algorithm
-} // namespace boost
-
-
-#endif  // BOOST_STRING_YES_NO_TYPE_DETAIL_HPP

+ 0 - 23
feng-authnotify/ext/boost/algorithm/string_regex.hpp

@@ -1,23 +0,0 @@
-//  Boost string_algo library string_regex.hpp header file  ---------------------------//
-
-//  Copyright Pavol Droba 2002-2004.
-//
-// Distributed under the Boost Software License, Version 1.0.
-//    (See accompanying file LICENSE_1_0.txt or copy at
-//          http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/ for updates, documentation, and revision history.
-
-#ifndef BOOST_STRING_ALGO_REGEX_HPP
-#define BOOST_STRING_ALGO_REGEX_HPP
-
-/*! \file
-    Cumulative include for string_algo library.
-    In addtion to string.hpp contains also regex-related stuff.
-*/
-
-#include <boost/regex.hpp>
-#include <boost/algorithm/string.hpp>
-#include <boost/algorithm/string/regex.hpp>
-
-#endif  // BOOST_STRING_ALGO_REGEX_HPP

+ 0 - 181
feng-authnotify/ext/boost/aligned_storage.hpp

@@ -1,181 +0,0 @@
-//-----------------------------------------------------------------------------
-// boost aligned_storage.hpp header file
-// See http://www.boost.org for updates, documentation, and revision history.
-//-----------------------------------------------------------------------------
-//
-// Copyright (c) 2002-2003
-// Eric Friedman, Itay Maman
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_ALIGNED_STORAGE_HPP
-#define BOOST_ALIGNED_STORAGE_HPP
-
-#include <cstddef> // for std::size_t
-
-#include "boost/config.hpp"
-#include "boost/detail/workaround.hpp"
-#include "boost/type_traits/alignment_of.hpp"
-#include "boost/type_traits/type_with_alignment.hpp"
-#include "boost/type_traits/is_pod.hpp"
-
-#include "boost/mpl/eval_if.hpp"
-#include "boost/mpl/identity.hpp"
-
-#include "boost/type_traits/detail/bool_trait_def.hpp"
-
-namespace boost {
-
-namespace detail { namespace aligned_storage {
-
-BOOST_STATIC_CONSTANT(
-      std::size_t
-    , alignment_of_max_align = ::boost::alignment_of<max_align>::value
-    );
-
-//
-// To be TR1 conforming this must be a POD type:
-//
-template <
-      std::size_t size_
-    , std::size_t alignment_
->
-struct aligned_storage_imp
-{
-    union data_t
-    {
-        char buf[size_];
-
-        typename mpl::eval_if_c<
-              alignment_ == std::size_t(-1)
-            , mpl::identity<detail::max_align>
-            , type_with_alignment<alignment_>
-            >::type align_;
-    } data_;
-    void* address() const { return const_cast<aligned_storage_imp*>(this); }
-};
-
-template< std::size_t alignment_ >
-struct aligned_storage_imp<0u,alignment_>
-{
-    /* intentionally empty */
-    void* address() const { return 0; }
-};
-
-}} // namespace detail::aligned_storage
-
-template <
-      std::size_t size_
-    , std::size_t alignment_ = std::size_t(-1)
->
-class aligned_storage : 
-#ifndef __BORLANDC__
-   private 
-#else
-   public
-#endif
-   detail::aligned_storage::aligned_storage_imp<size_, alignment_> 
-{
- 
-public: // constants
-
-    typedef detail::aligned_storage::aligned_storage_imp<size_, alignment_> type;
-
-    BOOST_STATIC_CONSTANT(
-          std::size_t
-        , size = size_
-        );
-    BOOST_STATIC_CONSTANT(
-          std::size_t
-        , alignment = (
-              alignment_ == std::size_t(-1)
-            ? ::boost::detail::aligned_storage::alignment_of_max_align
-            : alignment_
-            )
-        );
-
-#if defined(__GNUC__) &&\
-    (__GNUC__ >  3) ||\
-    (__GNUC__ == 3 && (__GNUC_MINOR__ >  2 ||\
-                      (__GNUC_MINOR__ == 2 && __GNUC_PATCHLEVEL__ >=3)))
-
-private: // noncopyable
-
-    aligned_storage(const aligned_storage&);
-    aligned_storage& operator=(const aligned_storage&);
-
-#else // gcc less than 3.2.3
-
-public: // _should_ be noncopyable, but GCC compiler emits error
-
-    aligned_storage(const aligned_storage&);
-    aligned_storage& operator=(const aligned_storage&);
-
-#endif // gcc < 3.2.3 workaround
-
-public: // structors
-
-    aligned_storage()
-    {
-    }
-
-    ~aligned_storage()
-    {
-    }
-
-public: // accessors
-
-    void* address()
-    {
-        return static_cast<type*>(this)->address();
-    }
-
-#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
-
-    const void* address() const
-    {
-        return static_cast<const type*>(this)->address();
-    }
-
-#else // MSVC6
-
-    const void* address() const;
-
-#endif // MSVC6 workaround
-
-};
-
-#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
-
-// MSVC6 seems not to like inline functions with const void* returns, so we
-// declare the following here:
-
-template <std::size_t S, std::size_t A>
-const void* aligned_storage<S,A>::address() const
-{
-    return const_cast< aligned_storage<S,A>* >(this)->address();
-}
-
-#endif // MSVC6 workaround
-
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-//
-// Make sure that is_pod recognises aligned_storage<>::type
-// as a POD (Note that aligned_storage<> itself is not a POD):
-//
-template <std::size_t size_, std::size_t alignment_>
-struct is_pod<boost::detail::aligned_storage::aligned_storage_imp<size_,alignment_> >
-   BOOST_TT_AUX_BOOL_C_BASE(true)
-{ 
-    BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(true)
-}; 
-#endif
-
-
-} // namespace boost
-
-#include "boost/type_traits/detail/bool_trait_undef.hpp"
-
-#endif // BOOST_ALIGNED_STORAGE_HPP

+ 0 - 237
feng-authnotify/ext/boost/any.hpp

@@ -1,237 +0,0 @@
-// See http://www.boost.org/libs/any for Documentation.
-
-#ifndef BOOST_ANY_INCLUDED
-#define BOOST_ANY_INCLUDED
-
-// what:  variant type boost::any
-// who:   contributed by Kevlin Henney,
-//        with features contributed and bugs found by
-//        Ed Brey, Mark Rodgers, Peter Dimov, and James Curran
-// when:  July 2001
-// where: tested with BCC 5.5, MSVC 6.0, and g++ 2.95
-
-#include <algorithm>
-#include <typeinfo>
-
-#include "boost/config.hpp"
-#include <boost/type_traits/remove_reference.hpp>
-#include <boost/type_traits/is_reference.hpp>
-#include <boost/throw_exception.hpp>
-#include <boost/static_assert.hpp>
-
-namespace boost
-{
-    class any
-    {
-    public: // structors
-
-        any()
-          : content(0)
-        {
-        }
-
-        template<typename ValueType>
-        any(const ValueType & value)
-          : content(new holder<ValueType>(value))
-        {
-        }
-
-        any(const any & other)
-          : content(other.content ? other.content->clone() : 0)
-        {
-        }
-
-        ~any()
-        {
-            delete content;
-        }
-
-    public: // modifiers
-
-        any & swap(any & rhs)
-        {
-            std::swap(content, rhs.content);
-            return *this;
-        }
-
-        template<typename ValueType>
-        any & operator=(const ValueType & rhs)
-        {
-            any(rhs).swap(*this);
-            return *this;
-        }
-
-        any & operator=(any rhs)
-        {
-            rhs.swap(*this);
-            return *this;
-        }
-
-    public: // queries
-
-        bool empty() const
-        {
-            return !content;
-        }
-
-        const std::type_info & type() const
-        {
-            return content ? content->type() : typeid(void);
-        }
-
-#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
-    private: // types
-#else
-    public: // types (public so any_cast can be non-friend)
-#endif
-
-        class placeholder
-        {
-        public: // structors
-
-            virtual ~placeholder()
-            {
-            }
-
-        public: // queries
-
-            virtual const std::type_info & type() const = 0;
-
-            virtual placeholder * clone() const = 0;
-
-        };
-
-        template<typename ValueType>
-        class holder : public placeholder
-        {
-        public: // structors
-
-            holder(const ValueType & value)
-              : held(value)
-            {
-            }
-
-        public: // queries
-
-            virtual const std::type_info & type() const
-            {
-                return typeid(ValueType);
-            }
-
-            virtual placeholder * clone() const
-            {
-                return new holder(held);
-            }
-
-        public: // representation
-
-            ValueType held;
-
-        private: // intentionally left unimplemented
-            holder & operator=(const holder &);
-        };
-
-#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
-
-    private: // representation
-
-        template<typename ValueType>
-        friend ValueType * any_cast(any *);
-
-        template<typename ValueType>
-        friend ValueType * unsafe_any_cast(any *);
-
-#else
-
-    public: // representation (public so any_cast can be non-friend)
-
-#endif
-
-        placeholder * content;
-
-    };
-
-    class bad_any_cast : public std::bad_cast
-    {
-    public:
-        virtual const char * what() const throw()
-        {
-            return "boost::bad_any_cast: "
-                   "failed conversion using boost::any_cast";
-        }
-    };
-
-    template<typename ValueType>
-    ValueType * any_cast(any * operand)
-    {
-        return operand && operand->type() == typeid(ValueType)
-                    ? &static_cast<any::holder<ValueType> *>(operand->content)->held
-                    : 0;
-    }
-
-    template<typename ValueType>
-    inline const ValueType * any_cast(const any * operand)
-    {
-        return any_cast<ValueType>(const_cast<any *>(operand));
-    }
-
-    template<typename ValueType>
-    ValueType any_cast(any & operand)
-    {
-        typedef BOOST_DEDUCED_TYPENAME remove_reference<ValueType>::type nonref;
-
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-        // If 'nonref' is still reference type, it means the user has not
-        // specialized 'remove_reference'.
-
-        // Please use BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION macro
-        // to generate specialization of remove_reference for your class
-        // See type traits library documentation for details
-        BOOST_STATIC_ASSERT(!is_reference<nonref>::value);
-#endif
-
-        nonref * result = any_cast<nonref>(&operand);
-        if(!result)
-            boost::throw_exception(bad_any_cast());
-        return *result;
-    }
-
-    template<typename ValueType>
-    inline ValueType any_cast(const any & operand)
-    {
-        typedef BOOST_DEDUCED_TYPENAME remove_reference<ValueType>::type nonref;
-
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-        // The comment in the above version of 'any_cast' explains when this
-        // assert is fired and what to do.
-        BOOST_STATIC_ASSERT(!is_reference<nonref>::value);
-#endif
-
-        return any_cast<const nonref &>(const_cast<any &>(operand));
-    }
-
-    // Note: The "unsafe" versions of any_cast are not part of the
-    // public interface and may be removed at any time. They are
-    // required where we know what type is stored in the any and can't
-    // use typeid() comparison, e.g., when our types may travel across
-    // different shared libraries.
-    template<typename ValueType>
-    inline ValueType * unsafe_any_cast(any * operand)
-    {
-        return &static_cast<any::holder<ValueType> *>(operand->content)->held;
-    }
-
-    template<typename ValueType>
-    inline const ValueType * unsafe_any_cast(const any * operand)
-    {
-        return unsafe_any_cast<ValueType>(const_cast<any *>(operand));
-    }
-}
-
-// Copyright Kevlin Henney, 2000, 2001, 2002. All rights reserved.
-//
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#endif

+ 0 - 68
feng-authnotify/ext/boost/archive/iterators/base64_exception.hpp

@@ -1,68 +0,0 @@
-#ifndef BOOST_ARCHIVE_ITERATORS_BASE64_EXCEPTION_HPP
-#define BOOST_ARCHIVE_ITERATORS_BASE64_EXCEPTION_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// base64_exception.hpp:
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . 
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org for updates, documentation, and revision history.
-
-#include <boost/config.hpp>
-#ifndef BOOST_NO_EXCEPTIONS
-#include <exception>
-
-#include <cassert>
-
-namespace boost {
-namespace archive {
-namespace iterators {
-
-//////////////////////////////////////////////////////////////////////
-// exceptions thrown by base64s
-//
-class base64_exception : public std::exception
-{
-public:
-    typedef enum {
-        invalid_code,       // attempt to encode a value > 6 bits
-        invalid_character,  // decode a value not in base64 char set
-        other_exception
-    } exception_code;
-    exception_code code;
-
-    base64_exception(exception_code c = other_exception) : code(c)
-    {}
-
-    virtual const char *what( ) const throw( )
-    {
-        const char *msg = "unknown exception code";
-        switch(code){
-        case invalid_code:
-            msg = "attempt to encode a value > 6 bits";
-            break;
-        case invalid_character:
-            msg = "attempt to decode a value not in base64 char set";
-            break;
-        default:
-            assert(false);
-            break;
-        }
-        return msg;
-    }
-};
-
-} // namespace iterators
-} // namespace archive
-} // namespace boost
-
-#endif //BOOST_NO_EXCEPTIONS
-#endif //BOOST_ARCHIVE_ITERATORS_ARCHIVE_EXCEPTION_HPP

+ 0 - 112
feng-authnotify/ext/boost/archive/iterators/base64_from_binary.hpp

@@ -1,112 +0,0 @@
-#ifndef BOOST_ARCHIVE_ITERATORS_BASE64_FROM_BINARY_HPP
-#define BOOST_ARCHIVE_ITERATORS_BASE64_FROM_BINARY_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// base64_from_binary.hpp
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . 
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org for updates, documentation, and revision history.
-
-#include <cassert>
-
-#include <cstddef> // size_t
-#include <boost/config.hpp> // for BOOST_DEDUCED_TYPENAME
-#if defined(BOOST_NO_STDC_NAMESPACE)
-namespace std{ 
-    using ::size_t; 
-} // namespace std
-#endif
-
-#include <boost/serialization/pfto.hpp>
-
-#include <boost/iterator/transform_iterator.hpp>
-#include <boost/archive/iterators/dataflow_exception.hpp>
-
-namespace boost { 
-namespace archive {
-namespace iterators {
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// convert binary integers to base64 characters
-
-namespace detail {
-
-template<class CharType>
-struct from_6_bit {
-    typedef CharType result_type;
-    CharType operator()(CharType t) const{
-        const char * lookup_table = 
-            "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-            "abcdefghijklmnopqrstuvwxyz"
-            "0123456789"
-            "+/";
-        assert(t < 64);
-        return lookup_table[static_cast<size_t>(t)];
-    }
-};
-
-} // namespace detail
-
-// note: what we would like to do is
-// template<class Base, class CharType = BOOST_DEDUCED_TYPENAME Base::value_type>
-//  typedef transform_iterator<
-//      from_6_bit<CharType>,
-//      transform_width<Base, 6, sizeof(Base::value_type) * 8, CharType>
-//  > base64_from_binary;
-// but C++ won't accept this.  Rather than using a "type generator" and
-// using a different syntax, make a derivation which should be equivalent.
-//
-// Another issue addressed here is that the transform_iterator doesn't have
-// a templated constructor.  This makes it incompatible with the dataflow
-// ideal.  This is also addressed here.
-
-//template<class Base, class CharType = BOOST_DEDUCED_TYPENAME Base::value_type>
-template<
-    class Base, 
-    class CharType = BOOST_DEDUCED_TYPENAME boost::iterator_value<Base>::type
->
-class base64_from_binary : 
-    public transform_iterator<
-        detail::from_6_bit<CharType>,
-        Base
-    >
-{
-    friend class boost::iterator_core_access;
-    typedef transform_iterator<
-        BOOST_DEDUCED_TYPENAME detail::from_6_bit<CharType>,
-        Base
-    > super_t;
-
-public:
-    // make composible buy using templated constructor
-    template<class T>
-    base64_from_binary(BOOST_PFTO_WRAPPER(T) start) :
-        super_t(
-            Base(BOOST_MAKE_PFTO_WRAPPER(static_cast<T>(start))),
-            detail::from_6_bit<CharType>()
-        )
-    {}
-    // intel 7.1 doesn't like default copy constructor
-    base64_from_binary(const base64_from_binary & rhs) : 
-        super_t(
-            Base(rhs.base_reference()),
-            detail::from_6_bit<CharType>()
-        )
-    {}
-//    base64_from_binary(){};
-};
-
-} // namespace iterators
-} // namespace archive
-} // namespace boost
-
-#endif // BOOST_ARCHIVE_ITERATORS_BASE64_FROM_BINARY_HPP

+ 0 - 120
feng-authnotify/ext/boost/archive/iterators/binary_from_base64.hpp

@@ -1,120 +0,0 @@
-#ifndef BOOST_ARCHIVE_ITERATORS_BINARY_FROM_BASE64_HPP
-#define BOOST_ARCHIVE_ITERATORS_BINARY_FROM_BASE64_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// binary_from_base64.hpp
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . 
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org for updates, documentation, and revision history.
-
-#include <cassert>
-
-#include <boost/config.hpp> // for BOOST_DEDUCED_TYPENAME
-#include <boost/serialization/throw_exception.hpp>
-#include <boost/serialization/pfto.hpp>
-#include <boost/static_assert.hpp>
-
-#include <boost/iterator/transform_iterator.hpp>
-#include <boost/archive/iterators/dataflow_exception.hpp>
-
-namespace boost { 
-namespace archive {
-namespace iterators {
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// convert base64 characters to binary data
-
-namespace detail {
-
-template<class CharType>
-struct to_6_bit {
-    typedef CharType result_type;
-    CharType operator()(CharType t) const{
-        const char lookup_table[] = {
-            -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-            -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-            -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,
-            52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1,
-            -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,
-            15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,
-            -1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,
-            41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1
-        };
-        // metrowerks trips this assertion - how come?
-        #if ! defined(__MWERKS__)
-        BOOST_STATIC_ASSERT(128 == sizeof(lookup_table));
-        #endif
-        signed char value = -1;
-        if((unsigned)t <= 127)
-            value = lookup_table[(unsigned)t];
-        if(-1 == value)
-            boost::serialization::throw_exception(
-                dataflow_exception(dataflow_exception::invalid_base64_character)
-            );
-        return value;
-    }
-};
-
-} // namespace detail
-
-// note: what we would like to do is
-// template<class Base, class CharType = BOOST_DEDUCED_TYPENAME Base::value_type>
-//  typedef transform_iterator<
-//      from_6_bit<CharType>,
-//      transform_width<Base, 6, sizeof(Base::value_type) * 8, CharType>
-//  > base64_from_binary;
-// but C++ won't accept this.  Rather than using a "type generator" and
-// using a different syntax, make a derivation which should be equivalent.
-//
-// Another issue addressed here is that the transform_iterator doesn't have
-// a templated constructor.  This makes it incompatible with the dataflow
-// ideal.  This is also addressed here.
-
-template<
-    class Base, 
-    class CharType = BOOST_DEDUCED_TYPENAME boost::iterator_value<Base>::type
->
-class binary_from_base64 : public
-    transform_iterator<
-        detail::to_6_bit<CharType>,
-        Base
-    >
-{
-    friend class boost::iterator_core_access;
-    typedef transform_iterator<
-        detail::to_6_bit<CharType>,
-        Base
-    > super_t;
-public:
-    // make composible buy using templated constructor
-    template<class T>
-    binary_from_base64(BOOST_PFTO_WRAPPER(T)  start) :
-        super_t(
-            Base(BOOST_MAKE_PFTO_WRAPPER(static_cast<T>(start))), 
-            detail::to_6_bit<CharType>()
-        )
-    {}
-    // intel 7.1 doesn't like default copy constructor
-    binary_from_base64(const binary_from_base64 & rhs) : 
-        super_t(
-            Base(rhs.base_reference()),
-            detail::to_6_bit<CharType>()
-        )
-    {}
-//    binary_from_base64(){};
-};
-
-} // namespace iterators
-} // namespace archive
-} // namespace boost
-
-#endif // BOOST_ARCHIVE_ITERATORS_BINARY_FROM_BASE64_HPP

+ 0 - 105
feng-authnotify/ext/boost/archive/iterators/dataflow.hpp

@@ -1,105 +0,0 @@
-#ifndef BOOST_ARCHIVE_ITERATORS_DATAFLOW_HPP
-#define BOOST_ARCHIVE_ITERATORS_DATAFLOW_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// dataflow.hpp
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . 
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org for updates, documentation, and revision history.
-
-#include <cassert>
-
-#include <boost/config.hpp> // for BOOST_DEDUCED_TYPENAME
-
-#include <boost/mpl/eval_if.hpp>
-#include <boost/mpl/if.hpp>
-#include <boost/mpl/bool.hpp>
-#include <boost/mpl/apply.hpp>
-#include <boost/mpl/plus.hpp>
-#include <boost/mpl/int.hpp>
-
-#include <boost/type_traits/is_convertible.hpp>
-#include <boost/type_traits/is_base_and_derived.hpp>
-#include <boost/type_traits/is_pointer.hpp>
-#include <boost/iterator/iterator_adaptor.hpp>
-#include <boost/iterator/iterator_traits.hpp>
-#include <boost/static_assert.hpp>
-
-namespace boost { 
-namespace archive {
-namespace iterators {
-
-// poor man's tri-state
-struct tri_state {
-    enum state_enum {
-        is_false = false,
-        is_true = true,
-        is_indeterminant
-    } m_state;
-    // convert to bool
-    operator bool (){
-        assert(is_indeterminant != m_state);
-        return is_true == m_state ? true : false;
-    }
-    // assign from bool
-    tri_state & operator=(bool rhs) {
-        m_state = rhs ? is_true : is_false;
-        return *this;
-    }
-    tri_state(bool rhs) :
-        m_state(rhs ? is_true : is_false)
-    {}
-    tri_state(state_enum state) :
-        m_state(state)
-    {}
-    bool operator==(const tri_state & rhs) const {
-        return m_state == rhs.m_state;
-    }
-    bool operator!=(const tri_state & rhs) const {
-        return m_state != rhs.m_state;
-    }
-};
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// implement functions common to dataflow iterators
-template<class Derived>
-class dataflow {
-    bool m_eoi;
-protected:
-    // test for iterator equality
-    tri_state equal(const Derived & rhs) const {
-        if(m_eoi && rhs.m_eoi)
-            return true;
-        if(m_eoi || rhs.m_eoi)
-            return false;
-        return tri_state(tri_state::is_indeterminant);
-    }
-    void eoi(bool tf){
-        m_eoi = tf;
-    }
-    bool eoi() const {
-        return m_eoi;
-    }
-public:
-    dataflow(bool tf) :
-        m_eoi(tf)
-    {}
-    dataflow() : // used for iterator end
-        m_eoi(true)
-    {}
-};
-
-} // namespace iterators
-} // namespace archive
-} // namespace boost
-
-#endif // BOOST_ARCHIVE_ITERATORS_DATAFLOW_HPP

+ 0 - 80
feng-authnotify/ext/boost/archive/iterators/dataflow_exception.hpp

@@ -1,80 +0,0 @@
-#ifndef BOOST_ARCHIVE_ITERATORS_DATAFLOW_EXCEPTION_HPP
-#define BOOST_ARCHIVE_ITERATORS_DATAFLOW_EXCEPTION_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// dataflow_exception.hpp:
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . 
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org for updates, documentation, and revision history.
-
-#include <boost/config.hpp>
-#ifndef BOOST_NO_EXCEPTIONS
-#include <exception>
-#endif //BOOST_NO_EXCEPTIONS
-
-#include <cassert>
-
-namespace boost {
-namespace archive {
-namespace iterators {
-
-//////////////////////////////////////////////////////////////////////
-// exceptions thrown by dataflows
-//
-class dataflow_exception : public std::exception
-{
-public:
-    typedef enum {
-        invalid_6_bitcode,
-        invalid_base64_character,
-        invalid_xml_escape_sequence,
-        comparison_not_permitted,
-        invalid_conversion,
-        other_exception
-    } exception_code;
-    exception_code code;
-
-    dataflow_exception(exception_code c = other_exception) : code(c)
-    {}
-
-    virtual const char *what( ) const throw( )
-    {
-        const char *msg = "unknown exception code";
-        switch(code){
-        case invalid_6_bitcode:
-            msg = "attempt to encode a value > 6 bits";
-            break;
-        case invalid_base64_character:
-            msg = "attempt to decode a value not in base64 char set";
-            break;
-        case invalid_xml_escape_sequence:
-            msg = "invalid xml escape_sequence";
-            break;
-        case comparison_not_permitted:
-            msg = "cannot invoke iterator comparison now";
-            break;
-        case invalid_conversion:
-            msg = "invalid multbyte/wide char conversion";
-            break;
-        default:
-            assert(false);
-            break;
-        }
-        return msg;
-    }
-};
-
-} // namespace iterators
-} // namespace archive
-} // namespace boost
-
-#endif //BOOST_ARCHIVE_ITERATORS_DATAFLOW_EXCEPTION_HPP

+ 0 - 115
feng-authnotify/ext/boost/archive/iterators/escape.hpp

@@ -1,115 +0,0 @@
-#ifndef BOOST_ARCHIVE_ITERATORS_ESCAPE_HPP
-#define BOOST_ARCHIVE_ITERATORS_ESCAPE_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// escape.hpp
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . 
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org for updates, documentation, and revision history.
-
-#include <cassert>
-#include <cstddef> // NULL
-
-#include <boost/config.hpp> // for BOOST_DEDUCED_TYPENAME
-#include <boost/iterator/iterator_adaptor.hpp>
-#include <boost/iterator/iterator_traits.hpp>
-
-namespace boost { 
-namespace archive {
-namespace iterators {
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// insert escapes into text
-
-template<class Derived, class Base>
-class escape : 
-    public boost::iterator_adaptor<
-        Derived, 
-        Base, 
-        BOOST_DEDUCED_TYPENAME boost::iterator_value<Base>::type,
-        single_pass_traversal_tag,
-        BOOST_DEDUCED_TYPENAME boost::iterator_value<Base>::type
-    >
-{
-    typedef BOOST_DEDUCED_TYPENAME boost::iterator_value<Base>::type base_value_type;
-    typedef BOOST_DEDUCED_TYPENAME boost::iterator_reference<Base>::type reference_type;
-    friend class boost::iterator_core_access;
-
-    typedef BOOST_DEDUCED_TYPENAME boost::iterator_adaptor<
-        Derived, 
-        Base, 
-        base_value_type,
-        single_pass_traversal_tag,
-        base_value_type
-    > super_t;
-
-    typedef escape<Derived, Base> this_t;
-
-    void dereference_impl() {
-        m_current_value = static_cast<Derived *>(this)->fill(m_bnext, m_bend);
-        m_full = true;
-    }
-
-    //Access the value referred to 
-    reference_type dereference() const {
-        if(!m_full)
-            const_cast<this_t *>(this)->dereference_impl();
-        return m_current_value;
-    }
-
-    bool equal(const this_t & rhs) const {
-        if(m_full){
-            if(! rhs.m_full)
-                const_cast<this_t *>(& rhs)->dereference_impl();
-        }
-        else{
-            if(rhs.m_full)
-                const_cast<this_t *>(this)->dereference_impl();
-        }
-        if(m_bnext != rhs.m_bnext)
-            return false;
-        if(this->base_reference() != rhs.base_reference())
-            return false;
-        return true;
-    }
-
-   void increment(){
-        if(++m_bnext < m_bend){
-            m_current_value = *m_bnext;
-            return;
-        }
-        ++(this->base_reference());
-        m_bnext = NULL;
-        m_bend = NULL;
-        m_full = false;
-    }
-
-    // buffer to handle pending characters
-    const base_value_type *m_bnext;
-    const base_value_type *m_bend;
-    bool m_full;
-    BOOST_DEDUCED_TYPENAME boost::iterator_value<Base>::type m_current_value;
-public:
-    escape(Base base) : 
-        super_t(base),
-        m_bnext(NULL),
-        m_bend(NULL),
-        m_full(false)
-    {
-    }
-};
-
-} // namespace iterators
-} // namespace archive
-} // namespace boost
-
-#endif // BOOST_ARCHIVE_ITERATORS_ESCAPE_HPP

+ 0 - 81
feng-authnotify/ext/boost/archive/iterators/head_iterator.hpp

@@ -1,81 +0,0 @@
-#ifndef BOOST_ARCHIVE_ITERATORS_HEAD_ITERATOR_HPP
-#define BOOST_ARCHIVE_ITERATORS_HEAD_ITERATOR_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// head_iterator.hpp
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . 
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org for updates, documentation, and revision history.
-
-#include <boost/type_traits/is_same.hpp>
-#include <boost/iterator/iterator_adaptor.hpp>
-#include <boost/iterator/iterator_traits.hpp>
-
-namespace boost {
-namespace archive {
-namespace iterators {
-
-template<class Predicate, class Base>
-class head_iterator
-    : public boost::iterator_adaptor<
-        head_iterator<Predicate, Base>,
-        Base,
-        use_default,
-        single_pass_traversal_tag
-    >
-{
-private:
-    friend class iterator_core_access;
-    typedef boost::iterator_adaptor<
-        head_iterator<Predicate, Base>,
-        Base,
-        use_default,
-        single_pass_traversal_tag
-    > super_t;
-
-    typedef head_iterator<Predicate, Base> this_t;
-    typedef BOOST_DEDUCED_TYPENAME super_t::value_type value_type;
-    typedef BOOST_DEDUCED_TYPENAME super_t::reference reference_type;
-
-    reference_type dereference_impl(){
-        if(! m_end){
-            while(! m_predicate(* this->base_reference()))
-                ++ this->base_reference();
-            m_end = true;
-        }
-        return * this->base_reference();
-    }
-
-    reference_type dereference() const {
-        return const_cast<this_t *>(this)->dereference_impl();
-    }
-
-    void increment(){
-        ++base_reference();
-    }
-    Predicate m_predicate;
-    bool m_end;
-public:
-    template<class T>
-    head_iterator(Predicate f, T start) : 
-        super_t(Base(start)), 
-        m_predicate(f),
-        m_end(false)
-    {}
-
-};
-
-} // namespace iterators
-} // namespace archive
-} // namespace boost
-
-#endif // BOOST_ARCHIVE_ITERATORS_HEAD_ITERATOR_HPP

+ 0 - 101
feng-authnotify/ext/boost/archive/iterators/insert_linebreaks.hpp

@@ -1,101 +0,0 @@
-#ifndef BOOST_ARCHIVE_ITERATORS_INSERT_LINEBREAKS_HPP
-#define BOOST_ARCHIVE_ITERATORS_INSERT_LINEBREAKS_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// insert_linebreaks.hpp
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . 
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org for updates, documentation, and revision history.
-
-#include <cassert>
-
-#include <boost/config.hpp> // for BOOST_DEDUCED_TYPENAME
-#if defined(BOOST_NO_STDC_NAMESPACE)
-namespace std{ using ::memcpy; }
-#endif
-
-#include <boost/serialization/pfto.hpp>
-
-#include <boost/iterator/iterator_adaptor.hpp>
-#include <boost/iterator/iterator_traits.hpp>
-
-namespace boost { 
-namespace archive {
-namespace iterators {
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// insert line break every N characters
-template<
-    class Base, 
-    int N, 
-    class CharType = BOOST_DEDUCED_TYPENAME boost::iterator_value<Base>::type
->
-class insert_linebreaks : 
-    public iterator_adaptor<
-        insert_linebreaks<Base, N, CharType>,
-        Base,
-        CharType,
-        single_pass_traversal_tag,
-        CharType
-    >
-{
-private:
-    friend class boost::iterator_core_access;
-    typedef iterator_adaptor<
-        insert_linebreaks<Base, N, CharType>,
-        Base,
-        CharType,
-        single_pass_traversal_tag,
-        CharType
-    > super_t;
-
-    bool equal(const insert_linebreaks<Base, N, CharType> & rhs) const {
-        return
-//            m_count == rhs.m_count
-//            && base_reference() == rhs.base_reference()
-            this->base_reference() == rhs.base_reference()
-        ;
-    }
-
-    void increment() {
-        if(m_count == N){
-            m_count = 0;
-            return;
-        }
-        ++m_count;
-        ++(this->base_reference());
-    }
-    CharType dereference() const {
-        if(m_count == N)
-            return '\n';
-        return * (this->base_reference());
-    }
-    unsigned int m_count;
-public:
-    // make composible buy using templated constructor
-    template<class T>
-    insert_linebreaks(BOOST_PFTO_WRAPPER(T)  start) :
-        super_t(Base(BOOST_MAKE_PFTO_WRAPPER(static_cast<T>(start)))),
-        m_count(0)
-    {}
-    // intel 7.1 doesn't like default copy constructor
-    insert_linebreaks(const insert_linebreaks & rhs) : 
-        super_t(rhs.base_reference()),
-        m_count(rhs.m_count)
-    {}
-};
-
-} // namespace iterators
-} // namespace archive
-} // namespace boost
-
-#endif // BOOST_ARCHIVE_ITERATORS_INSERT_LINEBREAKS_HPP

+ 0 - 95
feng-authnotify/ext/boost/archive/iterators/istream_iterator.hpp

@@ -1,95 +0,0 @@
-#ifndef BOOST_ARCHIVE_ITERATORS_ISTREAM_ITERATOR_HPP
-#define BOOST_ARCHIVE_ITERATORS_ISTREAM_ITERATOR_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// istream_iterator.hpp
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . 
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org for updates, documentation, and revision history.
-
-// note: this is a custom version of the standard istream_iterator.
-// This is necessary as the standard version doesn't work as expected
-// for wchar_t based streams on systems for which wchar_t not a true
-// type but rather a synonym for some integer type.
-
-#include <cstddef> // NULL
-#include <istream>
-#include <boost/iterator/iterator_facade.hpp>
-
-namespace boost { 
-namespace archive {
-namespace iterators {
-
-// given a type, make an input iterator based on a pointer to that type
-template<class Elem = char>
-class istream_iterator :  
-    public boost::iterator_facade<
-        istream_iterator<Elem>,
-        Elem,
-        std::input_iterator_tag,
-        Elem
-    >
-{
-    friend class boost::iterator_core_access;
-    typedef istream_iterator this_t ;
-    typedef BOOST_DEDUCED_TYPENAME boost::iterator_facade<
-        istream_iterator<Elem>,
-        Elem,
-        std::input_iterator_tag,
-        Elem
-    > super_t;
-    typedef BOOST_DEDUCED_TYPENAME std::basic_istream<Elem> istream_type;
- 
-    //Access the value referred to 
-    Elem dereference() const {
-        return m_current_value;
-    }
-
-    bool equal(const this_t & rhs) const {
-        // note: only  works for comparison against end of stream
-        return m_istream == rhs.m_istream;
-    }
-
-    void increment(){
-        if(NULL != m_istream){
-            m_current_value = m_istream->get();
-            if(! m_istream->good()){
-                const_cast<this_t *>(this)->m_istream = NULL;
-            }
-        }
-    }
-
-    istream_type *m_istream;
-    Elem m_current_value;
-public:
-    istream_iterator(istream_type & is) :
-        m_istream(& is)
-    {
-        increment();
-    }
-
-    istream_iterator() :
-        m_istream(NULL)
-    {}
-
-    istream_iterator(const istream_iterator<Elem> & rhs) :
-        m_istream(rhs.m_istream),
-        m_current_value(rhs.m_current_value)
-    {}
-
-};
-
-} // namespace iterators
-} // namespace archive
-} // namespace boost
-
-#endif // BOOST_ARCHIVE_ITERATORS_ISTREAM_ITERATOR_HPP

+ 0 - 136
feng-authnotify/ext/boost/archive/iterators/mb_from_wchar.hpp

@@ -1,136 +0,0 @@
-#ifndef BOOST_ARCHIVE_ITERATORS_MB_FROM_WCHAR_HPP
-#define BOOST_ARCHIVE_ITERATORS_MB_FROM_WCHAR_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// mb_from_wchar.hpp
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . 
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org for updates, documentation, and revision history.
-
-#include <cassert>
-#include <cstddef> // size_t
-#include <cstdlib> // for wctomb()
-
-#include <boost/config.hpp> // for BOOST_DEDUCED_TYPENAME
-#if defined(BOOST_NO_STDC_NAMESPACE)
-namespace std{ 
-    using ::size_t; 
-    using ::wctomb;
-} // namespace std
-#endif
-
-#include <boost/serialization/pfto.hpp>
-#include <boost/iterator/iterator_adaptor.hpp>
-
-namespace boost { 
-namespace archive {
-namespace iterators {
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// class used by text archives to translate wide strings and to char
-// strings of the currently selected locale
-template<class Base>    // the input iterator
-class mb_from_wchar
-    : public boost::iterator_adaptor<
-        mb_from_wchar<Base>, 
-        Base, 
-        wchar_t,
-        single_pass_traversal_tag,
-        char
-    >
-{
-    friend class boost::iterator_core_access;
-
-    typedef BOOST_DEDUCED_TYPENAME boost::iterator_adaptor<
-        mb_from_wchar<Base>, 
-        Base, 
-        wchar_t,
-        single_pass_traversal_tag,
-        char
-    > super_t;
-
-    typedef mb_from_wchar<Base> this_t;
-
-    char dereference_impl() {
-        if(! m_full){
-            fill();
-            m_full = true;
-        }
-        return m_buffer[m_bnext];
-    }
-    char dereference() const {
-        return (const_cast<this_t *>(this))->dereference_impl();
-    }
-
-    // test for iterator equality
-    bool equal(const mb_from_wchar<Base> & rhs) const {
-        // once the value is filled, the base_reference has been incremented
-        // so don't permit comparison anymore.
-        return 
-            0 == m_bend
-            && 0 == m_bnext
-            && this->base_reference() == rhs.base_reference()
-        ;
-    }
-
-    void fill(){
-        wchar_t value = * this->base_reference();
-        #if (defined(__MINGW32__) && ((__MINGW32_MAJOR_VERSION > 3) \
-        || ((__MINGW32_MAJOR_VERSION == 3) && (__MINGW32_MINOR_VERSION >= 8))))
-        m_bend = std::wcrtomb(m_buffer, value, 0);
-        #else
-        m_bend = std::wctomb(m_buffer, value);
-        #endif
-        assert(-1 != m_bend);
-        assert((std::size_t)m_bend <= sizeof(m_buffer));
-        assert(m_bend > 0);
-        m_bnext = 0;
-    }
-
-    void increment(){
-        if(++m_bnext < m_bend)
-            return;
-        m_bend = 
-        m_bnext = 0;
-        ++(this->base_reference());
-        m_full = false;
-    }
-
-    // buffer to handle pending characters
-    int m_bend;
-    int m_bnext;
-    char m_buffer[9];
-    bool m_full;
-
-public:
-    // make composible buy using templated constructor
-    template<class T>
-    mb_from_wchar(BOOST_PFTO_WRAPPER(T) start) :
-        super_t(Base(BOOST_MAKE_PFTO_WRAPPER(static_cast<T>(start)))),
-        m_bend(0),
-        m_bnext(0),
-        m_full(false)
-    {}
-    // intel 7.1 doesn't like default copy constructor
-    mb_from_wchar(const mb_from_wchar & rhs) : 
-        super_t(rhs.base_reference()),
-        m_bend(rhs.m_bend),
-        m_bnext(rhs.m_bnext),
-        m_full(rhs.m_full)
-    {}
-};
-
-} // namespace iterators
-} // namespace archive
-} // namespace boost
-
-#endif // BOOST_ARCHIVE_ITERATORS_MB_FROM_WCHAR_HPP

+ 0 - 83
feng-authnotify/ext/boost/archive/iterators/ostream_iterator.hpp

@@ -1,83 +0,0 @@
-#ifndef BOOST_ARCHIVE_ITERATORS_OSTREAM_ITERATOR_HPP
-#define BOOST_ARCHIVE_ITERATORS_OSTREAM_ITERATOR_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// ostream_iterator.hpp
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . 
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org for updates, documentation, and revision history.
-
-// note: this is a custom version of the standard ostream_iterator.
-// This is necessary as the standard version doesn't work as expected
-// for wchar_t based streams on systems for which wchar_t not a true
-// type but rather a synonym for some integer type.
-
-#include <ostream>
-#include <boost/iterator/iterator_facade.hpp>
-
-namespace boost { 
-namespace archive {
-namespace iterators {
-
-// given a type, make an input iterator based on a pointer to that type
-template<class Elem>
-class ostream_iterator :  
-    public boost::iterator_facade<
-        ostream_iterator<Elem>,
-        Elem,
-        std::output_iterator_tag,
-        ostream_iterator<Elem> &
-    >
-{
-    friend class boost::iterator_core_access;
-    typedef ostream_iterator this_t ;
-    typedef Elem char_type;
-    typedef std::basic_ostream<char_type> ostream_type;
-
-    //emulate the behavior of std::ostream 
-    ostream_iterator & dereference() const {
-        return const_cast<ostream_iterator &>(*this);
-    }
-    bool equal(const this_t & rhs) const {
-        return m_ostream == rhs.m_ostream;
-    }
-    void increment(){}
-protected:
-    ostream_type *m_ostream;
-    void put_val(char_type e){
-        if(NULL != m_ostream){
-            m_ostream->put(e);
-            if(! m_ostream->good())
-                m_ostream = NULL;
-        }
-    }
-public:
-    this_t & operator=(char_type c){
-        put_val(c);
-        return *this;
-    }
-    ostream_iterator(ostream_type & os) :
-        m_ostream (& os)
-    {}
-    ostream_iterator() :
-        m_ostream (NULL)
-    {}
-    ostream_iterator(const ostream_iterator & rhs) :
-        m_ostream (rhs.m_ostream)
-    {}
-};
-
-} // namespace iterators
-} // namespace archive
-} // namespace boost
-
-#endif // BOOST_ARCHIVE_ITERATORS_OSTREAM_ITERATOR_HPP

+ 0 - 169
feng-authnotify/ext/boost/archive/iterators/remove_whitespace.hpp

@@ -1,169 +0,0 @@
-#ifndef BOOST_ARCHIVE_ITERATORS_REMOVE_WHITESPACE_HPP
-#define BOOST_ARCHIVE_ITERATORS_REMOVE_WHITESPACE_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// remove_whitespace.hpp
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . 
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org for updates, documentation, and revision history.
-
-#include <cassert>
-
-#include <boost/config.hpp> // for BOOST_DEDUCED_TYPENAME
-
-#include <boost/serialization/pfto.hpp>
-
-#include <boost/iterator/iterator_adaptor.hpp>
-#include <boost/iterator/filter_iterator.hpp>
-
-//#include <boost/detail/workaround.hpp>
-//#if ! BOOST_WORKAROUND(BOOST_MSVC, <=1300)
-
-// here is the default standard implementation of the functor used
-// by the filter iterator to remove spaces.  Unfortunately usage
-// of this implementation in combination with spirit trips a bug
-// VC 6.5.  The only way I can find to work around it is to 
-// implement a special non-standard version for this platform
-
-#ifndef BOOST_NO_CWCTYPE
-#include <cwctype> // iswspace
-#if defined(BOOST_NO_STDC_NAMESPACE)
-namespace std{ using ::iswspace; }
-#endif
-#endif
-
-#include <cctype> // isspace
-#if defined(BOOST_NO_STDC_NAMESPACE)
-namespace std{ using ::isspace; }
-#endif
-
-#if defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER)
-// this is required for the RW STL on Linux and Tru64.
-#undef isspace
-#undef iswspace
-#endif
-
-//#endif // BOOST_WORKAROUND
-
-namespace { // anonymous
-
-template<class CharType>
-struct remove_whitespace_predicate;
-
-template<>
-struct remove_whitespace_predicate<char>
-{
-    bool operator()(unsigned char t){
-        return ! std::isspace(t);
-    }
-};
-
-#ifndef BOOST_NO_CWCHAR
-template<>
-struct remove_whitespace_predicate<wchar_t>
-{
-    bool operator()(wchar_t t){
-        return ! std::iswspace(t);
-    }
-};
-#endif
-
-} // namespace anonymous
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// convert base64 file data (including whitespace and padding) to binary
-
-namespace boost { 
-namespace archive {
-namespace iterators {
-
-// custom version of filter iterator which doesn't look ahead further than
-// necessary
-
-template<class Predicate, class Base>
-class filter_iterator
-    : public boost::iterator_adaptor<
-        filter_iterator<Predicate, Base>,
-        Base,
-        use_default,
-        single_pass_traversal_tag
-    >
-{
-    friend class boost::iterator_core_access;
-    typedef BOOST_DEDUCED_TYPENAME boost::iterator_adaptor<
-        filter_iterator<Predicate, Base>,
-        Base,
-        use_default,
-        single_pass_traversal_tag
-    > super_t;
-    typedef filter_iterator<Predicate, Base> this_t;
-    typedef BOOST_DEDUCED_TYPENAME super_t::reference reference_type;
-
-    reference_type dereference_impl(){
-        if(! m_full){
-            while(! m_predicate(* this->base_reference()))
-                ++(this->base_reference());
-            m_full = true;
-        }
-        return * this->base_reference();
-    }
-
-    reference_type dereference() const {
-        return const_cast<this_t *>(this)->dereference_impl();
-    }
-
-    Predicate m_predicate;
-    bool m_full;
-public:
-    // note: this function is public only because comeau compiler complained
-    // I don't know if this is because the compiler is wrong or what
-    void increment(){
-        m_full = false;
-        ++(this->base_reference());
-    }
-    filter_iterator(Base start) : 
-        super_t(start), 
-        m_full(false)
-    {}
-    filter_iterator(){}
-};
-
-template<class Base>
-class remove_whitespace : 
-    public filter_iterator<
-        remove_whitespace_predicate<BOOST_DEDUCED_TYPENAME Base::value_type>,
-        Base
-    >
-{
-    friend class boost::iterator_core_access;
-    typedef filter_iterator<
-        remove_whitespace_predicate<BOOST_DEDUCED_TYPENAME Base::value_type>,
-        Base
-    > super_t;
-public:
-//    remove_whitespace(){} // why is this needed?
-    // make composible buy using templated constructor
-    template<class T>
-    remove_whitespace(BOOST_PFTO_WRAPPER(T) start) :
-        super_t(Base(BOOST_MAKE_PFTO_WRAPPER(static_cast<T>(start))))
-    {}
-    // intel 7.1 doesn't like default copy constructor
-    remove_whitespace(const remove_whitespace & rhs) : 
-        super_t(rhs.base_reference())
-    {}
-};
-
-} // namespace iterators
-} // namespace archive
-} // namespace boost
-
-#endif // BOOST_ARCHIVE_ITERATORS_REMOVE_WHITESPACE_HPP

+ 0 - 168
feng-authnotify/ext/boost/archive/iterators/transform_width.hpp

@@ -1,168 +0,0 @@
-#ifndef BOOST_ARCHIVE_ITERATORS_TRANSFORM_WIDTH_HPP
-#define BOOST_ARCHIVE_ITERATORS_TRANSFORM_WIDTH_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// transform_width.hpp
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . 
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org for updates, documentation, and revision history.
-
-// iterator which takes elements of x bits and returns elements of y bits.
-// used to change streams of 8 bit characters into streams of 6 bit characters.
-// and vice-versa for implementing base64 encodeing/decoding. Be very careful
-// when using and end iterator.  end is only reliable detected when the input
-// stream length is some common multiple of x and y.  E.G. Base64 6 bit
-// character and 8 bit bytes. Lowest common multiple is 24 => 4 6 bit characters
-// or 3 8 bit characters
-
-#include <boost/config.hpp> // for BOOST_DEDUCED_TYPENAME & PTFO
-#include <boost/serialization/pfto.hpp>
-
-#include <boost/iterator/iterator_adaptor.hpp>
-#include <boost/iterator/iterator_traits.hpp>
-
-namespace boost { 
-namespace archive {
-namespace iterators {
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// class used by text archives to translate char strings to wchar_t
-// strings of the currently selected locale
-template<
-    class Base, 
-    int BitsOut, 
-    int BitsIn, 
-    class CharType = BOOST_DEDUCED_TYPENAME boost::iterator_value<Base>::type // output character
->
-class transform_width : 
-    public boost::iterator_adaptor<
-        transform_width<Base, BitsOut, BitsIn, CharType>,
-        Base,
-        CharType,
-        single_pass_traversal_tag,
-        CharType
-    >
-{
-    friend class boost::iterator_core_access;
-    typedef BOOST_DEDUCED_TYPENAME boost::iterator_adaptor<
-        transform_width<Base, BitsOut, BitsIn, CharType>,
-        Base,
-        CharType,
-        single_pass_traversal_tag,
-        CharType
-    > super_t;
-
-    typedef transform_width<Base, BitsOut, BitsIn, CharType> this_t;
-    typedef BOOST_DEDUCED_TYPENAME iterator_value<Base>::type base_value_type;
-
-    CharType fill();
-
-    CharType dereference_impl(){
-        if(! m_full){
-            m_current_value = fill();
-            m_full = true;
-        }
-        return m_current_value;
-    }
-
-    CharType dereference() const {
-        return const_cast<this_t *>(this)->dereference_impl();
-    }
-
-    // test for iterator equality
-    bool equal(const this_t & rhs) const {
-        return
-            this->base_reference() == rhs.base_reference();
-        ;
-    }
-
-    void increment(){
-        m_displacement += BitsOut;
-
-        while(m_displacement >= BitsIn){
-            m_displacement -= BitsIn;
-            if(0 == m_displacement)
-                m_bufferfull = false;
-            if(! m_bufferfull){
-                // note: suspect that this is not invoked for borland
-                ++(this->base_reference());
-            }
-        }
-        m_full = false;
-    }
-
-    CharType m_current_value;
-    // number of bits left in current input character buffer
-    unsigned int m_displacement;
-    base_value_type m_buffer;
-    // flag to current output character is ready - just used to save time
-    bool m_full;
-    // flag to indicate that m_buffer has data
-    bool m_bufferfull;
-
-public:
-    // make composible buy using templated constructor
-    template<class T>
-    transform_width(BOOST_PFTO_WRAPPER(T) start) : 
-        super_t(Base(BOOST_MAKE_PFTO_WRAPPER(static_cast<T>(start)))),
-        m_displacement(0),
-        m_full(false),
-        m_bufferfull(false)
-    {}
-    // intel 7.1 doesn't like default copy constructor
-    transform_width(const transform_width & rhs) : 
-        super_t(rhs.base_reference()),
-        m_current_value(rhs.m_current_value),
-        m_displacement(rhs.m_displacement),
-        m_buffer(rhs.m_buffer),
-        m_full(rhs.m_full),
-        m_bufferfull(rhs.m_bufferfull)
-    {}
-};
-
-template<class Base, int BitsOut, int BitsIn, class CharType>
-CharType transform_width<Base, BitsOut, BitsIn, CharType>::fill(){
-    CharType retval = 0;
-    unsigned int missing_bits = BitsOut;
-    for(;;){
-        unsigned int bcount;
-        if(! m_bufferfull){
-            m_buffer = * this->base_reference();
-            m_bufferfull = true;
-            bcount = BitsIn;
-        }
-        else
-            bcount = BitsIn - m_displacement;
-        unsigned int i = (std::min)(bcount, missing_bits);
-        // shift interesting bits to least significant position
-        unsigned int j = m_buffer >> (bcount - i);
-        // strip off uninteresting bits
-        // (note presumption of two's complement arithmetic)
-        j &= ~(-(1 << i));
-        // append then interesting bits to the output value
-        retval <<= i;
-        retval |= j;
-        missing_bits -= i;
-        if(0 == missing_bits)
-            break;
-        // note: suspect that this is not invoked for borland 5.51
-        ++(this->base_reference());
-        m_bufferfull = false;
-    }
-    return retval;
-}
-
-} // namespace iterators
-} // namespace archive
-} // namespace boost
-
-#endif // BOOST_ARCHIVE_ITERATORS_TRANSFORM_WIDTH_HPP

+ 0 - 94
feng-authnotify/ext/boost/archive/iterators/unescape.hpp

@@ -1,94 +0,0 @@
-#ifndef BOOST_ARCHIVE_ITERATORS_UNESCAPE_HPP
-#define BOOST_ARCHIVE_ITERATORS_UNESCAPE_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// unescape.hpp
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . 
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org for updates, documentation, and revision history.
-
-#include <cassert>
-
-#include <boost/config.hpp> // for BOOST_DEDUCED_TYPENAME
-#include <boost/iterator/iterator_adaptor.hpp>
-//#include <boost/iterator/iterator_traits.hpp>
-#include <boost/pointee.hpp>
-
-namespace boost { 
-namespace archive {
-namespace iterators {
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// class used by text archives to translate char strings to wchar_t
-// strings of the currently selected locale
-template<class Derived, class Base>
-class unescape 
-    : public boost::iterator_adaptor<
-        unescape<Derived, Base>,
-        Base, 
-        BOOST_DEDUCED_TYPENAME pointee<Base>::type,
-        single_pass_traversal_tag,
-        BOOST_DEDUCED_TYPENAME pointee<Base>::type
-    >
-{
-    friend class boost::iterator_core_access;
-    typedef BOOST_DEDUCED_TYPENAME boost::iterator_adaptor<
-        unescape<Derived, Base>, 
-        Base, 
-        BOOST_DEDUCED_TYPENAME pointee<Base>::type,
-        single_pass_traversal_tag,
-        BOOST_DEDUCED_TYPENAME pointee<Base>::type
-    > super_t;
-
-    typedef unescape<Derived, Base> this_t;
-    typedef BOOST_DEDUCED_TYPENAME super_t::reference reference_type;
-public:
-    // gcc 3.4.1 - linux required that this be public
-    typedef BOOST_DEDUCED_TYPENAME super_t::value_type value_type;
-private:
-
-    reference_type dereference_impl() {
-        if(! m_full){
-            m_current_value = static_cast<Derived *>(this)->drain();
-            m_full = true;
-        }
-        return m_current_value;
-    }
-
-    reference_type dereference() const {
-        return const_cast<this_t *>(this)->dereference_impl();
-    }
-
-    // value_type is const char - can't be const fix later
-    value_type m_current_value;
-    bool m_full;
-
-    void increment(){
-        ++(this->base_reference());
-        dereference_impl();
-        m_full = false;
-    };
-
-public:
-
-    unescape(Base base) : 
-        super_t(base),
-        m_full(false)
-    {}
-
-};
-
-} // namespace iterators
-} // namespace archive
-} // namespace boost
-
-#endif // BOOST_ARCHIVE_ITERATORS_UNESCAPE_HPP

+ 0 - 129
feng-authnotify/ext/boost/archive/iterators/wchar_from_mb.hpp

@@ -1,129 +0,0 @@
-#ifndef BOOST_ARCHIVE_ITERATORS_WCHAR_FROM_MB_HPP
-#define BOOST_ARCHIVE_ITERATORS_WCHAR_FROM_MB_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// wchar_from_mb.hpp
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . 
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org for updates, documentation, and revision history.
-
-#include <cassert>
-#include <cctype>
-#include <cstddef> // size_t
-#include <cstdlib> // mblen
-
-#include <boost/config.hpp> // for BOOST_DEDUCED_TYPENAME
-#if defined(BOOST_NO_STDC_NAMESPACE)
-namespace std{ 
-    using ::mblen; 
-    using ::mbtowc; 
-} // namespace std
-#endif
-
-#include <boost/serialization/throw_exception.hpp>
-#include <boost/serialization/pfto.hpp>
-
-#include <boost/iterator/iterator_adaptor.hpp>
-#include <boost/archive/iterators/dataflow_exception.hpp>
-
-namespace boost { 
-namespace archive {
-namespace iterators {
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// class used by text archives to translate char strings to wchar_t
-// strings of the currently selected locale
-template<class Base>
-class wchar_from_mb 
-    : public boost::iterator_adaptor<
-        wchar_from_mb<Base>, 
-        Base, 
-        wchar_t,
-        single_pass_traversal_tag,
-        wchar_t
-    >
-{
-    friend class boost::iterator_core_access;
-    typedef BOOST_DEDUCED_TYPENAME boost::iterator_adaptor<
-        wchar_from_mb<Base>, 
-        Base, 
-        wchar_t,
-        single_pass_traversal_tag,
-        wchar_t
-    > super_t;
-
-    typedef wchar_from_mb<Base> this_t;
-
-    wchar_t drain();
-
-    wchar_t dereference_impl() {
-        if(! m_full){
-            m_current_value = drain();
-            m_full = true;
-        }
-        return m_current_value;
-    }
-
-    wchar_t dereference() const {
-        return const_cast<this_t *>(this)->dereference_impl();
-    }
-
-    void increment(){
-        dereference_impl();
-        m_full = false;
-        ++(this->base_reference());
-    };
-
-    wchar_t m_current_value;
-    bool m_full;
-
-public:
-    // make composible buy using templated constructor
-    template<class T>
-    wchar_from_mb(BOOST_PFTO_WRAPPER(T) start) : 
-        super_t(Base(BOOST_MAKE_PFTO_WRAPPER(static_cast<T>(start)))),
-        m_full(false)
-    {}
-    // intel 7.1 doesn't like default copy constructor
-    wchar_from_mb(const wchar_from_mb & rhs) : 
-        super_t(rhs.base_reference()),
-        m_full(rhs.m_full)
-    {}
-};
-
-template<class Base>
-wchar_t wchar_from_mb<Base>::drain(){
-    char buffer[9];
-    char * bptr = buffer;
-    char val;
-    for(std::size_t i = 0; i++ < (unsigned)MB_CUR_MAX;){
-        val = * this->base_reference();
-        *bptr++ = val;
-        int result = std::mblen(buffer, i);
-        if(-1 != result)
-            break;
-        ++(this->base_reference());
-    }
-    wchar_t retval;
-    int result = std::mbtowc(& retval, buffer, MB_CUR_MAX);
-    if(0 >= result)
-        boost::serialization::throw_exception(iterators::dataflow_exception(
-            iterators::dataflow_exception::invalid_conversion
-        ));
-    return retval;
-}
-
-} // namespace iterators
-} // namespace archive
-} // namespace boost
-
-#endif // BOOST_ARCHIVE_ITERATORS_WCHAR_FROM_MB_HPP

+ 0 - 125
feng-authnotify/ext/boost/archive/iterators/xml_escape.hpp

@@ -1,125 +0,0 @@
-#ifndef BOOST_ARCHIVE_ITERATORS_XML_ESCAPE_HPP
-#define BOOST_ARCHIVE_ITERATORS_XML_ESCAPE_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// xml_escape.hpp
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . 
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org for updates, documentation, and revision history.
-
-#include <cassert>
-
-#include <boost/config.hpp> // for BOOST_DEDUCED_TYPENAME
-#include <boost/serialization/pfto.hpp>
-
-#include <boost/archive/iterators/escape.hpp>
-
-namespace boost { 
-namespace archive {
-namespace iterators {
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// insert escapes into xml text
-
-template<class Base>
-class xml_escape 
-    : public escape<xml_escape<Base>, Base>
-{
-    friend class boost::iterator_core_access;
-
-    typedef escape<xml_escape<Base>, Base> super_t;
-
-public:
-    char fill(const char * & bstart, const char * & bend);
-    wchar_t fill(const wchar_t * & bstart, const wchar_t * & bend);
-
-    template<class T>
-    xml_escape(BOOST_PFTO_WRAPPER(T) start) :
-        super_t(Base(BOOST_MAKE_PFTO_WRAPPER(static_cast<T>(start))))
-    {}
-    // intel 7.1 doesn't like default copy constructor
-    xml_escape(const xml_escape & rhs) : 
-        super_t(rhs.base_reference())
-    {}
-};
-
-template<class Base>
-char xml_escape<Base>::fill(
-    const char * & bstart, 
-    const char * & bend
-){
-    char current_value = * this->base_reference();
-    switch(current_value){
-    case '<':
-        bstart = "&lt;";
-        bend = bstart + 4;
-        break;
-    case '>':
-        bstart = "&gt;";
-        bend = bstart + 4;
-        break;
-    case '&':
-        bstart = "&amp;";
-        bend = bstart + 5;
-        break;
-    case '"':
-        bstart = "&quot;";
-        bend = bstart + 6;
-        break;
-    case '\'':
-        bstart = "&apos;";
-        bend = bstart + 6;
-        break;
-    default:
-        return current_value;
-    }
-    return *bstart;
-}
-
-template<class Base>
-wchar_t xml_escape<Base>::fill(
-    const wchar_t * & bstart, 
-    const wchar_t * & bend
-){
-    wchar_t current_value = * this->base_reference();
-    switch(current_value){
-    case '<':
-        bstart = L"&lt;";
-        bend = bstart + 4;
-        break;
-    case '>':
-        bstart = L"&gt;";
-        bend = bstart + 4;
-        break;
-    case '&':
-        bstart = L"&amp;";
-        bend = bstart + 5;
-        break;
-    case '"':
-        bstart = L"&quot;";
-        bend = bstart + 6;
-        break;
-    case '\'':
-        bstart = L"&apos;";
-        bend = bstart + 6;
-        break;
-    default:
-        return current_value;
-    }
-    return *bstart;
-}
-
-} // namespace iterators
-} // namespace archive
-} // namespace boost
-
-#endif // BOOST_ARCHIVE_ITERATORS_XML_ESCAPE_HPP

+ 0 - 118
feng-authnotify/ext/boost/archive/iterators/xml_unescape.hpp

@@ -1,118 +0,0 @@
-#ifndef BOOST_ARCHIVE_ITERATORS_XML_UNESCAPE_HPP
-#define BOOST_ARCHIVE_ITERATORS_XML_UNESCAPE_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// xml_unescape.hpp
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . 
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org for updates, documentation, and revision history.
-
-#include <cassert>
-
-#include <boost/config.hpp> // for BOOST_DEDUCED_TYPENAME
-#include <boost/serialization/throw_exception.hpp>
-#include <boost/serialization/pfto.hpp>
-
-#include <boost/archive/iterators/unescape.hpp>
-#include <boost/archive/iterators/dataflow_exception.hpp>
-
-namespace boost { 
-namespace archive {
-namespace iterators {
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// replace &??? xml escape sequences with the corresponding characters
-template<class Base>
-class xml_unescape 
-    : public unescape<xml_unescape<Base>, Base>
-{
-    friend class boost::iterator_core_access;
-    typedef xml_unescape<Base> this_t;
-    typedef unescape<this_t, Base> super_t;
-    typedef BOOST_DEDUCED_TYPENAME boost::iterator_reference<this_t> reference_type;
-
-    reference_type dereference() const {
-        return unescape<xml_unescape<Base>, Base>::dereference();
-    }
-public:
-    void drain_residue(const char *literal);
-    int drain();
-
-    template<class T>
-    xml_unescape(BOOST_PFTO_WRAPPER(T) start) : 
-        super_t(Base(BOOST_MAKE_PFTO_WRAPPER(static_cast<T>(start))))
-    {}
-    // intel 7.1 doesn't like default copy constructor
-    xml_unescape(const xml_unescape & rhs) : 
-        super_t(rhs.base_reference())
-    {}
-};
-
-template<class Base>
-void xml_unescape<Base>::drain_residue(const char * literal){
-    do{
-        if(* literal != * ++(this->base_reference()))
-            boost::serialization::throw_exception(
-                dataflow_exception(
-                    dataflow_exception::invalid_xml_escape_sequence
-                )
-            );
-    }
-    while('\0' != * ++literal);
-}
-
-// note key constraint on this function is that can't "look ahead" any
-// more than necessary into base iterator.  Doing so would alter the base
-// iterator refenence which would make subsequent iterator comparisons
-// incorrect and thereby break the composiblity of iterators.
-template<class Base>
-int xml_unescape<Base>::drain(){
-    int retval = * this->base_reference();
-    if('&' != retval){
-        return retval;
-    }
-    retval = * ++(this->base_reference());
-    switch(retval){
-    case 'l': // &lt;
-        drain_residue("t;");
-        retval = '<';
-        break;
-    case 'g': // &gt;
-        drain_residue("t;");
-        retval = '>';
-        break;
-    case 'a':
-        retval = * ++(this->base_reference());
-        switch(retval){
-        case 'p': // &apos;
-            drain_residue("os;");
-            retval = '\'';
-            break;
-        case 'm': // &amp;
-            drain_residue("p;");
-            retval = '&';
-            break;
-        }
-        break;
-    case 'q':
-        drain_residue("uot;");
-        retval = '"';
-        break;
-    }
-    return retval;
-}
-
-} // namespace iterators
-} // namespace archive
-} // namespace boost
-
-#endif // BOOST_ARCHIVE_ITERATORS_XML_UNESCAPE_HPP

+ 0 - 49
feng-authnotify/ext/boost/archive/iterators/xml_unescape_exception.hpp

@@ -1,49 +0,0 @@
-#ifndef BOOST_ARCHIVE_ITERATORS_XML_UNESCAPE_EXCEPTION_HPP
-#define BOOST_ARCHIVE_ITERATORS_XML_UNESCAPE_EXCEPTION_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// xml_unescape_exception.hpp:
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . 
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org for updates, documentation, and revision history.
-
-#include <boost/config.hpp>
-#ifndef BOOST_NO_EXCEPTIONS
-#include <exception>
-
-#include <cassert>
-
-namespace boost {
-namespace archive {
-namespace iterators {
-
-//////////////////////////////////////////////////////////////////////
-// exceptions thrown by xml_unescapes
-//
-class xml_unescape_exception : public std::exception
-{
-public:
-    xml_unescape_exception()
-    {}
-
-    virtual const char *what( ) const throw( )
-    {
-        return "xml contained un-recognized escape code";
-    }
-};
-
-} // namespace iterators
-} // namespace archive
-} // namespace boost
-
-#endif //BOOST_NO_EXCEPTIONS
-#endif //BOOST_ARCHIVE_ITERATORS_XML_UNESCAPE_EXCEPTION_HPP

+ 0 - 323
feng-authnotify/ext/boost/array.hpp

@@ -1,323 +0,0 @@
-/* The following code declares class array,
- * an STL container (as wrapper) for arrays of constant size.
- *
- * See
- *      http://www.boost.org/libs/array/
- * for documentation.
- *
- * The original author site is at: http://www.josuttis.com/
- *
- * (C) Copyright Nicolai M. Josuttis 2001.
- *
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * 29 Jan 2004 - c_array() added, BOOST_NO_PRIVATE_IN_AGGREGATE removed (Nico Josuttis)
- * 23 Aug 2002 - fix for Non-MSVC compilers combined with MSVC libraries.
- * 05 Aug 2001 - minor update (Nico Josuttis)
- * 20 Jan 2001 - STLport fix (Beman Dawes)
- * 29 Sep 2000 - Initial Revision (Nico Josuttis)
- *
- * Jan 29, 2004
- */
-#ifndef BOOST_ARRAY_HPP
-#define BOOST_ARRAY_HPP
-
-#include <cstddef>
-#include <stdexcept>
-#include <boost/assert.hpp>
-#include <boost/swap.hpp>
-
-// Handles broken standard libraries better than <iterator>
-#include <boost/detail/iterator.hpp>
-#include <boost/throw_exception.hpp>
-#include <algorithm>
-
-// FIXES for broken compilers
-#include <boost/config.hpp>
-
-
-namespace boost {
-
-    template<class T, std::size_t N>
-    class array {
-      public:
-        T elems[N];    // fixed-size array of elements of type T
-
-      public:
-        // type definitions
-        typedef T              value_type;
-        typedef T*             iterator;
-        typedef const T*       const_iterator;
-        typedef T&             reference;
-        typedef const T&       const_reference;
-        typedef std::size_t    size_type;
-        typedef std::ptrdiff_t difference_type;
-
-        // iterator support
-        iterator begin() { return elems; }
-        const_iterator begin() const { return elems; }
-        iterator end() { return elems+N; }
-        const_iterator end() const { return elems+N; }
-
-        // reverse iterator support
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_MSVC_STD_ITERATOR) && !defined(BOOST_NO_STD_ITERATOR_TRAITS)
-        typedef std::reverse_iterator<iterator> reverse_iterator;
-        typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
-#elif defined(_MSC_VER) && (_MSC_VER == 1300) && defined(BOOST_DINKUMWARE_STDLIB) && (BOOST_DINKUMWARE_STDLIB == 310)
-        // workaround for broken reverse_iterator in VC7
-        typedef std::reverse_iterator<std::_Ptrit<value_type, difference_type, iterator,
-                                      reference, iterator, reference> > reverse_iterator;
-        typedef std::reverse_iterator<std::_Ptrit<value_type, difference_type, const_iterator,
-                                      const_reference, iterator, reference> > const_reverse_iterator;
-#else
-        // workaround for broken reverse_iterator implementations
-        typedef std::reverse_iterator<iterator,T> reverse_iterator;
-        typedef std::reverse_iterator<const_iterator,T> const_reverse_iterator;
-#endif
-
-        reverse_iterator rbegin() { return reverse_iterator(end()); }
-        const_reverse_iterator rbegin() const {
-            return const_reverse_iterator(end());
-        }
-        reverse_iterator rend() { return reverse_iterator(begin()); }
-        const_reverse_iterator rend() const {
-            return const_reverse_iterator(begin());
-        }
-
-        // operator[]
-        reference operator[](size_type i) 
-        { 
-            BOOST_ASSERT( i < N && "out of range" ); 
-            return elems[i];
-        }
-        
-        const_reference operator[](size_type i) const 
-        {     
-            BOOST_ASSERT( i < N && "out of range" ); 
-            return elems[i]; 
-        }
-
-        // at() with range check
-        reference at(size_type i) { rangecheck(i); return elems[i]; }
-        const_reference at(size_type i) const { rangecheck(i); return elems[i]; }
-    
-        // front() and back()
-        reference front() 
-        { 
-            return elems[0]; 
-        }
-        
-        const_reference front() const 
-        {
-            return elems[0];
-        }
-        
-        reference back() 
-        { 
-            return elems[N-1]; 
-        }
-        
-        const_reference back() const 
-        { 
-            return elems[N-1]; 
-        }
-
-        // size is constant
-        static size_type size() { return N; }
-        static bool empty() { return false; }
-        static size_type max_size() { return N; }
-        enum { static_size = N };
-
-        // swap (note: linear complexity)
-        void swap (array<T,N>& y) {
-            for (size_type i = 0; i < N; ++i)
-                boost::swap(elems[i],y.elems[i]);
-        }
-
-        // direct access to data (read-only)
-        const T* data() const { return elems; }
-        T* data() { return elems; }
-
-        // use array as C array (direct read/write access to data)
-        T* c_array() { return elems; }
-
-        // assignment with type conversion
-        template <typename T2>
-        array<T,N>& operator= (const array<T2,N>& rhs) {
-            std::copy(rhs.begin(),rhs.end(), begin());
-            return *this;
-        }
-
-        // assign one value to all elements
-        void assign (const T& value)
-        {
-            std::fill_n(begin(),size(),value);
-        }
-
-        // check range (may be private because it is static)
-        static void rangecheck (size_type i) {
-            if (i >= size()) {
-                throw std::out_of_range("array<>: index out of range");
-            }
-        }
-
-    };
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-    template< class T >
-    class array< T, 0 > {
-
-      public:
-        // type definitions
-        typedef T              value_type;
-        typedef T*             iterator;
-        typedef const T*       const_iterator;
-        typedef T&             reference;
-        typedef const T&       const_reference;
-        typedef std::size_t    size_type;
-        typedef std::ptrdiff_t difference_type;
-
-        // iterator support
-        iterator begin() { return iterator( reinterpret_cast< T * >( this ) ); }
-        const_iterator begin() const { return const_iterator(  reinterpret_cast< const T * >( this ) ); }
-        iterator end() { return begin(); }
-        const_iterator end() const { return begin(); }
-
-        // reverse iterator support
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_MSVC_STD_ITERATOR) && !defined(BOOST_NO_STD_ITERATOR_TRAITS)
-        typedef std::reverse_iterator<iterator> reverse_iterator;
-        typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
-#elif defined(_MSC_VER) && (_MSC_VER == 1300) && defined(BOOST_DINKUMWARE_STDLIB) && (BOOST_DINKUMWARE_STDLIB == 310)
-        // workaround for broken reverse_iterator in VC7
-        typedef std::reverse_iterator<std::_Ptrit<value_type, difference_type, iterator,
-                                      reference, iterator, reference> > reverse_iterator;
-        typedef std::reverse_iterator<std::_Ptrit<value_type, difference_type, const_iterator,
-                                      const_reference, iterator, reference> > const_reverse_iterator;
-#else
-        // workaround for broken reverse_iterator implementations
-        typedef std::reverse_iterator<iterator,T> reverse_iterator;
-        typedef std::reverse_iterator<const_iterator,T> const_reverse_iterator;
-#endif
-
-        reverse_iterator rbegin() { return reverse_iterator(end()); }
-        const_reverse_iterator rbegin() const {
-            return const_reverse_iterator(end());
-        }
-        reverse_iterator rend() { return reverse_iterator(begin()); }
-        const_reverse_iterator rend() const {
-            return const_reverse_iterator(begin());
-        }
-
-        // operator[]
-        reference operator[](size_type /*i*/)
-        {
-            return failed_rangecheck();
-        }
-
-        const_reference operator[](size_type /*i*/) const
-        {
-            return failed_rangecheck();
-        }
-
-        // at() with range check
-        reference at(size_type /*i*/)               {   return failed_rangecheck(); }
-        const_reference at(size_type /*i*/) const   {   return failed_rangecheck(); }
-
-        // front() and back()
-        reference front()
-        {
-            return failed_rangecheck();
-        }
-
-        const_reference front() const
-        {
-            return failed_rangecheck();
-        }
-
-        reference back()
-        {
-            return failed_rangecheck();
-        }
-
-        const_reference back() const
-        {
-            return failed_rangecheck();
-        }
-
-        // size is constant
-        static size_type size() { return 0; }
-        static bool empty() { return true; }
-        static size_type max_size() { return 0; }
-        enum { static_size = 0 };
-
-        void swap (array<T,0>& /*y*/) {
-        }
-
-        // direct access to data (read-only)
-        const T* data() const { return 0; }
-        T* data() { return 0; }
-
-        // use array as C array (direct read/write access to data)
-        T* c_array() { return 0; }
-
-        // assignment with type conversion
-        template <typename T2>
-        array<T,0>& operator= (const array<T2,0>& ) {
-            return *this;
-        }
-
-        // assign one value to all elements
-        void assign (const T& ) {   }
-
-        // check range (may be private because it is static)
-        static reference failed_rangecheck () {
-                std::out_of_range e("attempt to access element of an empty array");
-                boost::throw_exception(e);
-                //
-                // We need to return something here to keep
-                // some compilers happy: however we will never
-                // actually get here....
-                //
-                static T placeholder;
-                return placeholder;
-            }
-    };
-#endif
-
-    // comparisons
-    template<class T, std::size_t N>
-    bool operator== (const array<T,N>& x, const array<T,N>& y) {
-        return std::equal(x.begin(), x.end(), y.begin());
-    }
-    template<class T, std::size_t N>
-    bool operator< (const array<T,N>& x, const array<T,N>& y) {
-        return std::lexicographical_compare(x.begin(),x.end(),y.begin(),y.end());
-    }
-    template<class T, std::size_t N>
-    bool operator!= (const array<T,N>& x, const array<T,N>& y) {
-        return !(x==y);
-    }
-    template<class T, std::size_t N>
-    bool operator> (const array<T,N>& x, const array<T,N>& y) {
-        return y<x;
-    }
-    template<class T, std::size_t N>
-    bool operator<= (const array<T,N>& x, const array<T,N>& y) {
-        return !(y<x);
-    }
-    template<class T, std::size_t N>
-    bool operator>= (const array<T,N>& x, const array<T,N>& y) {
-        return !(x<y);
-    }
-
-    // global swap()
-    template<class T, std::size_t N>
-    inline void swap (array<T,N>& x, array<T,N>& y) {
-        x.swap(y);
-    }
-
-} /* namespace boost */
-
-#endif /*BOOST_ARRAY_HPP*/

+ 0 - 100
feng-authnotify/ext/boost/asio.hpp

@@ -1,100 +0,0 @@
-//
-// asio.hpp
-// ~~~~~~~~
-//
-// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-//  See www.boost.org/libs/asio for documentation.
-//
-
-#ifndef BOOST_ASIO_HPP
-#define BOOST_ASIO_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include <boost/asio/basic_datagram_socket.hpp>
-#include <boost/asio/basic_deadline_timer.hpp>
-#include <boost/asio/basic_io_object.hpp>
-#include <boost/asio/basic_raw_socket.hpp>
-#include <boost/asio/basic_serial_port.hpp>
-#include <boost/asio/basic_socket_acceptor.hpp>
-#include <boost/asio/basic_socket_iostream.hpp>
-#include <boost/asio/basic_socket_streambuf.hpp>
-#include <boost/asio/basic_stream_socket.hpp>
-#include <boost/asio/basic_streambuf.hpp>
-#include <boost/asio/buffer.hpp>
-#include <boost/asio/buffered_read_stream_fwd.hpp>
-#include <boost/asio/buffered_read_stream.hpp>
-#include <boost/asio/buffered_stream_fwd.hpp>
-#include <boost/asio/buffered_stream.hpp>
-#include <boost/asio/buffered_write_stream_fwd.hpp>
-#include <boost/asio/buffered_write_stream.hpp>
-#include <boost/asio/buffers_iterator.hpp>
-#include <boost/asio/completion_condition.hpp>
-#include <boost/asio/datagram_socket_service.hpp>
-#include <boost/asio/deadline_timer_service.hpp>
-#include <boost/asio/deadline_timer.hpp>
-#include <boost/asio/error.hpp>
-#include <boost/asio/handler_alloc_hook.hpp>
-#include <boost/asio/handler_invoke_hook.hpp>
-#include <boost/asio/io_service.hpp>
-#include <boost/asio/ip/address.hpp>
-#include <boost/asio/ip/address_v4.hpp>
-#include <boost/asio/ip/address_v6.hpp>
-#include <boost/asio/ip/basic_endpoint.hpp>
-#include <boost/asio/ip/basic_resolver.hpp>
-#include <boost/asio/ip/basic_resolver_entry.hpp>
-#include <boost/asio/ip/basic_resolver_iterator.hpp>
-#include <boost/asio/ip/basic_resolver_query.hpp>
-#include <boost/asio/ip/host_name.hpp>
-#include <boost/asio/ip/icmp.hpp>
-#include <boost/asio/ip/multicast.hpp>
-#include <boost/asio/ip/resolver_query_base.hpp>
-#include <boost/asio/ip/resolver_service.hpp>
-#include <boost/asio/ip/tcp.hpp>
-#include <boost/asio/ip/udp.hpp>
-#include <boost/asio/ip/unicast.hpp>
-#include <boost/asio/ip/v6_only.hpp>
-#include <boost/asio/is_read_buffered.hpp>
-#include <boost/asio/is_write_buffered.hpp>
-#include <boost/asio/local/basic_endpoint.hpp>
-#include <boost/asio/local/connect_pair.hpp>
-#include <boost/asio/local/datagram_protocol.hpp>
-#include <boost/asio/local/stream_protocol.hpp>
-#include <boost/asio/placeholders.hpp>
-#include <boost/asio/posix/basic_descriptor.hpp>
-#include <boost/asio/posix/basic_stream_descriptor.hpp>
-#include <boost/asio/posix/descriptor_base.hpp>
-#include <boost/asio/posix/stream_descriptor.hpp>
-#include <boost/asio/posix/stream_descriptor_service.hpp>
-#include <boost/asio/raw_socket_service.hpp>
-#include <boost/asio/read.hpp>
-#include <boost/asio/read_at.hpp>
-#include <boost/asio/read_until.hpp>
-#include <boost/asio/serial_port.hpp>
-#include <boost/asio/serial_port_base.hpp>
-#include <boost/asio/serial_port_service.hpp>
-#include <boost/asio/socket_acceptor_service.hpp>
-#include <boost/asio/socket_base.hpp>
-#include <boost/asio/strand.hpp>
-#include <boost/asio/stream_socket_service.hpp>
-#include <boost/asio/streambuf.hpp>
-#include <boost/asio/time_traits.hpp>
-#include <boost/asio/version.hpp>
-#include <boost/asio/windows/basic_handle.hpp>
-#include <boost/asio/windows/basic_random_access_handle.hpp>
-#include <boost/asio/windows/basic_stream_handle.hpp>
-#include <boost/asio/windows/overlapped_ptr.hpp>
-#include <boost/asio/windows/random_access_handle.hpp>
-#include <boost/asio/windows/random_access_handle_service.hpp>
-#include <boost/asio/windows/stream_handle.hpp>
-#include <boost/asio/windows/stream_handle_service.hpp>
-#include <boost/asio/write.hpp>
-#include <boost/asio/write_at.hpp>
-
-#endif // BOOST_ASIO_HPP

+ 0 - 805
feng-authnotify/ext/boost/asio/basic_datagram_socket.hpp

@@ -1,805 +0,0 @@
-//
-// basic_datagram_socket.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef BOOST_ASIO_BASIC_DATAGRAM_SOCKET_HPP
-#define BOOST_ASIO_BASIC_DATAGRAM_SOCKET_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include <boost/asio/detail/push_options.hpp>
-
-#include <boost/asio/detail/push_options.hpp>
-#include <cstddef>
-#include <boost/config.hpp>
-#include <boost/asio/detail/pop_options.hpp>
-
-#include <boost/asio/basic_socket.hpp>
-#include <boost/asio/datagram_socket_service.hpp>
-#include <boost/asio/error.hpp>
-#include <boost/asio/detail/throw_error.hpp>
-
-namespace boost {
-namespace asio {
-
-/// Provides datagram-oriented socket functionality.
-/**
- * The basic_datagram_socket class template provides asynchronous and blocking
- * datagram-oriented socket functionality.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- */
-template <typename Protocol,
-    typename DatagramSocketService = datagram_socket_service<Protocol> >
-class basic_datagram_socket
-  : public basic_socket<Protocol, DatagramSocketService>
-{
-public:
-  /// The native representation of a socket.
-  typedef typename DatagramSocketService::native_type native_type;
-
-  /// The protocol type.
-  typedef Protocol protocol_type;
-
-  /// The endpoint type.
-  typedef typename Protocol::endpoint endpoint_type;
-
-  /// Construct a basic_datagram_socket without opening it.
-  /**
-   * This constructor creates a datagram socket without opening it. The open()
-   * function must be called before data can be sent or received on the socket.
-   *
-   * @param io_service The io_service object that the datagram socket will use
-   * to dispatch handlers for any asynchronous operations performed on the
-   * socket.
-   */
-  explicit basic_datagram_socket(boost::asio::io_service& io_service)
-    : basic_socket<Protocol, DatagramSocketService>(io_service)
-  {
-  }
-
-  /// Construct and open a basic_datagram_socket.
-  /**
-   * This constructor creates and opens a datagram socket.
-   *
-   * @param io_service The io_service object that the datagram socket will use
-   * to dispatch handlers for any asynchronous operations performed on the
-   * socket.
-   *
-   * @param protocol An object specifying protocol parameters to be used.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   */
-  basic_datagram_socket(boost::asio::io_service& io_service,
-      const protocol_type& protocol)
-    : basic_socket<Protocol, DatagramSocketService>(io_service, protocol)
-  {
-  }
-
-  /// Construct a basic_datagram_socket, opening it and binding it to the given
-  /// local endpoint.
-  /**
-   * This constructor creates a datagram socket and automatically opens it bound
-   * to the specified endpoint on the local machine. The protocol used is the
-   * protocol associated with the given endpoint.
-   *
-   * @param io_service The io_service object that the datagram socket will use
-   * to dispatch handlers for any asynchronous operations performed on the
-   * socket.
-   *
-   * @param endpoint An endpoint on the local machine to which the datagram
-   * socket will be bound.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   */
-  basic_datagram_socket(boost::asio::io_service& io_service,
-      const endpoint_type& endpoint)
-    : basic_socket<Protocol, DatagramSocketService>(io_service, endpoint)
-  {
-  }
-
-  /// Construct a basic_datagram_socket on an existing native socket.
-  /**
-   * This constructor creates a datagram socket object to hold an existing
-   * native socket.
-   *
-   * @param io_service The io_service object that the datagram socket will use
-   * to dispatch handlers for any asynchronous operations performed on the
-   * socket.
-   *
-   * @param protocol An object specifying protocol parameters to be used.
-   *
-   * @param native_socket The new underlying socket implementation.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   */
-  basic_datagram_socket(boost::asio::io_service& io_service,
-      const protocol_type& protocol, const native_type& native_socket)
-    : basic_socket<Protocol, DatagramSocketService>(
-        io_service, protocol, native_socket)
-  {
-  }
-
-  /// Send some data on a connected socket.
-  /**
-   * This function is used to send data on the datagram socket. The function
-   * call will block until the data has been sent successfully or an error
-   * occurs.
-   *
-   * @param buffers One ore more data buffers to be sent on the socket.
-   *
-   * @returns The number of bytes sent.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   *
-   * @note The send operation can only be used with a connected socket. Use
-   * the send_to function to send data on an unconnected datagram socket.
-   *
-   * @par Example
-   * To send a single data buffer use the @ref buffer function as follows:
-   * @code socket.send(boost::asio::buffer(data, size)); @endcode
-   * See the @ref buffer documentation for information on sending multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t send(const ConstBufferSequence& buffers)
-  {
-    boost::system::error_code ec;
-    std::size_t s = this->service.send(this->implementation, buffers, 0, ec);
-    boost::asio::detail::throw_error(ec);
-    return s;
-  }
-
-  /// Send some data on a connected socket.
-  /**
-   * This function is used to send data on the datagram socket. The function
-   * call will block until the data has been sent successfully or an error
-   * occurs.
-   *
-   * @param buffers One ore more data buffers to be sent on the socket.
-   *
-   * @param flags Flags specifying how the send call is to be made.
-   *
-   * @returns The number of bytes sent.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   *
-   * @note The send operation can only be used with a connected socket. Use
-   * the send_to function to send data on an unconnected datagram socket.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t send(const ConstBufferSequence& buffers,
-      socket_base::message_flags flags)
-  {
-    boost::system::error_code ec;
-    std::size_t s = this->service.send(
-        this->implementation, buffers, flags, ec);
-    boost::asio::detail::throw_error(ec);
-    return s;
-  }
-
-  /// Send some data on a connected socket.
-  /**
-   * This function is used to send data on the datagram socket. The function
-   * call will block until the data has been sent successfully or an error
-   * occurs.
-   *
-   * @param buffers One or more data buffers to be sent on the socket.
-   *
-   * @param flags Flags specifying how the send call is to be made.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes sent.
-   *
-   * @note The send operation can only be used with a connected socket. Use
-   * the send_to function to send data on an unconnected datagram socket.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t send(const ConstBufferSequence& buffers,
-      socket_base::message_flags flags, boost::system::error_code& ec)
-  {
-    return this->service.send(this->implementation, buffers, flags, ec);
-  }
-
-  /// Start an asynchronous send on a connected socket.
-  /**
-   * This function is used to send data on the datagram socket. The function
-   * call will block until the data has been sent successfully or an error
-   * occurs.
-   *
-   * @param buffers One or more data buffers to be sent on the socket. Although
-   * the buffers object may be copied as necessary, ownership of the underlying
-   * memory blocks is retained by the caller, which must guarantee that they
-   * remain valid until the handler is called.
-   *
-   * @param handler The handler to be called when the send operation completes.
-   * Copies will be made of the handler as required. The function signature of
-   * the handler must be:
-   * @code void handler(
-   *   const boost::system::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes sent.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * boost::asio::io_service::post().
-   *
-   * @note The async_send operation can only be used with a connected socket.
-   * Use the async_send_to function to send data on an unconnected datagram
-   * socket.
-   *
-   * @par Example
-   * To send a single data buffer use the @ref buffer function as follows:
-   * @code
-   * socket.async_send(boost::asio::buffer(data, size), handler);
-   * @endcode
-   * See the @ref buffer documentation for information on sending multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence, typename WriteHandler>
-  void async_send(const ConstBufferSequence& buffers, WriteHandler handler)
-  {
-    this->service.async_send(this->implementation, buffers, 0, handler);
-  }
-
-  /// Start an asynchronous send on a connected socket.
-  /**
-   * This function is used to send data on the datagram socket. The function
-   * call will block until the data has been sent successfully or an error
-   * occurs.
-   *
-   * @param buffers One or more data buffers to be sent on the socket. Although
-   * the buffers object may be copied as necessary, ownership of the underlying
-   * memory blocks is retained by the caller, which must guarantee that they
-   * remain valid until the handler is called.
-   *
-   * @param flags Flags specifying how the send call is to be made.
-   *
-   * @param handler The handler to be called when the send operation completes.
-   * Copies will be made of the handler as required. The function signature of
-   * the handler must be:
-   * @code void handler(
-   *   const boost::system::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes sent.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * boost::asio::io_service::post().
-   *
-   * @note The async_send operation can only be used with a connected socket.
-   * Use the async_send_to function to send data on an unconnected datagram
-   * socket.
-   */
-  template <typename ConstBufferSequence, typename WriteHandler>
-  void async_send(const ConstBufferSequence& buffers,
-      socket_base::message_flags flags, WriteHandler handler)
-  {
-    this->service.async_send(this->implementation, buffers, flags, handler);
-  }
-
-  /// Send a datagram to the specified endpoint.
-  /**
-   * This function is used to send a datagram to the specified remote endpoint.
-   * The function call will block until the data has been sent successfully or
-   * an error occurs.
-   *
-   * @param buffers One or more data buffers to be sent to the remote endpoint.
-   *
-   * @param destination The remote endpoint to which the data will be sent.
-   *
-   * @returns The number of bytes sent.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   *
-   * @par Example
-   * To send a single data buffer use the @ref buffer function as follows:
-   * @code
-   * boost::asio::ip::udp::endpoint destination(
-   *     boost::asio::ip::address::from_string("1.2.3.4"), 12345);
-   * socket.send_to(boost::asio::buffer(data, size), destination);
-   * @endcode
-   * See the @ref buffer documentation for information on sending multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t send_to(const ConstBufferSequence& buffers,
-      const endpoint_type& destination)
-  {
-    boost::system::error_code ec;
-    std::size_t s = this->service.send_to(
-        this->implementation, buffers, destination, 0, ec);
-    boost::asio::detail::throw_error(ec);
-    return s;
-  }
-
-  /// Send a datagram to the specified endpoint.
-  /**
-   * This function is used to send a datagram to the specified remote endpoint.
-   * The function call will block until the data has been sent successfully or
-   * an error occurs.
-   *
-   * @param buffers One or more data buffers to be sent to the remote endpoint.
-   *
-   * @param destination The remote endpoint to which the data will be sent.
-   *
-   * @param flags Flags specifying how the send call is to be made.
-   *
-   * @returns The number of bytes sent.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t send_to(const ConstBufferSequence& buffers,
-      const endpoint_type& destination, socket_base::message_flags flags)
-  {
-    boost::system::error_code ec;
-    std::size_t s = this->service.send_to(
-        this->implementation, buffers, destination, flags, ec);
-    boost::asio::detail::throw_error(ec);
-    return s;
-  }
-
-  /// Send a datagram to the specified endpoint.
-  /**
-   * This function is used to send a datagram to the specified remote endpoint.
-   * The function call will block until the data has been sent successfully or
-   * an error occurs.
-   *
-   * @param buffers One or more data buffers to be sent to the remote endpoint.
-   *
-   * @param destination The remote endpoint to which the data will be sent.
-   *
-   * @param flags Flags specifying how the send call is to be made.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes sent.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t send_to(const ConstBufferSequence& buffers,
-      const endpoint_type& destination, socket_base::message_flags flags,
-      boost::system::error_code& ec)
-  {
-    return this->service.send_to(this->implementation,
-        buffers, destination, flags, ec);
-  }
-
-  /// Start an asynchronous send.
-  /**
-   * This function is used to asynchronously send a datagram to the specified
-   * remote endpoint. The function call always returns immediately.
-   *
-   * @param buffers One or more data buffers to be sent to the remote endpoint.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param destination The remote endpoint to which the data will be sent.
-   * Copies will be made of the endpoint as required.
-   *
-   * @param handler The handler to be called when the send operation completes.
-   * Copies will be made of the handler as required. The function signature of
-   * the handler must be:
-   * @code void handler(
-   *   const boost::system::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes sent.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * boost::asio::io_service::post().
-   *
-   * @par Example
-   * To send a single data buffer use the @ref buffer function as follows:
-   * @code
-   * boost::asio::ip::udp::endpoint destination(
-   *     boost::asio::ip::address::from_string("1.2.3.4"), 12345);
-   * socket.async_send_to(
-   *     boost::asio::buffer(data, size), destination, handler);
-   * @endcode
-   * See the @ref buffer documentation for information on sending multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence, typename WriteHandler>
-  void async_send_to(const ConstBufferSequence& buffers,
-      const endpoint_type& destination, WriteHandler handler)
-  {
-    this->service.async_send_to(this->implementation, buffers, destination, 0,
-        handler);
-  }
-
-  /// Start an asynchronous send.
-  /**
-   * This function is used to asynchronously send a datagram to the specified
-   * remote endpoint. The function call always returns immediately.
-   *
-   * @param buffers One or more data buffers to be sent to the remote endpoint.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param flags Flags specifying how the send call is to be made.
-   *
-   * @param destination The remote endpoint to which the data will be sent.
-   * Copies will be made of the endpoint as required.
-   *
-   * @param handler The handler to be called when the send operation completes.
-   * Copies will be made of the handler as required. The function signature of
-   * the handler must be:
-   * @code void handler(
-   *   const boost::system::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes sent.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * boost::asio::io_service::post().
-   */
-  template <typename ConstBufferSequence, typename WriteHandler>
-  void async_send_to(const ConstBufferSequence& buffers,
-      const endpoint_type& destination, socket_base::message_flags flags,
-      WriteHandler handler)
-  {
-    this->service.async_send_to(this->implementation, buffers, destination,
-        flags, handler);
-  }
-
-  /// Receive some data on a connected socket.
-  /**
-   * This function is used to receive data on the datagram socket. The function
-   * call will block until data has been received successfully or an error
-   * occurs.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   *
-   * @returns The number of bytes received.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   *
-   * @note The receive operation can only be used with a connected socket. Use
-   * the receive_from function to receive data on an unconnected datagram
-   * socket.
-   *
-   * @par Example
-   * To receive into a single data buffer use the @ref buffer function as
-   * follows:
-   * @code socket.receive(boost::asio::buffer(data, size)); @endcode
-   * See the @ref buffer documentation for information on receiving into
-   * multiple buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t receive(const MutableBufferSequence& buffers)
-  {
-    boost::system::error_code ec;
-    std::size_t s = this->service.receive(
-        this->implementation, buffers, 0, ec);
-    boost::asio::detail::throw_error(ec);
-    return s;
-  }
-
-  /// Receive some data on a connected socket.
-  /**
-   * This function is used to receive data on the datagram socket. The function
-   * call will block until data has been received successfully or an error
-   * occurs.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   *
-   * @param flags Flags specifying how the receive call is to be made.
-   *
-   * @returns The number of bytes received.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   *
-   * @note The receive operation can only be used with a connected socket. Use
-   * the receive_from function to receive data on an unconnected datagram
-   * socket.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t receive(const MutableBufferSequence& buffers,
-      socket_base::message_flags flags)
-  {
-    boost::system::error_code ec;
-    std::size_t s = this->service.receive(
-        this->implementation, buffers, flags, ec);
-    boost::asio::detail::throw_error(ec);
-    return s;
-  }
-
-  /// Receive some data on a connected socket.
-  /**
-   * This function is used to receive data on the datagram socket. The function
-   * call will block until data has been received successfully or an error
-   * occurs.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   *
-   * @param flags Flags specifying how the receive call is to be made.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes received.
-   *
-   * @note The receive operation can only be used with a connected socket. Use
-   * the receive_from function to receive data on an unconnected datagram
-   * socket.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t receive(const MutableBufferSequence& buffers,
-      socket_base::message_flags flags, boost::system::error_code& ec)
-  {
-    return this->service.receive(this->implementation, buffers, flags, ec);
-  }
-
-  /// Start an asynchronous receive on a connected socket.
-  /**
-   * This function is used to asynchronously receive data from the datagram
-   * socket. The function call always returns immediately.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param handler The handler to be called when the receive operation
-   * completes. Copies will be made of the handler as required. The function
-   * signature of the handler must be:
-   * @code void handler(
-   *   const boost::system::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes received.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * boost::asio::io_service::post().
-   *
-   * @note The async_receive operation can only be used with a connected socket.
-   * Use the async_receive_from function to receive data on an unconnected
-   * datagram socket.
-   *
-   * @par Example
-   * To receive into a single data buffer use the @ref buffer function as
-   * follows:
-   * @code
-   * socket.async_receive(boost::asio::buffer(data, size), handler);
-   * @endcode
-   * See the @ref buffer documentation for information on receiving into
-   * multiple buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence, typename ReadHandler>
-  void async_receive(const MutableBufferSequence& buffers, ReadHandler handler)
-  {
-    this->service.async_receive(this->implementation, buffers, 0, handler);
-  }
-
-  /// Start an asynchronous receive on a connected socket.
-  /**
-   * This function is used to asynchronously receive data from the datagram
-   * socket. The function call always returns immediately.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param flags Flags specifying how the receive call is to be made.
-   *
-   * @param handler The handler to be called when the receive operation
-   * completes. Copies will be made of the handler as required. The function
-   * signature of the handler must be:
-   * @code void handler(
-   *   const boost::system::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes received.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * boost::asio::io_service::post().
-   *
-   * @note The async_receive operation can only be used with a connected socket.
-   * Use the async_receive_from function to receive data on an unconnected
-   * datagram socket.
-   */
-  template <typename MutableBufferSequence, typename ReadHandler>
-  void async_receive(const MutableBufferSequence& buffers,
-      socket_base::message_flags flags, ReadHandler handler)
-  {
-    this->service.async_receive(this->implementation, buffers, flags, handler);
-  }
-
-  /// Receive a datagram with the endpoint of the sender.
-  /**
-   * This function is used to receive a datagram. The function call will block
-   * until data has been received successfully or an error occurs.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   *
-   * @param sender_endpoint An endpoint object that receives the endpoint of
-   * the remote sender of the datagram.
-   *
-   * @returns The number of bytes received.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   *
-   * @par Example
-   * To receive into a single data buffer use the @ref buffer function as
-   * follows:
-   * @code
-   * boost::asio::ip::udp::endpoint sender_endpoint;
-   * socket.receive_from(
-   *     boost::asio::buffer(data, size), sender_endpoint);
-   * @endcode
-   * See the @ref buffer documentation for information on receiving into
-   * multiple buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t receive_from(const MutableBufferSequence& buffers,
-      endpoint_type& sender_endpoint)
-  {
-    boost::system::error_code ec;
-    std::size_t s = this->service.receive_from(
-        this->implementation, buffers, sender_endpoint, 0, ec);
-    boost::asio::detail::throw_error(ec);
-    return s;
-  }
-  
-  /// Receive a datagram with the endpoint of the sender.
-  /**
-   * This function is used to receive a datagram. The function call will block
-   * until data has been received successfully or an error occurs.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   *
-   * @param sender_endpoint An endpoint object that receives the endpoint of
-   * the remote sender of the datagram.
-   *
-   * @param flags Flags specifying how the receive call is to be made.
-   *
-   * @returns The number of bytes received.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t receive_from(const MutableBufferSequence& buffers,
-      endpoint_type& sender_endpoint, socket_base::message_flags flags)
-  {
-    boost::system::error_code ec;
-    std::size_t s = this->service.receive_from(
-        this->implementation, buffers, sender_endpoint, flags, ec);
-    boost::asio::detail::throw_error(ec);
-    return s;
-  }
-  
-  /// Receive a datagram with the endpoint of the sender.
-  /**
-   * This function is used to receive a datagram. The function call will block
-   * until data has been received successfully or an error occurs.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   *
-   * @param sender_endpoint An endpoint object that receives the endpoint of
-   * the remote sender of the datagram.
-   *
-   * @param flags Flags specifying how the receive call is to be made.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes received.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t receive_from(const MutableBufferSequence& buffers,
-      endpoint_type& sender_endpoint, socket_base::message_flags flags,
-      boost::system::error_code& ec)
-  {
-    return this->service.receive_from(this->implementation, buffers,
-        sender_endpoint, flags, ec);
-  }
-
-  /// Start an asynchronous receive.
-  /**
-   * This function is used to asynchronously receive a datagram. The function
-   * call always returns immediately.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param sender_endpoint An endpoint object that receives the endpoint of
-   * the remote sender of the datagram. Ownership of the sender_endpoint object
-   * is retained by the caller, which must guarantee that it is valid until the
-   * handler is called.
-   *
-   * @param handler The handler to be called when the receive operation
-   * completes. Copies will be made of the handler as required. The function
-   * signature of the handler must be:
-   * @code void handler(
-   *   const boost::system::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes received.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * boost::asio::io_service::post().
-   *
-   * @par Example
-   * To receive into a single data buffer use the @ref buffer function as
-   * follows:
-   * @code socket.async_receive_from(
-   *     boost::asio::buffer(data, size), 0, sender_endpoint, handler); @endcode
-   * See the @ref buffer documentation for information on receiving into
-   * multiple buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence, typename ReadHandler>
-  void async_receive_from(const MutableBufferSequence& buffers,
-      endpoint_type& sender_endpoint, ReadHandler handler)
-  {
-    this->service.async_receive_from(this->implementation, buffers,
-        sender_endpoint, 0, handler);
-  }
-
-  /// Start an asynchronous receive.
-  /**
-   * This function is used to asynchronously receive a datagram. The function
-   * call always returns immediately.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param sender_endpoint An endpoint object that receives the endpoint of
-   * the remote sender of the datagram. Ownership of the sender_endpoint object
-   * is retained by the caller, which must guarantee that it is valid until the
-   * handler is called.
-   *
-   * @param flags Flags specifying how the receive call is to be made.
-   *
-   * @param handler The handler to be called when the receive operation
-   * completes. Copies will be made of the handler as required. The function
-   * signature of the handler must be:
-   * @code void handler(
-   *   const boost::system::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes received.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * boost::asio::io_service::post().
-   */
-  template <typename MutableBufferSequence, typename ReadHandler>
-  void async_receive_from(const MutableBufferSequence& buffers,
-      endpoint_type& sender_endpoint, socket_base::message_flags flags,
-      ReadHandler handler)
-  {
-    this->service.async_receive_from(this->implementation, buffers,
-        sender_endpoint, flags, handler);
-  }
-};
-
-} // namespace asio
-} // namespace boost
-
-#include <boost/asio/detail/pop_options.hpp>
-
-#endif // BOOST_ASIO_BASIC_DATAGRAM_SOCKET_HPP

+ 0 - 447
feng-authnotify/ext/boost/asio/basic_deadline_timer.hpp

@@ -1,447 +0,0 @@
-//
-// basic_deadline_timer.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef BOOST_ASIO_BASIC_DEADLINE_TIMER_HPP
-#define BOOST_ASIO_BASIC_DEADLINE_TIMER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include <boost/asio/detail/push_options.hpp>
-
-#include <boost/asio/detail/push_options.hpp>
-#include <cstddef>
-#include <boost/config.hpp>
-#include <boost/asio/detail/pop_options.hpp>
-
-#include <boost/asio/basic_io_object.hpp>
-#include <boost/asio/deadline_timer_service.hpp>
-#include <boost/asio/error.hpp>
-#include <boost/asio/detail/throw_error.hpp>
-
-namespace boost {
-namespace asio {
-
-/// Provides waitable timer functionality.
-/**
- * The basic_deadline_timer class template provides the ability to perform a
- * blocking or asynchronous wait for a timer to expire.
- *
- * A deadline timer is always in one of two states: "expired" or "not expired".
- * If the wait() or async_wait() function is called on an expired timer, the
- * wait operation will complete immediately.
- *
- * Most applications will use the boost::asio::deadline_timer typedef.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- *
- * @par Examples
- * Performing a blocking wait:
- * @code
- * // Construct a timer without setting an expiry time.
- * boost::asio::deadline_timer timer(io_service);
- *
- * // Set an expiry time relative to now.
- * timer.expires_from_now(boost::posix_time::seconds(5));
- *
- * // Wait for the timer to expire.
- * timer.wait();
- * @endcode
- *
- * @par 
- * Performing an asynchronous wait:
- * @code
- * void handler(const boost::system::error_code& error)
- * {
- *   if (!error)
- *   {
- *     // Timer expired.
- *   }
- * }
- *
- * ...
- *
- * // Construct a timer with an absolute expiry time.
- * boost::asio::deadline_timer timer(io_service,
- *     boost::posix_time::time_from_string("2005-12-07 23:59:59.000"));
- *
- * // Start an asynchronous wait.
- * timer.async_wait(handler);
- * @endcode
- *
- * @par Changing an active deadline_timer's expiry time
- *
- * Changing the expiry time of a timer while there are pending asynchronous
- * waits causes those wait operations to be cancelled. To ensure that the action
- * associated with the timer is performed only once, use something like this:
- * used:
- *
- * @code
- * void on_some_event()
- * {
- *   if (my_timer.expires_from_now(seconds(5)) > 0)
- *   {
- *     // We managed to cancel the timer. Start new asynchronous wait.
- *     my_timer.async_wait(on_timeout);
- *   }
- *   else
- *   {
- *     // Too late, timer has already expired!
- *   }
- * }
- *
- * void on_timeout(const boost::system::error_code& e)
- * {
- *   if (e != boost::asio::error::operation_aborted)
- *   {
- *     // Timer was not cancelled, take necessary action.
- *   }
- * }
- * @endcode
- *
- * @li The boost::asio::basic_deadline_timer::expires_from_now() function
- * cancels any pending asynchronous waits, and returns the number of
- * asynchronous waits that were cancelled. If it returns 0 then you were too
- * late and the wait handler has already been executed, or will soon be
- * executed. If it returns 1 then the wait handler was successfully cancelled.
- *
- * @li If a wait handler is cancelled, the boost::system::error_code passed to
- * it contains the value boost::asio::error::operation_aborted.
- */
-template <typename Time,
-    typename TimeTraits = boost::asio::time_traits<Time>,
-    typename TimerService = deadline_timer_service<Time, TimeTraits> >
-class basic_deadline_timer
-  : public basic_io_object<TimerService>
-{
-public:
-  /// The time traits type.
-  typedef TimeTraits traits_type;
-
-  /// The time type.
-  typedef typename traits_type::time_type time_type;
-
-  /// The duration type.
-  typedef typename traits_type::duration_type duration_type;
-
-  /// Constructor.
-  /**
-   * This constructor creates a timer without setting an expiry time. The
-   * expires_at() or expires_from_now() functions must be called to set an
-   * expiry time before the timer can be waited on.
-   *
-   * @param io_service The io_service object that the timer will use to dispatch
-   * handlers for any asynchronous operations performed on the timer.
-   */
-  explicit basic_deadline_timer(boost::asio::io_service& io_service)
-    : basic_io_object<TimerService>(io_service)
-  {
-  }
-
-  /// Constructor to set a particular expiry time as an absolute time.
-  /**
-   * This constructor creates a timer and sets the expiry time.
-   *
-   * @param io_service The io_service object that the timer will use to dispatch
-   * handlers for any asynchronous operations performed on the timer.
-   *
-   * @param expiry_time The expiry time to be used for the timer, expressed
-   * as an absolute time.
-   */
-  basic_deadline_timer(boost::asio::io_service& io_service,
-      const time_type& expiry_time)
-    : basic_io_object<TimerService>(io_service)
-  {
-    boost::system::error_code ec;
-    this->service.expires_at(this->implementation, expiry_time, ec);
-    boost::asio::detail::throw_error(ec);
-  }
-
-  /// Constructor to set a particular expiry time relative to now.
-  /**
-   * This constructor creates a timer and sets the expiry time.
-   *
-   * @param io_service The io_service object that the timer will use to dispatch
-   * handlers for any asynchronous operations performed on the timer.
-   *
-   * @param expiry_time The expiry time to be used for the timer, relative to
-   * now.
-   */
-  basic_deadline_timer(boost::asio::io_service& io_service,
-      const duration_type& expiry_time)
-    : basic_io_object<TimerService>(io_service)
-  {
-    boost::system::error_code ec;
-    this->service.expires_from_now(this->implementation, expiry_time, ec);
-    boost::asio::detail::throw_error(ec);
-  }
-
-  /// Cancel any asynchronous operations that are waiting on the timer.
-  /**
-   * This function forces the completion of any pending asynchronous wait
-   * operations against the timer. The handler for each cancelled operation will
-   * be invoked with the boost::asio::error::operation_aborted error code.
-   *
-   * Cancelling the timer does not change the expiry time.
-   *
-   * @return The number of asynchronous operations that were cancelled.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   *
-   * @note If the timer has already expired when cancel() is called, then the
-   * handlers for asynchronous wait operations will:
-   *
-   * @li have already been invoked; or
-   *
-   * @li have been queued for invocation in the near future.
-   *
-   * These handlers can no longer be cancelled, and therefore are passed an
-   * error code that indicates the successful completion of the wait operation.
-   */
-  std::size_t cancel()
-  {
-    boost::system::error_code ec;
-    std::size_t s = this->service.cancel(this->implementation, ec);
-    boost::asio::detail::throw_error(ec);
-    return s;
-  }
-
-  /// Cancel any asynchronous operations that are waiting on the timer.
-  /**
-   * This function forces the completion of any pending asynchronous wait
-   * operations against the timer. The handler for each cancelled operation will
-   * be invoked with the boost::asio::error::operation_aborted error code.
-   *
-   * Cancelling the timer does not change the expiry time.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @return The number of asynchronous operations that were cancelled.
-   *
-   * @note If the timer has already expired when cancel() is called, then the
-   * handlers for asynchronous wait operations will:
-   *
-   * @li have already been invoked; or
-   *
-   * @li have been queued for invocation in the near future.
-   *
-   * These handlers can no longer be cancelled, and therefore are passed an
-   * error code that indicates the successful completion of the wait operation.
-   */
-  std::size_t cancel(boost::system::error_code& ec)
-  {
-    return this->service.cancel(this->implementation, ec);
-  }
-
-  /// Get the timer's expiry time as an absolute time.
-  /**
-   * This function may be used to obtain the timer's current expiry time.
-   * Whether the timer has expired or not does not affect this value.
-   */
-  time_type expires_at() const
-  {
-    return this->service.expires_at(this->implementation);
-  }
-
-  /// Set the timer's expiry time as an absolute time.
-  /**
-   * This function sets the expiry time. Any pending asynchronous wait
-   * operations will be cancelled. The handler for each cancelled operation will
-   * be invoked with the boost::asio::error::operation_aborted error code.
-   *
-   * @param expiry_time The expiry time to be used for the timer.
-   *
-   * @return The number of asynchronous operations that were cancelled.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   *
-   * @note If the timer has already expired when expires_at() is called, then
-   * the handlers for asynchronous wait operations will:
-   *
-   * @li have already been invoked; or
-   *
-   * @li have been queued for invocation in the near future.
-   *
-   * These handlers can no longer be cancelled, and therefore are passed an
-   * error code that indicates the successful completion of the wait operation.
-   */
-  std::size_t expires_at(const time_type& expiry_time)
-  {
-    boost::system::error_code ec;
-    std::size_t s = this->service.expires_at(
-        this->implementation, expiry_time, ec);
-    boost::asio::detail::throw_error(ec);
-    return s;
-  }
-
-  /// Set the timer's expiry time as an absolute time.
-  /**
-   * This function sets the expiry time. Any pending asynchronous wait
-   * operations will be cancelled. The handler for each cancelled operation will
-   * be invoked with the boost::asio::error::operation_aborted error code.
-   *
-   * @param expiry_time The expiry time to be used for the timer.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @return The number of asynchronous operations that were cancelled.
-   *
-   * @note If the timer has already expired when expires_at() is called, then
-   * the handlers for asynchronous wait operations will:
-   *
-   * @li have already been invoked; or
-   *
-   * @li have been queued for invocation in the near future.
-   *
-   * These handlers can no longer be cancelled, and therefore are passed an
-   * error code that indicates the successful completion of the wait operation.
-   */
-  std::size_t expires_at(const time_type& expiry_time,
-      boost::system::error_code& ec)
-  {
-    return this->service.expires_at(this->implementation, expiry_time, ec);
-  }
-
-  /// Get the timer's expiry time relative to now.
-  /**
-   * This function may be used to obtain the timer's current expiry time.
-   * Whether the timer has expired or not does not affect this value.
-   */
-  duration_type expires_from_now() const
-  {
-    return this->service.expires_from_now(this->implementation);
-  }
-
-  /// Set the timer's expiry time relative to now.
-  /**
-   * This function sets the expiry time. Any pending asynchronous wait
-   * operations will be cancelled. The handler for each cancelled operation will
-   * be invoked with the boost::asio::error::operation_aborted error code.
-   *
-   * @param expiry_time The expiry time to be used for the timer.
-   *
-   * @return The number of asynchronous operations that were cancelled.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   *
-   * @note If the timer has already expired when expires_from_now() is called,
-   * then the handlers for asynchronous wait operations will:
-   *
-   * @li have already been invoked; or
-   *
-   * @li have been queued for invocation in the near future.
-   *
-   * These handlers can no longer be cancelled, and therefore are passed an
-   * error code that indicates the successful completion of the wait operation.
-   */
-  std::size_t expires_from_now(const duration_type& expiry_time)
-  {
-    boost::system::error_code ec;
-    std::size_t s = this->service.expires_from_now(
-        this->implementation, expiry_time, ec);
-    boost::asio::detail::throw_error(ec);
-    return s;
-  }
-
-  /// Set the timer's expiry time relative to now.
-  /**
-   * This function sets the expiry time. Any pending asynchronous wait
-   * operations will be cancelled. The handler for each cancelled operation will
-   * be invoked with the boost::asio::error::operation_aborted error code.
-   *
-   * @param expiry_time The expiry time to be used for the timer.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @return The number of asynchronous operations that were cancelled.
-   *
-   * @note If the timer has already expired when expires_from_now() is called,
-   * then the handlers for asynchronous wait operations will:
-   *
-   * @li have already been invoked; or
-   *
-   * @li have been queued for invocation in the near future.
-   *
-   * These handlers can no longer be cancelled, and therefore are passed an
-   * error code that indicates the successful completion of the wait operation.
-   */
-  std::size_t expires_from_now(const duration_type& expiry_time,
-      boost::system::error_code& ec)
-  {
-    return this->service.expires_from_now(
-        this->implementation, expiry_time, ec);
-  }
-
-  /// Perform a blocking wait on the timer.
-  /**
-   * This function is used to wait for the timer to expire. This function
-   * blocks and does not return until the timer has expired.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   */
-  void wait()
-  {
-    boost::system::error_code ec;
-    this->service.wait(this->implementation, ec);
-    boost::asio::detail::throw_error(ec);
-  }
-
-  /// Perform a blocking wait on the timer.
-  /**
-   * This function is used to wait for the timer to expire. This function
-   * blocks and does not return until the timer has expired.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  void wait(boost::system::error_code& ec)
-  {
-    this->service.wait(this->implementation, ec);
-  }
-
-  /// Start an asynchronous wait on the timer.
-  /**
-   * This function may be used to initiate an asynchronous wait against the
-   * timer. It always returns immediately.
-   *
-   * For each call to async_wait(), the supplied handler will be called exactly
-   * once. The handler will be called when:
-   *
-   * @li The timer has expired.
-   *
-   * @li The timer was cancelled, in which case the handler is passed the error
-   * code boost::asio::error::operation_aborted.
-   *
-   * @param handler The handler to be called when the timer expires. Copies
-   * will be made of the handler as required. The function signature of the
-   * handler must be:
-   * @code void handler(
-   *   const boost::system::error_code& error // Result of operation.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * boost::asio::io_service::post().
-   */
-  template <typename WaitHandler>
-  void async_wait(WaitHandler handler)
-  {
-    this->service.async_wait(this->implementation, handler);
-  }
-};
-
-} // namespace asio
-} // namespace boost
-
-#include <boost/asio/detail/pop_options.hpp>
-
-#endif // BOOST_ASIO_BASIC_DEADLINE_TIMER_HPP

+ 0 - 99
feng-authnotify/ext/boost/asio/basic_io_object.hpp

@@ -1,99 +0,0 @@
-//
-// basic_io_object.hpp
-// ~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef BOOST_ASIO_BASIC_IO_OBJECT_HPP
-#define BOOST_ASIO_BASIC_IO_OBJECT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include <boost/asio/detail/push_options.hpp>
-
-#include <boost/asio/io_service.hpp>
-#include <boost/asio/detail/noncopyable.hpp>
-
-namespace boost {
-namespace asio {
-
-/// Base class for all I/O objects.
-template <typename IoObjectService>
-class basic_io_object
-  : private noncopyable
-{
-public:
-  /// The type of the service that will be used to provide I/O operations.
-  typedef IoObjectService service_type;
-
-  /// The underlying implementation type of I/O object.
-  typedef typename service_type::implementation_type implementation_type;
-
-  /// (Deprecated: use get_io_service().) Get the io_service associated with
-  /// the object.
-  /**
-   * This function may be used to obtain the io_service object that the I/O
-   * object uses to dispatch handlers for asynchronous operations.
-   *
-   * @return A reference to the io_service object that the I/O object will use
-   * to dispatch handlers. Ownership is not transferred to the caller.
-   */
-  boost::asio::io_service& io_service()
-  {
-    return service.get_io_service();
-  }
-
-  /// Get the io_service associated with the object.
-  /**
-   * This function may be used to obtain the io_service object that the I/O
-   * object uses to dispatch handlers for asynchronous operations.
-   *
-   * @return A reference to the io_service object that the I/O object will use
-   * to dispatch handlers. Ownership is not transferred to the caller.
-   */
-  boost::asio::io_service& get_io_service()
-  {
-    return service.get_io_service();
-  }
-
-protected:
-  /// Construct a basic_io_object.
-  /**
-   * Performs:
-   * @code service.construct(implementation); @endcode
-   */
-  explicit basic_io_object(boost::asio::io_service& io_service)
-    : service(boost::asio::use_service<IoObjectService>(io_service))
-  {
-    service.construct(implementation);
-  }
-
-  /// Protected destructor to prevent deletion through this type.
-  /**
-   * Performs:
-   * @code service.destroy(implementation); @endcode
-   */
-  ~basic_io_object()
-  {
-    service.destroy(implementation);
-  }
-
-  /// The service associated with the I/O object.
-  service_type& service;
-
-  /// The underlying implementation of the I/O object.
-  implementation_type implementation;
-};
-
-} // namespace asio
-} // namespace boost
-
-#include <boost/asio/detail/pop_options.hpp>
-
-#endif // BOOST_ASIO_BASIC_IO_OBJECT_HPP

+ 0 - 800
feng-authnotify/ext/boost/asio/basic_raw_socket.hpp

@@ -1,800 +0,0 @@
-//
-// basic_raw_socket.hpp
-// ~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef BOOST_ASIO_BASIC_RAW_SOCKET_HPP
-#define BOOST_ASIO_BASIC_RAW_SOCKET_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include <boost/asio/detail/push_options.hpp>
-
-#include <boost/asio/detail/push_options.hpp>
-#include <cstddef>
-#include <boost/config.hpp>
-#include <boost/asio/detail/pop_options.hpp>
-
-#include <boost/asio/basic_socket.hpp>
-#include <boost/asio/raw_socket_service.hpp>
-#include <boost/asio/error.hpp>
-#include <boost/asio/detail/throw_error.hpp>
-
-namespace boost {
-namespace asio {
-
-/// Provides raw-oriented socket functionality.
-/**
- * The basic_raw_socket class template provides asynchronous and blocking
- * raw-oriented socket functionality.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- */
-template <typename Protocol,
-    typename RawSocketService = raw_socket_service<Protocol> >
-class basic_raw_socket
-  : public basic_socket<Protocol, RawSocketService>
-{
-public:
-  /// The native representation of a socket.
-  typedef typename RawSocketService::native_type native_type;
-
-  /// The protocol type.
-  typedef Protocol protocol_type;
-
-  /// The endpoint type.
-  typedef typename Protocol::endpoint endpoint_type;
-
-  /// Construct a basic_raw_socket without opening it.
-  /**
-   * This constructor creates a raw socket without opening it. The open()
-   * function must be called before data can be sent or received on the socket.
-   *
-   * @param io_service The io_service object that the raw socket will use
-   * to dispatch handlers for any asynchronous operations performed on the
-   * socket.
-   */
-  explicit basic_raw_socket(boost::asio::io_service& io_service)
-    : basic_socket<Protocol, RawSocketService>(io_service)
-  {
-  }
-
-  /// Construct and open a basic_raw_socket.
-  /**
-   * This constructor creates and opens a raw socket.
-   *
-   * @param io_service The io_service object that the raw socket will use
-   * to dispatch handlers for any asynchronous operations performed on the
-   * socket.
-   *
-   * @param protocol An object specifying protocol parameters to be used.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   */
-  basic_raw_socket(boost::asio::io_service& io_service,
-      const protocol_type& protocol)
-    : basic_socket<Protocol, RawSocketService>(io_service, protocol)
-  {
-  }
-
-  /// Construct a basic_raw_socket, opening it and binding it to the given
-  /// local endpoint.
-  /**
-   * This constructor creates a raw socket and automatically opens it bound
-   * to the specified endpoint on the local machine. The protocol used is the
-   * protocol associated with the given endpoint.
-   *
-   * @param io_service The io_service object that the raw socket will use
-   * to dispatch handlers for any asynchronous operations performed on the
-   * socket.
-   *
-   * @param endpoint An endpoint on the local machine to which the raw
-   * socket will be bound.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   */
-  basic_raw_socket(boost::asio::io_service& io_service,
-      const endpoint_type& endpoint)
-    : basic_socket<Protocol, RawSocketService>(io_service, endpoint)
-  {
-  }
-
-  /// Construct a basic_raw_socket on an existing native socket.
-  /**
-   * This constructor creates a raw socket object to hold an existing
-   * native socket.
-   *
-   * @param io_service The io_service object that the raw socket will use
-   * to dispatch handlers for any asynchronous operations performed on the
-   * socket.
-   *
-   * @param protocol An object specifying protocol parameters to be used.
-   *
-   * @param native_socket The new underlying socket implementation.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   */
-  basic_raw_socket(boost::asio::io_service& io_service,
-      const protocol_type& protocol, const native_type& native_socket)
-    : basic_socket<Protocol, RawSocketService>(
-        io_service, protocol, native_socket)
-  {
-  }
-
-  /// Send some data on a connected socket.
-  /**
-   * This function is used to send data on the raw socket. The function call
-   * will block until the data has been sent successfully or an error occurs.
-   *
-   * @param buffers One ore more data buffers to be sent on the socket.
-   *
-   * @returns The number of bytes sent.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   *
-   * @note The send operation can only be used with a connected socket. Use
-   * the send_to function to send data on an unconnected raw socket.
-   *
-   * @par Example
-   * To send a single data buffer use the @ref buffer function as follows:
-   * @code socket.send(boost::asio::buffer(data, size)); @endcode
-   * See the @ref buffer documentation for information on sending multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t send(const ConstBufferSequence& buffers)
-  {
-    boost::system::error_code ec;
-    std::size_t s = this->service.send(this->implementation, buffers, 0, ec);
-    boost::asio::detail::throw_error(ec);
-    return s;
-  }
-
-  /// Send some data on a connected socket.
-  /**
-   * This function is used to send data on the raw socket. The function call
-   * will block until the data has been sent successfully or an error occurs.
-   *
-   * @param buffers One ore more data buffers to be sent on the socket.
-   *
-   * @param flags Flags specifying how the send call is to be made.
-   *
-   * @returns The number of bytes sent.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   *
-   * @note The send operation can only be used with a connected socket. Use
-   * the send_to function to send data on an unconnected raw socket.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t send(const ConstBufferSequence& buffers,
-      socket_base::message_flags flags)
-  {
-    boost::system::error_code ec;
-    std::size_t s = this->service.send(
-        this->implementation, buffers, flags, ec);
-    boost::asio::detail::throw_error(ec);
-    return s;
-  }
-
-  /// Send some data on a connected socket.
-  /**
-   * This function is used to send data on the raw socket. The function call
-   * will block until the data has been sent successfully or an error occurs.
-   *
-   * @param buffers One or more data buffers to be sent on the socket.
-   *
-   * @param flags Flags specifying how the send call is to be made.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes sent.
-   *
-   * @note The send operation can only be used with a connected socket. Use
-   * the send_to function to send data on an unconnected raw socket.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t send(const ConstBufferSequence& buffers,
-      socket_base::message_flags flags, boost::system::error_code& ec)
-  {
-    return this->service.send(this->implementation, buffers, flags, ec);
-  }
-
-  /// Start an asynchronous send on a connected socket.
-  /**
-   * This function is used to send data on the raw socket. The function call
-   * will block until the data has been sent successfully or an error occurs.
-   *
-   * @param buffers One or more data buffers to be sent on the socket. Although
-   * the buffers object may be copied as necessary, ownership of the underlying
-   * memory blocks is retained by the caller, which must guarantee that they
-   * remain valid until the handler is called.
-   *
-   * @param handler The handler to be called when the send operation completes.
-   * Copies will be made of the handler as required. The function signature of
-   * the handler must be:
-   * @code void handler(
-   *   const boost::system::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes sent.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * boost::asio::io_service::post().
-   *
-   * @note The async_send operation can only be used with a connected socket.
-   * Use the async_send_to function to send data on an unconnected raw
-   * socket.
-   *
-   * @par Example
-   * To send a single data buffer use the @ref buffer function as follows:
-   * @code
-   * socket.async_send(boost::asio::buffer(data, size), handler);
-   * @endcode
-   * See the @ref buffer documentation for information on sending multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence, typename WriteHandler>
-  void async_send(const ConstBufferSequence& buffers, WriteHandler handler)
-  {
-    this->service.async_send(this->implementation, buffers, 0, handler);
-  }
-
-  /// Start an asynchronous send on a connected socket.
-  /**
-   * This function is used to send data on the raw socket. The function call
-   * will block until the data has been sent successfully or an error occurs.
-   *
-   * @param buffers One or more data buffers to be sent on the socket. Although
-   * the buffers object may be copied as necessary, ownership of the underlying
-   * memory blocks is retained by the caller, which must guarantee that they
-   * remain valid until the handler is called.
-   *
-   * @param flags Flags specifying how the send call is to be made.
-   *
-   * @param handler The handler to be called when the send operation completes.
-   * Copies will be made of the handler as required. The function signature of
-   * the handler must be:
-   * @code void handler(
-   *   const boost::system::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes sent.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * boost::asio::io_service::post().
-   *
-   * @note The async_send operation can only be used with a connected socket.
-   * Use the async_send_to function to send data on an unconnected raw
-   * socket.
-   */
-  template <typename ConstBufferSequence, typename WriteHandler>
-  void async_send(const ConstBufferSequence& buffers,
-      socket_base::message_flags flags, WriteHandler handler)
-  {
-    this->service.async_send(this->implementation, buffers, flags, handler);
-  }
-
-  /// Send raw data to the specified endpoint.
-  /**
-   * This function is used to send raw data to the specified remote endpoint.
-   * The function call will block until the data has been sent successfully or
-   * an error occurs.
-   *
-   * @param buffers One or more data buffers to be sent to the remote endpoint.
-   *
-   * @param destination The remote endpoint to which the data will be sent.
-   *
-   * @returns The number of bytes sent.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   *
-   * @par Example
-   * To send a single data buffer use the @ref buffer function as follows:
-   * @code
-   * boost::asio::ip::udp::endpoint destination(
-   *     boost::asio::ip::address::from_string("1.2.3.4"), 12345);
-   * socket.send_to(boost::asio::buffer(data, size), destination);
-   * @endcode
-   * See the @ref buffer documentation for information on sending multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t send_to(const ConstBufferSequence& buffers,
-      const endpoint_type& destination)
-  {
-    boost::system::error_code ec;
-    std::size_t s = this->service.send_to(
-        this->implementation, buffers, destination, 0, ec);
-    boost::asio::detail::throw_error(ec);
-    return s;
-  }
-
-  /// Send raw data to the specified endpoint.
-  /**
-   * This function is used to send raw data to the specified remote endpoint.
-   * The function call will block until the data has been sent successfully or
-   * an error occurs.
-   *
-   * @param buffers One or more data buffers to be sent to the remote endpoint.
-   *
-   * @param destination The remote endpoint to which the data will be sent.
-   *
-   * @param flags Flags specifying how the send call is to be made.
-   *
-   * @returns The number of bytes sent.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t send_to(const ConstBufferSequence& buffers,
-      const endpoint_type& destination, socket_base::message_flags flags)
-  {
-    boost::system::error_code ec;
-    std::size_t s = this->service.send_to(
-        this->implementation, buffers, destination, flags, ec);
-    boost::asio::detail::throw_error(ec);
-    return s;
-  }
-
-  /// Send raw data to the specified endpoint.
-  /**
-   * This function is used to send raw data to the specified remote endpoint.
-   * The function call will block until the data has been sent successfully or
-   * an error occurs.
-   *
-   * @param buffers One or more data buffers to be sent to the remote endpoint.
-   *
-   * @param destination The remote endpoint to which the data will be sent.
-   *
-   * @param flags Flags specifying how the send call is to be made.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes sent.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t send_to(const ConstBufferSequence& buffers,
-      const endpoint_type& destination, socket_base::message_flags flags,
-      boost::system::error_code& ec)
-  {
-    return this->service.send_to(this->implementation,
-        buffers, destination, flags, ec);
-  }
-
-  /// Start an asynchronous send.
-  /**
-   * This function is used to asynchronously send raw data to the specified
-   * remote endpoint. The function call always returns immediately.
-   *
-   * @param buffers One or more data buffers to be sent to the remote endpoint.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param destination The remote endpoint to which the data will be sent.
-   * Copies will be made of the endpoint as required.
-   *
-   * @param handler The handler to be called when the send operation completes.
-   * Copies will be made of the handler as required. The function signature of
-   * the handler must be:
-   * @code void handler(
-   *   const boost::system::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes sent.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * boost::asio::io_service::post().
-   *
-   * @par Example
-   * To send a single data buffer use the @ref buffer function as follows:
-   * @code
-   * boost::asio::ip::udp::endpoint destination(
-   *     boost::asio::ip::address::from_string("1.2.3.4"), 12345);
-   * socket.async_send_to(
-   *     boost::asio::buffer(data, size), destination, handler);
-   * @endcode
-   * See the @ref buffer documentation for information on sending multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence, typename WriteHandler>
-  void async_send_to(const ConstBufferSequence& buffers,
-      const endpoint_type& destination, WriteHandler handler)
-  {
-    this->service.async_send_to(this->implementation, buffers, destination, 0,
-        handler);
-  }
-
-  /// Start an asynchronous send.
-  /**
-   * This function is used to asynchronously send raw data to the specified
-   * remote endpoint. The function call always returns immediately.
-   *
-   * @param buffers One or more data buffers to be sent to the remote endpoint.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param flags Flags specifying how the send call is to be made.
-   *
-   * @param destination The remote endpoint to which the data will be sent.
-   * Copies will be made of the endpoint as required.
-   *
-   * @param handler The handler to be called when the send operation completes.
-   * Copies will be made of the handler as required. The function signature of
-   * the handler must be:
-   * @code void handler(
-   *   const boost::system::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes sent.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * boost::asio::io_service::post().
-   */
-  template <typename ConstBufferSequence, typename WriteHandler>
-  void async_send_to(const ConstBufferSequence& buffers,
-      const endpoint_type& destination, socket_base::message_flags flags,
-      WriteHandler handler)
-  {
-    this->service.async_send_to(this->implementation, buffers, destination,
-        flags, handler);
-  }
-
-  /// Receive some data on a connected socket.
-  /**
-   * This function is used to receive data on the raw socket. The function
-   * call will block until data has been received successfully or an error
-   * occurs.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   *
-   * @returns The number of bytes received.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   *
-   * @note The receive operation can only be used with a connected socket. Use
-   * the receive_from function to receive data on an unconnected raw
-   * socket.
-   *
-   * @par Example
-   * To receive into a single data buffer use the @ref buffer function as
-   * follows:
-   * @code socket.receive(boost::asio::buffer(data, size)); @endcode
-   * See the @ref buffer documentation for information on receiving into
-   * multiple buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t receive(const MutableBufferSequence& buffers)
-  {
-    boost::system::error_code ec;
-    std::size_t s = this->service.receive(
-        this->implementation, buffers, 0, ec);
-    boost::asio::detail::throw_error(ec);
-    return s;
-  }
-
-  /// Receive some data on a connected socket.
-  /**
-   * This function is used to receive data on the raw socket. The function
-   * call will block until data has been received successfully or an error
-   * occurs.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   *
-   * @param flags Flags specifying how the receive call is to be made.
-   *
-   * @returns The number of bytes received.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   *
-   * @note The receive operation can only be used with a connected socket. Use
-   * the receive_from function to receive data on an unconnected raw
-   * socket.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t receive(const MutableBufferSequence& buffers,
-      socket_base::message_flags flags)
-  {
-    boost::system::error_code ec;
-    std::size_t s = this->service.receive(
-        this->implementation, buffers, flags, ec);
-    boost::asio::detail::throw_error(ec);
-    return s;
-  }
-
-  /// Receive some data on a connected socket.
-  /**
-   * This function is used to receive data on the raw socket. The function
-   * call will block until data has been received successfully or an error
-   * occurs.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   *
-   * @param flags Flags specifying how the receive call is to be made.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes received.
-   *
-   * @note The receive operation can only be used with a connected socket. Use
-   * the receive_from function to receive data on an unconnected raw
-   * socket.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t receive(const MutableBufferSequence& buffers,
-      socket_base::message_flags flags, boost::system::error_code& ec)
-  {
-    return this->service.receive(this->implementation, buffers, flags, ec);
-  }
-
-  /// Start an asynchronous receive on a connected socket.
-  /**
-   * This function is used to asynchronously receive data from the raw
-   * socket. The function call always returns immediately.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param handler The handler to be called when the receive operation
-   * completes. Copies will be made of the handler as required. The function
-   * signature of the handler must be:
-   * @code void handler(
-   *   const boost::system::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes received.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * boost::asio::io_service::post().
-   *
-   * @note The async_receive operation can only be used with a connected socket.
-   * Use the async_receive_from function to receive data on an unconnected
-   * raw socket.
-   *
-   * @par Example
-   * To receive into a single data buffer use the @ref buffer function as
-   * follows:
-   * @code
-   * socket.async_receive(boost::asio::buffer(data, size), handler);
-   * @endcode
-   * See the @ref buffer documentation for information on receiving into
-   * multiple buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence, typename ReadHandler>
-  void async_receive(const MutableBufferSequence& buffers, ReadHandler handler)
-  {
-    this->service.async_receive(this->implementation, buffers, 0, handler);
-  }
-
-  /// Start an asynchronous receive on a connected socket.
-  /**
-   * This function is used to asynchronously receive data from the raw
-   * socket. The function call always returns immediately.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param flags Flags specifying how the receive call is to be made.
-   *
-   * @param handler The handler to be called when the receive operation
-   * completes. Copies will be made of the handler as required. The function
-   * signature of the handler must be:
-   * @code void handler(
-   *   const boost::system::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes received.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * boost::asio::io_service::post().
-   *
-   * @note The async_receive operation can only be used with a connected socket.
-   * Use the async_receive_from function to receive data on an unconnected
-   * raw socket.
-   */
-  template <typename MutableBufferSequence, typename ReadHandler>
-  void async_receive(const MutableBufferSequence& buffers,
-      socket_base::message_flags flags, ReadHandler handler)
-  {
-    this->service.async_receive(this->implementation, buffers, flags, handler);
-  }
-
-  /// Receive raw data with the endpoint of the sender.
-  /**
-   * This function is used to receive raw data. The function call will block
-   * until data has been received successfully or an error occurs.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   *
-   * @param sender_endpoint An endpoint object that receives the endpoint of
-   * the remote sender of the data.
-   *
-   * @returns The number of bytes received.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   *
-   * @par Example
-   * To receive into a single data buffer use the @ref buffer function as
-   * follows:
-   * @code
-   * boost::asio::ip::udp::endpoint sender_endpoint;
-   * socket.receive_from(
-   *     boost::asio::buffer(data, size), sender_endpoint);
-   * @endcode
-   * See the @ref buffer documentation for information on receiving into
-   * multiple buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t receive_from(const MutableBufferSequence& buffers,
-      endpoint_type& sender_endpoint)
-  {
-    boost::system::error_code ec;
-    std::size_t s = this->service.receive_from(
-        this->implementation, buffers, sender_endpoint, 0, ec);
-    boost::asio::detail::throw_error(ec);
-    return s;
-  }
-  
-  /// Receive raw data with the endpoint of the sender.
-  /**
-   * This function is used to receive raw data. The function call will block
-   * until data has been received successfully or an error occurs.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   *
-   * @param sender_endpoint An endpoint object that receives the endpoint of
-   * the remote sender of the data.
-   *
-   * @param flags Flags specifying how the receive call is to be made.
-   *
-   * @returns The number of bytes received.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t receive_from(const MutableBufferSequence& buffers,
-      endpoint_type& sender_endpoint, socket_base::message_flags flags)
-  {
-    boost::system::error_code ec;
-    std::size_t s = this->service.receive_from(
-        this->implementation, buffers, sender_endpoint, flags, ec);
-    boost::asio::detail::throw_error(ec);
-    return s;
-  }
-  
-  /// Receive raw data with the endpoint of the sender.
-  /**
-   * This function is used to receive raw data. The function call will block
-   * until data has been received successfully or an error occurs.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   *
-   * @param sender_endpoint An endpoint object that receives the endpoint of
-   * the remote sender of the data.
-   *
-   * @param flags Flags specifying how the receive call is to be made.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes received.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t receive_from(const MutableBufferSequence& buffers,
-      endpoint_type& sender_endpoint, socket_base::message_flags flags,
-      boost::system::error_code& ec)
-  {
-    return this->service.receive_from(this->implementation, buffers,
-        sender_endpoint, flags, ec);
-  }
-
-  /// Start an asynchronous receive.
-  /**
-   * This function is used to asynchronously receive raw data. The function
-   * call always returns immediately.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param sender_endpoint An endpoint object that receives the endpoint of
-   * the remote sender of the data. Ownership of the sender_endpoint object
-   * is retained by the caller, which must guarantee that it is valid until the
-   * handler is called.
-   *
-   * @param handler The handler to be called when the receive operation
-   * completes. Copies will be made of the handler as required. The function
-   * signature of the handler must be:
-   * @code void handler(
-   *   const boost::system::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes received.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * boost::asio::io_service::post().
-   *
-   * @par Example
-   * To receive into a single data buffer use the @ref buffer function as
-   * follows:
-   * @code socket.async_receive_from(
-   *     boost::asio::buffer(data, size), 0, sender_endpoint, handler); @endcode
-   * See the @ref buffer documentation for information on receiving into
-   * multiple buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence, typename ReadHandler>
-  void async_receive_from(const MutableBufferSequence& buffers,
-      endpoint_type& sender_endpoint, ReadHandler handler)
-  {
-    this->service.async_receive_from(this->implementation, buffers,
-        sender_endpoint, 0, handler);
-  }
-
-  /// Start an asynchronous receive.
-  /**
-   * This function is used to asynchronously receive raw data. The function
-   * call always returns immediately.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param sender_endpoint An endpoint object that receives the endpoint of
-   * the remote sender of the data. Ownership of the sender_endpoint object
-   * is retained by the caller, which must guarantee that it is valid until the
-   * handler is called.
-   *
-   * @param flags Flags specifying how the receive call is to be made.
-   *
-   * @param handler The handler to be called when the receive operation
-   * completes. Copies will be made of the handler as required. The function
-   * signature of the handler must be:
-   * @code void handler(
-   *   const boost::system::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes received.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * boost::asio::io_service::post().
-   */
-  template <typename MutableBufferSequence, typename ReadHandler>
-  void async_receive_from(const MutableBufferSequence& buffers,
-      endpoint_type& sender_endpoint, socket_base::message_flags flags,
-      ReadHandler handler)
-  {
-    this->service.async_receive_from(this->implementation, buffers,
-        sender_endpoint, flags, handler);
-  }
-};
-
-} // namespace asio
-} // namespace boost
-
-#include <boost/asio/detail/pop_options.hpp>
-
-#endif // BOOST_ASIO_BASIC_RAW_SOCKET_HPP

+ 0 - 624
feng-authnotify/ext/boost/asio/basic_serial_port.hpp

@@ -1,624 +0,0 @@
-//
-// basic_serial_port.hpp
-// ~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef BOOST_ASIO_BASIC_SERIAL_PORT_HPP
-#define BOOST_ASIO_BASIC_SERIAL_PORT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include <boost/asio/detail/push_options.hpp>
-
-#include <boost/asio/detail/push_options.hpp>
-#include <string>
-#include <boost/config.hpp>
-#include <boost/asio/detail/pop_options.hpp>
-
-#include <boost/asio/basic_io_object.hpp>
-#include <boost/asio/error.hpp>
-#include <boost/asio/serial_port_base.hpp>
-#include <boost/asio/serial_port_service.hpp>
-#include <boost/asio/detail/throw_error.hpp>
-
-#if defined(BOOST_ASIO_HAS_SERIAL_PORT) \
-  || defined(GENERATING_DOCUMENTATION)
-
-namespace boost {
-namespace asio {
-
-/// Provides serial port functionality.
-/**
- * The basic_serial_port class template provides functionality that is common
- * to all serial ports.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- */
-template <typename SerialPortService = serial_port_service>
-class basic_serial_port
-  : public basic_io_object<SerialPortService>,
-    public serial_port_base
-{
-public:
-  /// The native representation of a serial port.
-  typedef typename SerialPortService::native_type native_type;
-
-  /// A basic_serial_port is always the lowest layer.
-  typedef basic_serial_port<SerialPortService> lowest_layer_type;
-
-  /// Construct a basic_serial_port without opening it.
-  /**
-   * This constructor creates a serial port without opening it.
-   *
-   * @param io_service The io_service object that the serial port will use to
-   * dispatch handlers for any asynchronous operations performed on the port.
-   */
-  explicit basic_serial_port(boost::asio::io_service& io_service)
-    : basic_io_object<SerialPortService>(io_service)
-  {
-  }
-
-  /// Construct and open a basic_serial_port.
-  /**
-   * This constructor creates and opens a serial port for the specified device
-   * name.
-   *
-   * @param io_service The io_service object that the serial port will use to
-   * dispatch handlers for any asynchronous operations performed on the port.
-   *
-   * @param device The platform-specific device name for this serial
-   * port.
-   */
-  explicit basic_serial_port(boost::asio::io_service& io_service,
-      const char* device)
-    : basic_io_object<SerialPortService>(io_service)
-  {
-    boost::system::error_code ec;
-    this->service.open(this->implementation, device, ec);
-    boost::asio::detail::throw_error(ec);
-  }
-
-  /// Construct and open a basic_serial_port.
-  /**
-   * This constructor creates and opens a serial port for the specified device
-   * name.
-   *
-   * @param io_service The io_service object that the serial port will use to
-   * dispatch handlers for any asynchronous operations performed on the port.
-   *
-   * @param device The platform-specific device name for this serial
-   * port.
-   */
-  explicit basic_serial_port(boost::asio::io_service& io_service,
-      const std::string& device)
-    : basic_io_object<SerialPortService>(io_service)
-  {
-    boost::system::error_code ec;
-    this->service.open(this->implementation, device, ec);
-    boost::asio::detail::throw_error(ec);
-  }
-
-  /// Construct a basic_serial_port on an existing native serial port.
-  /**
-   * This constructor creates a serial port object to hold an existing native
-   * serial port.
-   *
-   * @param io_service The io_service object that the serial port will use to
-   * dispatch handlers for any asynchronous operations performed on the port.
-   *
-   * @param native_serial_port A native serial port.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   */
-  basic_serial_port(boost::asio::io_service& io_service,
-      const native_type& native_serial_port)
-    : basic_io_object<SerialPortService>(io_service)
-  {
-    boost::system::error_code ec;
-    this->service.assign(this->implementation, native_serial_port, ec);
-    boost::asio::detail::throw_error(ec);
-  }
-
-  /// Get a reference to the lowest layer.
-  /**
-   * This function returns a reference to the lowest layer in a stack of
-   * layers. Since a basic_serial_port cannot contain any further layers, it
-   * simply returns a reference to itself.
-   *
-   * @return A reference to the lowest layer in the stack of layers. Ownership
-   * is not transferred to the caller.
-   */
-  lowest_layer_type& lowest_layer()
-  {
-    return *this;
-  }
-
-  /// Get a const reference to the lowest layer.
-  /**
-   * This function returns a const reference to the lowest layer in a stack of
-   * layers. Since a basic_serial_port cannot contain any further layers, it
-   * simply returns a reference to itself.
-   *
-   * @return A const reference to the lowest layer in the stack of layers.
-   * Ownership is not transferred to the caller.
-   */
-  const lowest_layer_type& lowest_layer() const
-  {
-    return *this;
-  }
-
-  /// Open the serial port using the specified device name.
-  /**
-   * This function opens the serial port for the specified device name.
-   *
-   * @param device The platform-specific device name.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   */
-  void open(const std::string& device)
-  {
-    boost::system::error_code ec;
-    this->service.open(this->implementation, device, ec);
-    boost::asio::detail::throw_error(ec);
-  }
-
-  /// Open the serial port using the specified device name.
-  /**
-   * This function opens the serial port using the given platform-specific
-   * device name.
-   *
-   * @param device The platform-specific device name.
-   *
-   * @param ec Set the indicate what error occurred, if any.
-   */
-  boost::system::error_code open(const std::string& device,
-      boost::system::error_code& ec)
-  {
-    return this->service.open(this->implementation, device, ec);
-  }
-
-  /// Assign an existing native serial port to the serial port.
-  /*
-   * This function opens the serial port to hold an existing native serial port.
-   *
-   * @param native_serial_port A native serial port.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   */
-  void assign(const native_type& native_serial_port)
-  {
-    boost::system::error_code ec;
-    this->service.assign(this->implementation, native_serial_port, ec);
-    boost::asio::detail::throw_error(ec);
-  }
-
-  /// Assign an existing native serial port to the serial port.
-  /*
-   * This function opens the serial port to hold an existing native serial port.
-   *
-   * @param native_serial_port A native serial port.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  boost::system::error_code assign(const native_type& native_serial_port,
-      boost::system::error_code& ec)
-  {
-    return this->service.assign(this->implementation, native_serial_port, ec);
-  }
-
-  /// Determine whether the serial port is open.
-  bool is_open() const
-  {
-    return this->service.is_open(this->implementation);
-  }
-
-  /// Close the serial port.
-  /**
-   * This function is used to close the serial port. Any asynchronous read or
-   * write operations will be cancelled immediately, and will complete with the
-   * boost::asio::error::operation_aborted error.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   */
-  void close()
-  {
-    boost::system::error_code ec;
-    this->service.close(this->implementation, ec);
-    boost::asio::detail::throw_error(ec);
-  }
-
-  /// Close the serial port.
-  /**
-   * This function is used to close the serial port. Any asynchronous read or
-   * write operations will be cancelled immediately, and will complete with the
-   * boost::asio::error::operation_aborted error.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  boost::system::error_code close(boost::system::error_code& ec)
-  {
-    return this->service.close(this->implementation, ec);
-  }
-
-  /// Get the native serial port representation.
-  /**
-   * This function may be used to obtain the underlying representation of the
-   * serial port. This is intended to allow access to native serial port
-   * functionality that is not otherwise provided.
-   */
-  native_type native()
-  {
-    return this->service.native(this->implementation);
-  }
-
-  /// Cancel all asynchronous operations associated with the serial port.
-  /**
-   * This function causes all outstanding asynchronous read or write operations
-   * to finish immediately, and the handlers for cancelled operations will be
-   * passed the boost::asio::error::operation_aborted error.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   */
-  void cancel()
-  {
-    boost::system::error_code ec;
-    this->service.cancel(this->implementation, ec);
-    boost::asio::detail::throw_error(ec);
-  }
-
-  /// Cancel all asynchronous operations associated with the serial port.
-  /**
-   * This function causes all outstanding asynchronous read or write operations
-   * to finish immediately, and the handlers for cancelled operations will be
-   * passed the boost::asio::error::operation_aborted error.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  boost::system::error_code cancel(boost::system::error_code& ec)
-  {
-    return this->service.cancel(this->implementation, ec);
-  }
-
-  /// Send a break sequence to the serial port.
-  /**
-   * This function causes a break sequence of platform-specific duration to be
-   * sent out the serial port.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   */
-  void send_break()
-  {
-    boost::system::error_code ec;
-    this->service.send_break(this->implementation, ec);
-    boost::asio::detail::throw_error(ec);
-  }
-
-  /// Send a break sequence to the serial port.
-  /**
-   * This function causes a break sequence of platform-specific duration to be
-   * sent out the serial port.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  boost::system::error_code send_break(boost::system::error_code& ec)
-  {
-    return this->service.send_break(this->implementation, ec);
-  }
-
-  /// Set an option on the serial port.
-  /**
-   * This function is used to set an option on the serial port.
-   *
-   * @param option The option value to be set on the serial port.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   *
-   * @sa SettableSerialPortOption @n
-   * boost::asio::serial_port_base::baud_rate @n
-   * boost::asio::serial_port_base::flow_control @n
-   * boost::asio::serial_port_base::parity @n
-   * boost::asio::serial_port_base::stop_bits @n
-   * boost::asio::serial_port_base::character_size
-   */
-  template <typename SettableSerialPortOption>
-  void set_option(const SettableSerialPortOption& option)
-  {
-    boost::system::error_code ec;
-    this->service.set_option(this->implementation, option, ec);
-    boost::asio::detail::throw_error(ec);
-  }
-
-  /// Set an option on the serial port.
-  /**
-   * This function is used to set an option on the serial port.
-   *
-   * @param option The option value to be set on the serial port.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @sa SettableSerialPortOption @n
-   * boost::asio::serial_port_base::baud_rate @n
-   * boost::asio::serial_port_base::flow_control @n
-   * boost::asio::serial_port_base::parity @n
-   * boost::asio::serial_port_base::stop_bits @n
-   * boost::asio::serial_port_base::character_size
-   */
-  template <typename SettableSerialPortOption>
-  boost::system::error_code set_option(const SettableSerialPortOption& option,
-      boost::system::error_code& ec)
-  {
-    return this->service.set_option(this->implementation, option, ec);
-  }
-
-  /// Get an option from the serial port.
-  /**
-   * This function is used to get the current value of an option on the serial
-   * port.
-   *
-   * @param option The option value to be obtained from the serial port.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   *
-   * @sa GettableSerialPortOption @n
-   * boost::asio::serial_port_base::baud_rate @n
-   * boost::asio::serial_port_base::flow_control @n
-   * boost::asio::serial_port_base::parity @n
-   * boost::asio::serial_port_base::stop_bits @n
-   * boost::asio::serial_port_base::character_size
-   */
-  template <typename GettableSerialPortOption>
-  void get_option(GettableSerialPortOption& option)
-  {
-    boost::system::error_code ec;
-    this->service.get_option(this->implementation, option, ec);
-    boost::asio::detail::throw_error(ec);
-  }
-
-  /// Get an option from the serial port.
-  /**
-   * This function is used to get the current value of an option on the serial
-   * port.
-   *
-   * @param option The option value to be obtained from the serial port.
-   *
-   * @param ec Set to indicate what error occured, if any.
-   *
-   * @sa GettableSerialPortOption @n
-   * boost::asio::serial_port_base::baud_rate @n
-   * boost::asio::serial_port_base::flow_control @n
-   * boost::asio::serial_port_base::parity @n
-   * boost::asio::serial_port_base::stop_bits @n
-   * boost::asio::serial_port_base::character_size
-   */
-  template <typename GettableSerialPortOption>
-  boost::system::error_code get_option(GettableSerialPortOption& option,
-      boost::system::error_code& ec)
-  {
-    return this->service.get_option(this->implementation, option, ec);
-  }
-
-  /// Write some data to the serial port.
-  /**
-   * This function is used to write data to the serial port. The function call
-   * will block until one or more bytes of the data has been written
-   * successfully, or until an error occurs.
-   *
-   * @param buffers One or more data buffers to be written to the serial port.
-   *
-   * @returns The number of bytes written.
-   *
-   * @throws boost::system::system_error Thrown on failure. An error code of
-   * boost::asio::error::eof indicates that the connection was closed by the
-   * peer.
-   *
-   * @note The write_some operation may not transmit all of the data to the
-   * peer. Consider using the @ref write function if you need to ensure that
-   * all data is written before the blocking operation completes.
-   *
-   * @par Example
-   * To write a single data buffer use the @ref buffer function as follows:
-   * @code
-   * serial_port.write_some(boost::asio::buffer(data, size));
-   * @endcode
-   * See the @ref buffer documentation for information on writing multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t write_some(const ConstBufferSequence& buffers)
-  {
-    boost::system::error_code ec;
-    std::size_t s = this->service.write_some(this->implementation, buffers, ec);
-    boost::asio::detail::throw_error(ec);
-    return s;
-  }
-
-  /// Write some data to the serial port.
-  /**
-   * This function is used to write data to the serial port. The function call
-   * will block until one or more bytes of the data has been written
-   * successfully, or until an error occurs.
-   *
-   * @param buffers One or more data buffers to be written to the serial port.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes written. Returns 0 if an error occurred.
-   *
-   * @note The write_some operation may not transmit all of the data to the
-   * peer. Consider using the @ref write function if you need to ensure that
-   * all data is written before the blocking operation completes.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t write_some(const ConstBufferSequence& buffers,
-      boost::system::error_code& ec)
-  {
-    return this->service.write_some(this->implementation, buffers, ec);
-  }
-
-  /// Start an asynchronous write.
-  /**
-   * This function is used to asynchronously write data to the serial port.
-   * The function call always returns immediately.
-   *
-   * @param buffers One or more data buffers to be written to the serial port.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param handler The handler to be called when the write operation completes.
-   * Copies will be made of the handler as required. The function signature of
-   * the handler must be:
-   * @code void handler(
-   *   const boost::system::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes written.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * boost::asio::io_service::post().
-   *
-   * @note The write operation may not transmit all of the data to the peer.
-   * Consider using the @ref async_write function if you need to ensure that all
-   * data is written before the asynchronous operation completes.
-   *
-   * @par Example
-   * To write a single data buffer use the @ref buffer function as follows:
-   * @code
-   * serial_port.async_write_some(boost::asio::buffer(data, size), handler);
-   * @endcode
-   * See the @ref buffer documentation for information on writing multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence, typename WriteHandler>
-  void async_write_some(const ConstBufferSequence& buffers,
-      WriteHandler handler)
-  {
-    this->service.async_write_some(this->implementation, buffers, handler);
-  }
-
-  /// Read some data from the serial port.
-  /**
-   * This function is used to read data from the serial port. The function
-   * call will block until one or more bytes of data has been read successfully,
-   * or until an error occurs.
-   *
-   * @param buffers One or more buffers into which the data will be read.
-   *
-   * @returns The number of bytes read.
-   *
-   * @throws boost::system::system_error Thrown on failure. An error code of
-   * boost::asio::error::eof indicates that the connection was closed by the
-   * peer.
-   *
-   * @note The read_some operation may not read all of the requested number of
-   * bytes. Consider using the @ref read function if you need to ensure that
-   * the requested amount of data is read before the blocking operation
-   * completes.
-   *
-   * @par Example
-   * To read into a single data buffer use the @ref buffer function as follows:
-   * @code
-   * serial_port.read_some(boost::asio::buffer(data, size));
-   * @endcode
-   * See the @ref buffer documentation for information on reading into multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t read_some(const MutableBufferSequence& buffers)
-  {
-    boost::system::error_code ec;
-    std::size_t s = this->service.read_some(this->implementation, buffers, ec);
-    boost::asio::detail::throw_error(ec);
-    return s;
-  }
-
-  /// Read some data from the serial port.
-  /**
-   * This function is used to read data from the serial port. The function
-   * call will block until one or more bytes of data has been read successfully,
-   * or until an error occurs.
-   *
-   * @param buffers One or more buffers into which the data will be read.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes read. Returns 0 if an error occurred.
-   *
-   * @note The read_some operation may not read all of the requested number of
-   * bytes. Consider using the @ref read function if you need to ensure that
-   * the requested amount of data is read before the blocking operation
-   * completes.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t read_some(const MutableBufferSequence& buffers,
-      boost::system::error_code& ec)
-  {
-    return this->service.read_some(this->implementation, buffers, ec);
-  }
-
-  /// Start an asynchronous read.
-  /**
-   * This function is used to asynchronously read data from the serial port.
-   * The function call always returns immediately.
-   *
-   * @param buffers One or more buffers into which the data will be read.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param handler The handler to be called when the read operation completes.
-   * Copies will be made of the handler as required. The function signature of
-   * the handler must be:
-   * @code void handler(
-   *   const boost::system::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes read.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * boost::asio::io_service::post().
-   *
-   * @note The read operation may not read all of the requested number of bytes.
-   * Consider using the @ref async_read function if you need to ensure that the
-   * requested amount of data is read before the asynchronous operation
-   * completes.
-   *
-   * @par Example
-   * To read into a single data buffer use the @ref buffer function as follows:
-   * @code
-   * serial_port.async_read_some(boost::asio::buffer(data, size), handler);
-   * @endcode
-   * See the @ref buffer documentation for information on reading into multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence, typename ReadHandler>
-  void async_read_some(const MutableBufferSequence& buffers,
-      ReadHandler handler)
-  {
-    this->service.async_read_some(this->implementation, buffers, handler);
-  }
-};
-
-} // namespace asio
-} // namespace boost
-
-#endif // defined(BOOST_ASIO_HAS_SERIAL_PORT)
-       //   || defined(GENERATING_DOCUMENTATION)
-
-#include <boost/asio/detail/pop_options.hpp>
-
-#endif // BOOST_ASIO_BASIC_SERIAL_PORT_HPP

File diff suppressed because it is too large
+ 0 - 1065
feng-authnotify/ext/boost/asio/basic_socket.hpp


+ 0 - 826
feng-authnotify/ext/boost/asio/basic_socket_acceptor.hpp

@@ -1,826 +0,0 @@
-//
-// basic_socket_acceptor.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef BOOST_ASIO_BASIC_SOCKET_ACCEPTOR_HPP
-#define BOOST_ASIO_BASIC_SOCKET_ACCEPTOR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include <boost/asio/detail/push_options.hpp>
-
-#include <boost/asio/basic_io_object.hpp>
-#include <boost/asio/basic_socket.hpp>
-#include <boost/asio/error.hpp>
-#include <boost/asio/socket_acceptor_service.hpp>
-#include <boost/asio/socket_base.hpp>
-#include <boost/asio/detail/throw_error.hpp>
-
-namespace boost {
-namespace asio {
-
-/// Provides the ability to accept new connections.
-/**
- * The basic_socket_acceptor class template is used for accepting new socket
- * connections.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- *
- * @par Example
- * Opening a socket acceptor with the SO_REUSEADDR option enabled:
- * @code
- * boost::asio::ip::tcp::acceptor acceptor(io_service);
- * boost::asio::ip::tcp::endpoint endpoint(boost::asio::ip::tcp::v4(), port);
- * acceptor.open(endpoint.protocol());
- * acceptor.set_option(boost::asio::ip::tcp::acceptor::reuse_address(true));
- * acceptor.bind(endpoint);
- * acceptor.listen();
- * @endcode
- */
-template <typename Protocol,
-    typename SocketAcceptorService = socket_acceptor_service<Protocol> >
-class basic_socket_acceptor
-  : public basic_io_object<SocketAcceptorService>,
-    public socket_base
-{
-public:
-  /// The native representation of an acceptor.
-  typedef typename SocketAcceptorService::native_type native_type;
-
-  /// The protocol type.
-  typedef Protocol protocol_type;
-
-  /// The endpoint type.
-  typedef typename Protocol::endpoint endpoint_type;
-
-  /// Construct an acceptor without opening it.
-  /**
-   * This constructor creates an acceptor without opening it to listen for new
-   * connections. The open() function must be called before the acceptor can
-   * accept new socket connections.
-   *
-   * @param io_service The io_service object that the acceptor will use to
-   * dispatch handlers for any asynchronous operations performed on the
-   * acceptor.
-   */
-  explicit basic_socket_acceptor(boost::asio::io_service& io_service)
-    : basic_io_object<SocketAcceptorService>(io_service)
-  {
-  }
-
-  /// Construct an open acceptor.
-  /**
-   * This constructor creates an acceptor and automatically opens it.
-   *
-   * @param io_service The io_service object that the acceptor will use to
-   * dispatch handlers for any asynchronous operations performed on the
-   * acceptor.
-   *
-   * @param protocol An object specifying protocol parameters to be used.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   */
-  basic_socket_acceptor(boost::asio::io_service& io_service,
-      const protocol_type& protocol)
-    : basic_io_object<SocketAcceptorService>(io_service)
-  {
-    boost::system::error_code ec;
-    this->service.open(this->implementation, protocol, ec);
-    boost::asio::detail::throw_error(ec);
-  }
-
-  /// Construct an acceptor opened on the given endpoint.
-  /**
-   * This constructor creates an acceptor and automatically opens it to listen
-   * for new connections on the specified endpoint.
-   *
-   * @param io_service The io_service object that the acceptor will use to
-   * dispatch handlers for any asynchronous operations performed on the
-   * acceptor.
-   *
-   * @param endpoint An endpoint on the local machine on which the acceptor
-   * will listen for new connections.
-   *
-   * @param reuse_addr Whether the constructor should set the socket option
-   * socket_base::reuse_address.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   *
-   * @note This constructor is equivalent to the following code:
-   * @code
-   * basic_socket_acceptor<Protocol> acceptor(io_service);
-   * acceptor.open(endpoint.protocol());
-   * if (reuse_addr)
-   *   acceptor.set_option(socket_base::reuse_address(true));
-   * acceptor.bind(endpoint);
-   * acceptor.listen(listen_backlog);
-   * @endcode
-   */
-  basic_socket_acceptor(boost::asio::io_service& io_service,
-      const endpoint_type& endpoint, bool reuse_addr = true)
-    : basic_io_object<SocketAcceptorService>(io_service)
-  {
-    boost::system::error_code ec;
-    this->service.open(this->implementation, endpoint.protocol(), ec);
-    boost::asio::detail::throw_error(ec);
-    if (reuse_addr)
-    {
-      this->service.set_option(this->implementation,
-          socket_base::reuse_address(true), ec);
-      boost::asio::detail::throw_error(ec);
-    }
-    this->service.bind(this->implementation, endpoint, ec);
-    boost::asio::detail::throw_error(ec);
-    this->service.listen(this->implementation,
-        socket_base::max_connections, ec);
-    boost::asio::detail::throw_error(ec);
-  }
-
-  /// Construct a basic_socket_acceptor on an existing native acceptor.
-  /**
-   * This constructor creates an acceptor object to hold an existing native
-   * acceptor.
-   *
-   * @param io_service The io_service object that the acceptor will use to
-   * dispatch handlers for any asynchronous operations performed on the
-   * acceptor.
-   *
-   * @param protocol An object specifying protocol parameters to be used.
-   *
-   * @param native_acceptor A native acceptor.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   */
-  basic_socket_acceptor(boost::asio::io_service& io_service,
-      const protocol_type& protocol, const native_type& native_acceptor)
-    : basic_io_object<SocketAcceptorService>(io_service)
-  {
-    boost::system::error_code ec;
-    this->service.assign(this->implementation, protocol, native_acceptor, ec);
-    boost::asio::detail::throw_error(ec);
-  }
-
-  /// Open the acceptor using the specified protocol.
-  /**
-   * This function opens the socket acceptor so that it will use the specified
-   * protocol.
-   *
-   * @param protocol An object specifying which protocol is to be used.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   *
-   * @par Example
-   * @code
-   * boost::asio::ip::tcp::acceptor acceptor(io_service);
-   * acceptor.open(boost::asio::ip::tcp::v4());
-   * @endcode
-   */
-  void open(const protocol_type& protocol = protocol_type())
-  {
-    boost::system::error_code ec;
-    this->service.open(this->implementation, protocol, ec);
-    boost::asio::detail::throw_error(ec);
-  }
-
-  /// Open the acceptor using the specified protocol.
-  /**
-   * This function opens the socket acceptor so that it will use the specified
-   * protocol.
-   *
-   * @param protocol An object specifying which protocol is to be used.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @par Example
-   * @code
-   * boost::asio::ip::tcp::acceptor acceptor(io_service);
-   * boost::system::error_code ec;
-   * acceptor.open(boost::asio::ip::tcp::v4(), ec);
-   * if (ec)
-   * {
-   *   // An error occurred.
-   * }
-   * @endcode
-   */
-  boost::system::error_code open(const protocol_type& protocol,
-      boost::system::error_code& ec)
-  {
-    return this->service.open(this->implementation, protocol, ec);
-  }
-
-  /// Assigns an existing native acceptor to the acceptor.
-  /*
-   * This function opens the acceptor to hold an existing native acceptor.
-   *
-   * @param protocol An object specifying which protocol is to be used.
-   *
-   * @param native_acceptor A native acceptor.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   */
-  void assign(const protocol_type& protocol, const native_type& native_acceptor)
-  {
-    boost::system::error_code ec;
-    this->service.assign(this->implementation, protocol, native_acceptor, ec);
-    boost::asio::detail::throw_error(ec);
-  }
-
-  /// Assigns an existing native acceptor to the acceptor.
-  /*
-   * This function opens the acceptor to hold an existing native acceptor.
-   *
-   * @param protocol An object specifying which protocol is to be used.
-   *
-   * @param native_acceptor A native acceptor.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  boost::system::error_code assign(const protocol_type& protocol,
-      const native_type& native_acceptor, boost::system::error_code& ec)
-  {
-    return this->service.assign(this->implementation,
-        protocol, native_acceptor, ec);
-  }
-
-  /// Determine whether the acceptor is open.
-  bool is_open() const
-  {
-    return this->service.is_open(this->implementation);
-  }
-
-  /// Bind the acceptor to the given local endpoint.
-  /**
-   * This function binds the socket acceptor to the specified endpoint on the
-   * local machine.
-   *
-   * @param endpoint An endpoint on the local machine to which the socket
-   * acceptor will be bound.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   *
-   * @par Example
-   * @code
-   * boost::asio::ip::tcp::acceptor acceptor(io_service);
-   * acceptor.open(boost::asio::ip::tcp::v4());
-   * acceptor.bind(boost::asio::ip::tcp::endpoint(12345));
-   * @endcode
-   */
-  void bind(const endpoint_type& endpoint)
-  {
-    boost::system::error_code ec;
-    this->service.bind(this->implementation, endpoint, ec);
-    boost::asio::detail::throw_error(ec);
-  }
-
-  /// Bind the acceptor to the given local endpoint.
-  /**
-   * This function binds the socket acceptor to the specified endpoint on the
-   * local machine.
-   *
-   * @param endpoint An endpoint on the local machine to which the socket
-   * acceptor will be bound.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @par Example
-   * @code
-   * boost::asio::ip::tcp::acceptor acceptor(io_service);
-   * acceptor.open(boost::asio::ip::tcp::v4());
-   * boost::system::error_code ec;
-   * acceptor.bind(boost::asio::ip::tcp::endpoint(12345), ec);
-   * if (ec)
-   * {
-   *   // An error occurred.
-   * }
-   * @endcode
-   */
-  boost::system::error_code bind(const endpoint_type& endpoint,
-      boost::system::error_code& ec)
-  {
-    return this->service.bind(this->implementation, endpoint, ec);
-  }
-
-  /// Place the acceptor into the state where it will listen for new
-  /// connections.
-  /**
-   * This function puts the socket acceptor into the state where it may accept
-   * new connections.
-   *
-   * @param backlog The maximum length of the queue of pending connections.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   */
-  void listen(int backlog = socket_base::max_connections)
-  {
-    boost::system::error_code ec;
-    this->service.listen(this->implementation, backlog, ec);
-    boost::asio::detail::throw_error(ec);
-  }
-
-  /// Place the acceptor into the state where it will listen for new
-  /// connections.
-  /**
-   * This function puts the socket acceptor into the state where it may accept
-   * new connections.
-   *
-   * @param backlog The maximum length of the queue of pending connections.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @par Example
-   * @code
-   * boost::asio::ip::tcp::acceptor acceptor(io_service);
-   * ...
-   * boost::system::error_code ec;
-   * acceptor.listen(boost::asio::socket_base::max_connections, ec);
-   * if (ec)
-   * {
-   *   // An error occurred.
-   * }
-   * @endcode
-   */
-  boost::system::error_code listen(int backlog, boost::system::error_code& ec)
-  {
-    return this->service.listen(this->implementation, backlog, ec);
-  }
-
-  /// Close the acceptor.
-  /**
-   * This function is used to close the acceptor. Any asynchronous accept
-   * operations will be cancelled immediately.
-   *
-   * A subsequent call to open() is required before the acceptor can again be
-   * used to again perform socket accept operations.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   */
-  void close()
-  {
-    boost::system::error_code ec;
-    this->service.close(this->implementation, ec);
-    boost::asio::detail::throw_error(ec);
-  }
-
-  /// Close the acceptor.
-  /**
-   * This function is used to close the acceptor. Any asynchronous accept
-   * operations will be cancelled immediately.
-   *
-   * A subsequent call to open() is required before the acceptor can again be
-   * used to again perform socket accept operations.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @par Example
-   * @code
-   * boost::asio::ip::tcp::acceptor acceptor(io_service);
-   * ...
-   * boost::system::error_code ec;
-   * acceptor.close(ec);
-   * if (ec)
-   * {
-   *   // An error occurred.
-   * }
-   * @endcode
-   */
-  boost::system::error_code close(boost::system::error_code& ec)
-  {
-    return this->service.close(this->implementation, ec);
-  }
-
-  /// Get the native acceptor representation.
-  /**
-   * This function may be used to obtain the underlying representation of the
-   * acceptor. This is intended to allow access to native acceptor functionality
-   * that is not otherwise provided.
-   */
-  native_type native()
-  {
-    return this->service.native(this->implementation);
-  }
-
-  /// Cancel all asynchronous operations associated with the acceptor.
-  /**
-   * This function causes all outstanding asynchronous connect, send and receive
-   * operations to finish immediately, and the handlers for cancelled operations
-   * will be passed the boost::asio::error::operation_aborted error.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   */
-  void cancel()
-  {
-    boost::system::error_code ec;
-    this->service.cancel(this->implementation, ec);
-    boost::asio::detail::throw_error(ec);
-  }
-
-  /// Cancel all asynchronous operations associated with the acceptor.
-  /**
-   * This function causes all outstanding asynchronous connect, send and receive
-   * operations to finish immediately, and the handlers for cancelled operations
-   * will be passed the boost::asio::error::operation_aborted error.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  boost::system::error_code cancel(boost::system::error_code& ec)
-  {
-    return this->service.cancel(this->implementation, ec);
-  }
-
-  /// Set an option on the acceptor.
-  /**
-   * This function is used to set an option on the acceptor.
-   *
-   * @param option The new option value to be set on the acceptor.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   *
-   * @sa SettableSocketOption @n
-   * boost::asio::socket_base::reuse_address
-   * boost::asio::socket_base::enable_connection_aborted
-   *
-   * @par Example
-   * Setting the SOL_SOCKET/SO_REUSEADDR option:
-   * @code
-   * boost::asio::ip::tcp::acceptor acceptor(io_service);
-   * ...
-   * boost::asio::ip::tcp::acceptor::reuse_address option(true);
-   * acceptor.set_option(option);
-   * @endcode
-   */
-  template <typename SettableSocketOption>
-  void set_option(const SettableSocketOption& option)
-  {
-    boost::system::error_code ec;
-    this->service.set_option(this->implementation, option, ec);
-    boost::asio::detail::throw_error(ec);
-  }
-
-  /// Set an option on the acceptor.
-  /**
-   * This function is used to set an option on the acceptor.
-   *
-   * @param option The new option value to be set on the acceptor.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @sa SettableSocketOption @n
-   * boost::asio::socket_base::reuse_address
-   * boost::asio::socket_base::enable_connection_aborted
-   *
-   * @par Example
-   * Setting the SOL_SOCKET/SO_REUSEADDR option:
-   * @code
-   * boost::asio::ip::tcp::acceptor acceptor(io_service);
-   * ...
-   * boost::asio::ip::tcp::acceptor::reuse_address option(true);
-   * boost::system::error_code ec;
-   * acceptor.set_option(option, ec);
-   * if (ec)
-   * {
-   *   // An error occurred.
-   * }
-   * @endcode
-   */
-  template <typename SettableSocketOption>
-  boost::system::error_code set_option(const SettableSocketOption& option,
-      boost::system::error_code& ec)
-  {
-    return this->service.set_option(this->implementation, option, ec);
-  }
-
-  /// Get an option from the acceptor.
-  /**
-   * This function is used to get the current value of an option on the
-   * acceptor.
-   *
-   * @param option The option value to be obtained from the acceptor.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   *
-   * @sa GettableSocketOption @n
-   * boost::asio::socket_base::reuse_address
-   *
-   * @par Example
-   * Getting the value of the SOL_SOCKET/SO_REUSEADDR option:
-   * @code
-   * boost::asio::ip::tcp::acceptor acceptor(io_service);
-   * ...
-   * boost::asio::ip::tcp::acceptor::reuse_address option;
-   * acceptor.get_option(option);
-   * bool is_set = option.get();
-   * @endcode
-   */
-  template <typename GettableSocketOption>
-  void get_option(GettableSocketOption& option)
-  {
-    boost::system::error_code ec;
-    this->service.get_option(this->implementation, option, ec);
-    boost::asio::detail::throw_error(ec);
-  }
-
-  /// Get an option from the acceptor.
-  /**
-   * This function is used to get the current value of an option on the
-   * acceptor.
-   *
-   * @param option The option value to be obtained from the acceptor.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @sa GettableSocketOption @n
-   * boost::asio::socket_base::reuse_address
-   *
-   * @par Example
-   * Getting the value of the SOL_SOCKET/SO_REUSEADDR option:
-   * @code
-   * boost::asio::ip::tcp::acceptor acceptor(io_service);
-   * ...
-   * boost::asio::ip::tcp::acceptor::reuse_address option;
-   * boost::system::error_code ec;
-   * acceptor.get_option(option, ec);
-   * if (ec)
-   * {
-   *   // An error occurred.
-   * }
-   * bool is_set = option.get();
-   * @endcode
-   */
-  template <typename GettableSocketOption>
-  boost::system::error_code get_option(GettableSocketOption& option,
-      boost::system::error_code& ec)
-  {
-    return this->service.get_option(this->implementation, option, ec);
-  }
-
-  /// Get the local endpoint of the acceptor.
-  /**
-   * This function is used to obtain the locally bound endpoint of the acceptor.
-   *
-   * @returns An object that represents the local endpoint of the acceptor.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   *
-   * @par Example
-   * @code
-   * boost::asio::ip::tcp::acceptor acceptor(io_service);
-   * ...
-   * boost::asio::ip::tcp::endpoint endpoint = acceptor.local_endpoint();
-   * @endcode
-   */
-  endpoint_type local_endpoint() const
-  {
-    boost::system::error_code ec;
-    endpoint_type ep = this->service.local_endpoint(this->implementation, ec);
-    boost::asio::detail::throw_error(ec);
-    return ep;
-  }
-
-  /// Get the local endpoint of the acceptor.
-  /**
-   * This function is used to obtain the locally bound endpoint of the acceptor.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns An object that represents the local endpoint of the acceptor.
-   * Returns a default-constructed endpoint object if an error occurred and the
-   * error handler did not throw an exception.
-   *
-   * @par Example
-   * @code
-   * boost::asio::ip::tcp::acceptor acceptor(io_service);
-   * ...
-   * boost::system::error_code ec;
-   * boost::asio::ip::tcp::endpoint endpoint = acceptor.local_endpoint(ec);
-   * if (ec)
-   * {
-   *   // An error occurred.
-   * }
-   * @endcode
-   */
-  endpoint_type local_endpoint(boost::system::error_code& ec) const
-  {
-    return this->service.local_endpoint(this->implementation, ec);
-  }
-
-  /// Accept a new connection.
-  /**
-   * This function is used to accept a new connection from a peer into the
-   * given socket. The function call will block until a new connection has been
-   * accepted successfully or an error occurs.
-   *
-   * @param peer The socket into which the new connection will be accepted.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   *
-   * @par Example
-   * @code
-   * boost::asio::ip::tcp::acceptor acceptor(io_service);
-   * ...
-   * boost::asio::ip::tcp::socket socket(io_service);
-   * acceptor.accept(socket);
-   * @endcode
-   */
-  template <typename SocketService>
-  void accept(basic_socket<protocol_type, SocketService>& peer)
-  {
-    boost::system::error_code ec;
-    this->service.accept(this->implementation, peer, 0, ec);
-    boost::asio::detail::throw_error(ec);
-  }
-
-  /// Accept a new connection.
-  /**
-   * This function is used to accept a new connection from a peer into the
-   * given socket. The function call will block until a new connection has been
-   * accepted successfully or an error occurs.
-   *
-   * @param peer The socket into which the new connection will be accepted.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @par Example
-   * @code
-   * boost::asio::ip::tcp::acceptor acceptor(io_service);
-   * ...
-   * boost::asio::ip::tcp::soocket socket(io_service);
-   * boost::system::error_code ec;
-   * acceptor.accept(socket, ec);
-   * if (ec)
-   * {
-   *   // An error occurred.
-   * }
-   * @endcode
-   */
-  template <typename SocketService>
-  boost::system::error_code accept(
-      basic_socket<protocol_type, SocketService>& peer,
-      boost::system::error_code& ec)
-  {
-    return this->service.accept(this->implementation, peer, 0, ec);
-  }
-
-  /// Start an asynchronous accept.
-  /**
-   * This function is used to asynchronously accept a new connection into a
-   * socket. The function call always returns immediately.
-   *
-   * @param peer The socket into which the new connection will be accepted.
-   * Ownership of the peer object is retained by the caller, which must
-   * guarantee that it is valid until the handler is called.
-   *
-   * @param handler The handler to be called when the accept operation
-   * completes. Copies will be made of the handler as required. The function
-   * signature of the handler must be:
-   * @code void handler(
-   *   const boost::system::error_code& error // Result of operation.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * boost::asio::io_service::post().
-   *
-   * @par Example
-   * @code
-   * void accept_handler(const boost::system::error_code& error)
-   * {
-   *   if (!error)
-   *   {
-   *     // Accept succeeded.
-   *   }
-   * }
-   *
-   * ...
-   *
-   * boost::asio::ip::tcp::acceptor acceptor(io_service);
-   * ...
-   * boost::asio::ip::tcp::socket socket(io_service);
-   * acceptor.async_accept(socket, accept_handler);
-   * @endcode
-   */
-  template <typename SocketService, typename AcceptHandler>
-  void async_accept(basic_socket<protocol_type, SocketService>& peer,
-      AcceptHandler handler)
-  {
-    this->service.async_accept(this->implementation, peer, 0, handler);
-  }
-
-  /// Accept a new connection and obtain the endpoint of the peer
-  /**
-   * This function is used to accept a new connection from a peer into the
-   * given socket, and additionally provide the endpoint of the remote peer.
-   * The function call will block until a new connection has been accepted
-   * successfully or an error occurs.
-   *
-   * @param peer The socket into which the new connection will be accepted.
-   *
-   * @param peer_endpoint An endpoint object which will receive the endpoint of
-   * the remote peer.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   *
-   * @par Example
-   * @code
-   * boost::asio::ip::tcp::acceptor acceptor(io_service);
-   * ...
-   * boost::asio::ip::tcp::socket socket(io_service);
-   * boost::asio::ip::tcp::endpoint endpoint;
-   * acceptor.accept(socket, endpoint);
-   * @endcode
-   */
-  template <typename SocketService>
-  void accept(basic_socket<protocol_type, SocketService>& peer,
-      endpoint_type& peer_endpoint)
-  {
-    boost::system::error_code ec;
-    this->service.accept(this->implementation, peer, &peer_endpoint, ec);
-    boost::asio::detail::throw_error(ec);
-  }
-
-  /// Accept a new connection and obtain the endpoint of the peer
-  /**
-   * This function is used to accept a new connection from a peer into the
-   * given socket, and additionally provide the endpoint of the remote peer.
-   * The function call will block until a new connection has been accepted
-   * successfully or an error occurs.
-   *
-   * @param peer The socket into which the new connection will be accepted.
-   *
-   * @param peer_endpoint An endpoint object which will receive the endpoint of
-   * the remote peer.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @par Example
-   * @code
-   * boost::asio::ip::tcp::acceptor acceptor(io_service);
-   * ...
-   * boost::asio::ip::tcp::socket socket(io_service);
-   * boost::asio::ip::tcp::endpoint endpoint;
-   * boost::system::error_code ec;
-   * acceptor.accept(socket, endpoint, ec);
-   * if (ec)
-   * {
-   *   // An error occurred.
-   * }
-   * @endcode
-   */
-  template <typename SocketService>
-  boost::system::error_code accept(
-      basic_socket<protocol_type, SocketService>& peer,
-      endpoint_type& peer_endpoint, boost::system::error_code& ec)
-  {
-    return this->service.accept(this->implementation, peer, &peer_endpoint, ec);
-  }
-
-  /// Start an asynchronous accept.
-  /**
-   * This function is used to asynchronously accept a new connection into a
-   * socket, and additionally obtain the endpoint of the remote peer. The
-   * function call always returns immediately.
-   *
-   * @param peer The socket into which the new connection will be accepted.
-   * Ownership of the peer object is retained by the caller, which must
-   * guarantee that it is valid until the handler is called.
-   *
-   * @param peer_endpoint An endpoint object into which the endpoint of the
-   * remote peer will be written. Ownership of the peer_endpoint object is
-   * retained by the caller, which must guarantee that it is valid until the
-   * handler is called.
-   *
-   * @param handler The handler to be called when the accept operation
-   * completes. Copies will be made of the handler as required. The function
-   * signature of the handler must be:
-   * @code void handler(
-   *   const boost::system::error_code& error // Result of operation.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * boost::asio::io_service::post().
-   */
-  template <typename SocketService, typename AcceptHandler>
-  void async_accept(basic_socket<protocol_type, SocketService>& peer,
-      endpoint_type& peer_endpoint, AcceptHandler handler)
-  {
-    this->service.async_accept(this->implementation,
-        peer, &peer_endpoint, handler);
-  }
-};
-
-} // namespace asio
-} // namespace boost
-
-#include <boost/asio/detail/pop_options.hpp>
-
-#endif // BOOST_ASIO_BASIC_SOCKET_ACCEPTOR_HPP

+ 0 - 150
feng-authnotify/ext/boost/asio/basic_socket_iostream.hpp

@@ -1,150 +0,0 @@
-//
-// basic_socket_iostream.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef BOOST_ASIO_BASIC_SOCKET_IOSTREAM_HPP
-#define BOOST_ASIO_BASIC_SOCKET_IOSTREAM_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include <boost/asio/detail/push_options.hpp>
-
-#include <boost/asio/detail/push_options.hpp>
-#include <boost/preprocessor/arithmetic/inc.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/repeat_from_to.hpp>
-#include <boost/utility/base_from_member.hpp>
-#include <boost/asio/detail/pop_options.hpp>
-
-#include <boost/asio/basic_socket_streambuf.hpp>
-#include <boost/asio/stream_socket_service.hpp>
-
-#if !defined(BOOST_ASIO_SOCKET_IOSTREAM_MAX_ARITY)
-#define BOOST_ASIO_SOCKET_IOSTREAM_MAX_ARITY 5
-#endif // !defined(BOOST_ASIO_SOCKET_IOSTREAM_MAX_ARITY)
-
-// A macro that should expand to:
-//   template <typename T1, ..., typename Tn>
-//   explicit basic_socket_iostream(T1 x1, ..., Tn xn)
-//     : basic_iostream<char>(&this->boost::base_from_member<
-//         basic_socket_streambuf<Protocol, StreamSocketService> >::member)
-//   {
-//     if (rdbuf()->connect(x1, ..., xn) == 0)
-//       this->setstate(std::ios_base::failbit);
-//   }
-// This macro should only persist within this file.
-
-#define BOOST_ASIO_PRIVATE_CTR_DEF(z, n, data) \
-  template <BOOST_PP_ENUM_PARAMS(n, typename T)> \
-  explicit basic_socket_iostream(BOOST_PP_ENUM_BINARY_PARAMS(n, T, x)) \
-    : std::basic_iostream<char>(&this->boost::base_from_member< \
-        basic_socket_streambuf<Protocol, StreamSocketService> >::member) \
-  { \
-    tie(this); \
-    if (rdbuf()->connect(BOOST_PP_ENUM_PARAMS(n, x)) == 0) \
-      this->setstate(std::ios_base::failbit); \
-  } \
-  /**/
-
-// A macro that should expand to:
-//   template <typename T1, ..., typename Tn>
-//   void connect(T1 x1, ..., Tn xn)
-//   {
-//     if (rdbuf()->connect(x1, ..., xn) == 0)
-//       this->setstate(std::ios_base::failbit);
-//   }
-// This macro should only persist within this file.
-
-#define BOOST_ASIO_PRIVATE_CONNECT_DEF(z, n, data) \
-  template <BOOST_PP_ENUM_PARAMS(n, typename T)> \
-  void connect(BOOST_PP_ENUM_BINARY_PARAMS(n, T, x)) \
-  { \
-    if (rdbuf()->connect(BOOST_PP_ENUM_PARAMS(n, x)) == 0) \
-      this->setstate(std::ios_base::failbit); \
-  } \
-  /**/
-
-namespace boost {
-namespace asio {
-
-/// Iostream interface for a socket.
-template <typename Protocol,
-    typename StreamSocketService = stream_socket_service<Protocol> >
-class basic_socket_iostream
-  : public boost::base_from_member<
-      basic_socket_streambuf<Protocol, StreamSocketService> >,
-    public std::basic_iostream<char>
-{
-public:
-  /// Construct a basic_socket_iostream without establishing a connection.
-  basic_socket_iostream()
-    : std::basic_iostream<char>(&this->boost::base_from_member<
-        basic_socket_streambuf<Protocol, StreamSocketService> >::member)
-  {
-    tie(this);
-  }
-
-#if defined(GENERATING_DOCUMENTATION)
-  /// Establish a connection to an endpoint corresponding to a resolver query.
-  /**
-   * This constructor automatically establishes a connection based on the
-   * supplied resolver query parameters. The arguments are used to construct
-   * a resolver query object.
-   */
-  template <typename T1, ..., typename TN>
-  explicit basic_socket_iostream(T1 t1, ..., TN tn);
-#else
-  BOOST_PP_REPEAT_FROM_TO(
-      1, BOOST_PP_INC(BOOST_ASIO_SOCKET_IOSTREAM_MAX_ARITY),
-      BOOST_ASIO_PRIVATE_CTR_DEF, _ )
-#endif
-
-#if defined(GENERATING_DOCUMENTATION)
-  /// Establish a connection to an endpoint corresponding to a resolver query.
-  /**
-   * This function automatically establishes a connection based on the supplied
-   * resolver query parameters. The arguments are used to construct a resolver
-   * query object.
-   */
-  template <typename T1, ..., typename TN>
-  void connect(T1 t1, ..., TN tn);
-#else
-  BOOST_PP_REPEAT_FROM_TO(
-      1, BOOST_PP_INC(BOOST_ASIO_SOCKET_IOSTREAM_MAX_ARITY),
-      BOOST_ASIO_PRIVATE_CONNECT_DEF, _ )
-#endif
-
-  /// Close the connection.
-  void close()
-  {
-    if (rdbuf()->close() == 0)
-      this->setstate(std::ios_base::failbit);
-  }
-
-  /// Return a pointer to the underlying streambuf.
-  basic_socket_streambuf<Protocol, StreamSocketService>* rdbuf() const
-  {
-    return const_cast<basic_socket_streambuf<Protocol, StreamSocketService>*>(
-        &this->boost::base_from_member<
-          basic_socket_streambuf<Protocol, StreamSocketService> >::member);
-  }
-};
-
-} // namespace asio
-} // namespace boost
-
-#undef BOOST_ASIO_PRIVATE_CTR_DEF
-#undef BOOST_ASIO_PRIVATE_CONNECT_DEF
-
-#include <boost/asio/detail/pop_options.hpp>
-
-#endif // BOOST_ASIO_BASIC_SOCKET_IOSTREAM_HPP

+ 0 - 287
feng-authnotify/ext/boost/asio/basic_socket_streambuf.hpp

@@ -1,287 +0,0 @@
-//
-// basic_socket_streambuf.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef BOOST_ASIO_BASIC_SOCKET_STREAMBUF_HPP
-#define BOOST_ASIO_BASIC_SOCKET_STREAMBUF_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include <boost/asio/detail/push_options.hpp>
-
-#include <boost/asio/detail/push_options.hpp>
-#include <streambuf>
-#include <boost/array.hpp>
-#include <boost/preprocessor/arithmetic/inc.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/repeat_from_to.hpp>
-#include <boost/utility/base_from_member.hpp>
-#include <boost/asio/detail/pop_options.hpp>
-
-#include <boost/asio/basic_socket.hpp>
-#include <boost/asio/io_service.hpp>
-#include <boost/asio/stream_socket_service.hpp>
-#include <boost/asio/detail/throw_error.hpp>
-
-#if !defined(BOOST_ASIO_SOCKET_STREAMBUF_MAX_ARITY)
-#define BOOST_ASIO_SOCKET_STREAMBUF_MAX_ARITY 5
-#endif // !defined(BOOST_ASIO_SOCKET_STREAMBUF_MAX_ARITY)
-
-// A macro that should expand to:
-//   template <typename T1, ..., typename Tn>
-//   basic_socket_streambuf<Protocol, StreamSocketService>* connect(
-//       T1 x1, ..., Tn xn)
-//   {
-//     init_buffers();
-//     boost::system::error_code ec;
-//     this->basic_socket<Protocol, StreamSocketService>::close(ec);
-//     typedef typename Protocol::resolver_query resolver_query;
-//     resolver_query query(x1, ..., xn);
-//     resolve_and_connect(query, ec);
-//     return !ec ? this : 0;
-//   }
-// This macro should only persist within this file.
-
-#define BOOST_ASIO_PRIVATE_CONNECT_DEF( z, n, data ) \
-  template <BOOST_PP_ENUM_PARAMS(n, typename T)> \
-  basic_socket_streambuf<Protocol, StreamSocketService>* connect( \
-      BOOST_PP_ENUM_BINARY_PARAMS(n, T, x)) \
-  { \
-    init_buffers(); \
-    boost::system::error_code ec; \
-    this->basic_socket<Protocol, StreamSocketService>::close(ec); \
-    typedef typename Protocol::resolver_query resolver_query; \
-    resolver_query query(BOOST_PP_ENUM_PARAMS(n, x)); \
-    resolve_and_connect(query, ec); \
-    return !ec ? this : 0; \
-  } \
-  /**/
-
-namespace boost {
-namespace asio {
-
-/// Iostream streambuf for a socket.
-template <typename Protocol,
-    typename StreamSocketService = stream_socket_service<Protocol> >
-class basic_socket_streambuf
-  : public std::streambuf,
-    private boost::base_from_member<io_service>,
-    public basic_socket<Protocol, StreamSocketService>
-{
-public:
-  /// The endpoint type.
-  typedef typename Protocol::endpoint endpoint_type;
-
-  /// Construct a basic_socket_streambuf without establishing a connection.
-  basic_socket_streambuf()
-    : basic_socket<Protocol, StreamSocketService>(
-        boost::base_from_member<boost::asio::io_service>::member),
-      unbuffered_(false)
-  {
-    init_buffers();
-  }
-
-  /// Destructor flushes buffered data.
-  virtual ~basic_socket_streambuf()
-  {
-    if (pptr() != pbase())
-      overflow(traits_type::eof());
-  }
-
-  /// Establish a connection.
-  /**
-   * This function establishes a connection to the specified endpoint.
-   *
-   * @return \c this if a connection was successfully established, a null
-   * pointer otherwise.
-   */
-  basic_socket_streambuf<Protocol, StreamSocketService>* connect(
-      const endpoint_type& endpoint)
-  {
-    init_buffers();
-    boost::system::error_code ec;
-    this->basic_socket<Protocol, StreamSocketService>::close(ec);
-    this->basic_socket<Protocol, StreamSocketService>::connect(endpoint, ec);
-    return !ec ? this : 0;
-  }
-
-#if defined(GENERATING_DOCUMENTATION)
-  /// Establish a connection.
-  /**
-   * This function automatically establishes a connection based on the supplied
-   * resolver query parameters. The arguments are used to construct a resolver
-   * query object.
-   *
-   * @return \c this if a connection was successfully established, a null
-   * pointer otherwise.
-   */
-  template <typename T1, ..., typename TN>
-  basic_socket_streambuf<Protocol, StreamSocketService>* connect(
-      T1 t1, ..., TN tn);
-#else
-  BOOST_PP_REPEAT_FROM_TO(
-      1, BOOST_PP_INC(BOOST_ASIO_SOCKET_STREAMBUF_MAX_ARITY),
-      BOOST_ASIO_PRIVATE_CONNECT_DEF, _ )
-#endif
-
-  /// Close the connection.
-  /**
-   * @return \c this if a connection was successfully established, a null
-   * pointer otherwise.
-   */
-  basic_socket_streambuf<Protocol, StreamSocketService>* close()
-  {
-    boost::system::error_code ec;
-    sync();
-    this->basic_socket<Protocol, StreamSocketService>::close(ec);
-    if (!ec)
-      init_buffers();
-    return !ec ? this : 0;
-  }
-
-protected:
-  int_type underflow()
-  {
-    if (gptr() == egptr())
-    {
-      boost::system::error_code ec;
-      std::size_t bytes_transferred = this->service.receive(
-          this->implementation,
-          boost::asio::buffer(boost::asio::buffer(get_buffer_) + putback_max),
-          0, ec);
-      if (ec)
-        return traits_type::eof();
-      setg(get_buffer_.begin(), get_buffer_.begin() + putback_max,
-          get_buffer_.begin() + putback_max + bytes_transferred);
-      return traits_type::to_int_type(*gptr());
-    }
-    else
-    {
-      return traits_type::eof();
-    }
-  }
-
-  int_type overflow(int_type c)
-  {
-    if (unbuffered_)
-    {
-      if (traits_type::eq_int_type(c, traits_type::eof()))
-      {
-        // Nothing to do.
-        return traits_type::not_eof(c);
-      }
-      else
-      {
-        // Send the single character immediately.
-        boost::system::error_code ec;
-        char_type ch = traits_type::to_char_type(c);
-        this->service.send(this->implementation,
-            boost::asio::buffer(&ch, sizeof(char_type)), 0, ec);
-        if (ec)
-          return traits_type::eof();
-        return c;
-      }
-    }
-    else
-    {
-      // Send all data in the output buffer.
-      boost::asio::const_buffer buffer =
-        boost::asio::buffer(pbase(), pptr() - pbase());
-      while (boost::asio::buffer_size(buffer) > 0)
-      {
-        boost::system::error_code ec;
-        std::size_t bytes_transferred = this->service.send(
-            this->implementation, boost::asio::buffer(buffer),
-            0, ec);
-        if (ec)
-          return traits_type::eof();
-        buffer = buffer + bytes_transferred;
-      }
-      setp(put_buffer_.begin(), put_buffer_.end());
-
-      // If the new character is eof then our work here is done.
-      if (traits_type::eq_int_type(c, traits_type::eof()))
-        return traits_type::not_eof(c);
-
-      // Add the new character to the output buffer.
-      *pptr() = traits_type::to_char_type(c);
-      pbump(1);
-      return c;
-    }
-  }
-
-  int sync()
-  {
-    return overflow(traits_type::eof());
-  }
-
-  std::streambuf* setbuf(char_type* s, std::streamsize n)
-  {
-    if (pptr() == pbase() && s == 0 && n == 0)
-    {
-      unbuffered_ = true;
-      setp(0, 0);
-      return this;
-    }
-
-    return 0;
-  }
-
-private:
-  void init_buffers()
-  {
-    setg(get_buffer_.begin(),
-        get_buffer_.begin() + putback_max,
-        get_buffer_.begin() + putback_max);
-    if (unbuffered_)
-      setp(0, 0);
-    else
-      setp(put_buffer_.begin(), put_buffer_.end());
-  }
-
-  template <typename ResolverQuery>
-  void resolve_and_connect(const ResolverQuery& query,
-      boost::system::error_code& ec)
-  {
-    typedef typename Protocol::resolver resolver_type;
-    typedef typename Protocol::resolver_iterator iterator_type;
-    resolver_type resolver(
-        boost::base_from_member<boost::asio::io_service>::member);
-    iterator_type i = resolver.resolve(query, ec);
-    if (!ec)
-    {
-      iterator_type end;
-      ec = boost::asio::error::host_not_found;
-      while (ec && i != end)
-      {
-        this->basic_socket<Protocol, StreamSocketService>::close();
-        this->basic_socket<Protocol, StreamSocketService>::connect(*i, ec);
-        ++i;
-      }
-    }
-  }
-
-  enum { putback_max = 8 };
-  enum { buffer_size = 512 };
-  boost::array<char, buffer_size> get_buffer_;
-  boost::array<char, buffer_size> put_buffer_;
-  bool unbuffered_;
-};
-
-} // namespace asio
-} // namespace boost
-
-#undef BOOST_ASIO_PRIVATE_CONNECT_DEF
-
-#include <boost/asio/detail/pop_options.hpp>
-
-#endif // BOOST_ASIO_BASIC_SOCKET_STREAMBUF_HPP

+ 0 - 720
feng-authnotify/ext/boost/asio/basic_stream_socket.hpp

@@ -1,720 +0,0 @@
-//
-// basic_stream_socket.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef BOOST_ASIO_BASIC_STREAM_SOCKET_HPP
-#define BOOST_ASIO_BASIC_STREAM_SOCKET_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include <boost/asio/detail/push_options.hpp>
-
-#include <boost/asio/detail/push_options.hpp>
-#include <cstddef>
-#include <boost/config.hpp>
-#include <boost/asio/detail/pop_options.hpp>
-
-#include <boost/asio/basic_socket.hpp>
-#include <boost/asio/error.hpp>
-#include <boost/asio/stream_socket_service.hpp>
-#include <boost/asio/detail/throw_error.hpp>
-
-namespace boost {
-namespace asio {
-
-/// Provides stream-oriented socket functionality.
-/**
- * The basic_stream_socket class template provides asynchronous and blocking
- * stream-oriented socket functionality.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- *
- * @par Concepts:
- * AsyncReadStream, AsyncWriteStream, Stream, SyncReadStream, SyncWriteStream.
- */
-template <typename Protocol,
-    typename StreamSocketService = stream_socket_service<Protocol> >
-class basic_stream_socket
-  : public basic_socket<Protocol, StreamSocketService>
-{
-public:
-  /// The native representation of a socket.
-  typedef typename StreamSocketService::native_type native_type;
-
-  /// The protocol type.
-  typedef Protocol protocol_type;
-
-  /// The endpoint type.
-  typedef typename Protocol::endpoint endpoint_type;
-
-  /// Construct a basic_stream_socket without opening it.
-  /**
-   * This constructor creates a stream socket without opening it. The socket
-   * needs to be opened and then connected or accepted before data can be sent
-   * or received on it.
-   *
-   * @param io_service The io_service object that the stream socket will use to
-   * dispatch handlers for any asynchronous operations performed on the socket.
-   */
-  explicit basic_stream_socket(boost::asio::io_service& io_service)
-    : basic_socket<Protocol, StreamSocketService>(io_service)
-  {
-  }
-
-  /// Construct and open a basic_stream_socket.
-  /**
-   * This constructor creates and opens a stream socket. The socket needs to be
-   * connected or accepted before data can be sent or received on it.
-   *
-   * @param io_service The io_service object that the stream socket will use to
-   * dispatch handlers for any asynchronous operations performed on the socket.
-   *
-   * @param protocol An object specifying protocol parameters to be used.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   */
-  basic_stream_socket(boost::asio::io_service& io_service,
-      const protocol_type& protocol)
-    : basic_socket<Protocol, StreamSocketService>(io_service, protocol)
-  {
-  }
-
-  /// Construct a basic_stream_socket, opening it and binding it to the given
-  /// local endpoint.
-  /**
-   * This constructor creates a stream socket and automatically opens it bound
-   * to the specified endpoint on the local machine. The protocol used is the
-   * protocol associated with the given endpoint.
-   *
-   * @param io_service The io_service object that the stream socket will use to
-   * dispatch handlers for any asynchronous operations performed on the socket.
-   *
-   * @param endpoint An endpoint on the local machine to which the stream
-   * socket will be bound.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   */
-  basic_stream_socket(boost::asio::io_service& io_service,
-      const endpoint_type& endpoint)
-    : basic_socket<Protocol, StreamSocketService>(io_service, endpoint)
-  {
-  }
-
-  /// Construct a basic_stream_socket on an existing native socket.
-  /**
-   * This constructor creates a stream socket object to hold an existing native
-   * socket.
-   *
-   * @param io_service The io_service object that the stream socket will use to
-   * dispatch handlers for any asynchronous operations performed on the socket.
-   *
-   * @param protocol An object specifying protocol parameters to be used.
-   *
-   * @param native_socket The new underlying socket implementation.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   */
-  basic_stream_socket(boost::asio::io_service& io_service,
-      const protocol_type& protocol, const native_type& native_socket)
-    : basic_socket<Protocol, StreamSocketService>(
-        io_service, protocol, native_socket)
-  {
-  }
-
-  /// Send some data on the socket.
-  /**
-   * This function is used to send data on the stream socket. The function
-   * call will block until one or more bytes of the data has been sent
-   * successfully, or an until error occurs.
-   *
-   * @param buffers One or more data buffers to be sent on the socket.
-   *
-   * @returns The number of bytes sent.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   *
-   * @note The send operation may not transmit all of the data to the peer.
-   * Consider using the @ref write function if you need to ensure that all data
-   * is written before the blocking operation completes.
-   *
-   * @par Example
-   * To send a single data buffer use the @ref buffer function as follows:
-   * @code
-   * socket.send(boost::asio::buffer(data, size));
-   * @endcode
-   * See the @ref buffer documentation for information on sending multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t send(const ConstBufferSequence& buffers)
-  {
-    boost::system::error_code ec;
-    std::size_t s = this->service.send(
-        this->implementation, buffers, 0, ec);
-    boost::asio::detail::throw_error(ec);
-    return s;
-  }
-
-  /// Send some data on the socket.
-  /**
-   * This function is used to send data on the stream socket. The function
-   * call will block until one or more bytes of the data has been sent
-   * successfully, or an until error occurs.
-   *
-   * @param buffers One or more data buffers to be sent on the socket.
-   *
-   * @param flags Flags specifying how the send call is to be made.
-   *
-   * @returns The number of bytes sent.
-   *
-   * @throws boost::system::system_error Thrown on failure.
-   *
-   * @note The send operation may not transmit all of the data to the peer.
-   * Consider using the @ref write function if you need to ensure that all data
-   * is written before the blocking operation completes.
-   *
-   * @par Example
-   * To send a single data buffer use the @ref buffer function as follows:
-   * @code
-   * socket.send(boost::asio::buffer(data, size), 0);
-   * @endcode
-   * See the @ref buffer documentation for information on sending multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t send(const ConstBufferSequence& buffers,
-      socket_base::message_flags flags)
-  {
-    boost::system::error_code ec;
-    std::size_t s = this->service.send(
-        this->implementation, buffers, flags, ec);
-    boost::asio::detail::throw_error(ec);
-    return s;
-  }
-
-  /// Send some data on the socket.
-  /**
-   * This function is used to send data on the stream socket. The function
-   * call will block until one or more bytes of the data has been sent
-   * successfully, or an until error occurs.
-   *
-   * @param buffers One or more data buffers to be sent on the socket.
-   *
-   * @param flags Flags specifying how the send call is to be made.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes sent. Returns 0 if an error occurred.
-   *
-   * @note The send operation may not transmit all of the data to the peer.
-   * Consider using the @ref write function if you need to ensure that all data
-   * is written before the blocking operation completes.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t send(const ConstBufferSequence& buffers,
-      socket_base::message_flags flags, boost::system::error_code& ec)
-  {
-    return this->service.send(this->implementation, buffers, flags, ec);
-  }
-
-  /// Start an asynchronous send.
-  /**
-   * This function is used to asynchronously send data on the stream socket.
-   * The function call always returns immediately.
-   *
-   * @param buffers One or more data buffers to be sent on the socket. Although
-   * the buffers object may be copied as necessary, ownership of the underlying
-   * memory blocks is retained by the caller, which must guarantee that they
-   * remain valid until the handler is called.
-   *
-   * @param handler The handler to be called when the send operation completes.
-   * Copies will be made of the handler as required. The function signature of
-   * the handler must be:
-   * @code void handler(
-   *   const boost::system::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes sent.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * boost::asio::io_service::post().
-   *
-   * @note The send operation may not transmit all of the data to the peer.
-   * Consider using the @ref async_write function if you need to ensure that all
-   * data is written before the asynchronous operation completes.
-   *
-   * @par Example
-   * To send a single data buffer use the @ref buffer function as follows:
-   * @code
-   * socket.async_send(boost::asio::buffer(data, size), handler);
-   * @endcode
-   * See the @ref buffer documentation for information on sending multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence, typename WriteHandler>
-  void async_send(const ConstBufferSequence& buffers, WriteHandler handler)
-  {
-    this->service.async_send(this->implementation, buffers, 0, handler);
-  }
-
-  /// Start an asynchronous send.
-  /**
-   * This function is used to asynchronously send data on the stream socket.
-   * The function call always returns immediately.
-   *
-   * @param buffers One or more data buffers to be sent on the socket. Although
-   * the buffers object may be copied as necessary, ownership of the underlying
-   * memory blocks is retained by the caller, which must guarantee that they
-   * remain valid until the handler is called.
-   *
-   * @param flags Flags specifying how the send call is to be made.
-   *
-   * @param handler The handler to be called when the send operation completes.
-   * Copies will be made of the handler as required. The function signature of
-   * the handler must be:
-   * @code void handler(
-   *   const boost::system::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes sent.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * boost::asio::io_service::post().
-   *
-   * @note The send operation may not transmit all of the data to the peer.
-   * Consider using the @ref async_write function if you need to ensure that all
-   * data is written before the asynchronous operation completes.
-   *
-   * @par Example
-   * To send a single data buffer use the @ref buffer function as follows:
-   * @code
-   * socket.async_send(boost::asio::buffer(data, size), 0, handler);
-   * @endcode
-   * See the @ref buffer documentation for information on sending multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence, typename WriteHandler>
-  void async_send(const ConstBufferSequence& buffers,
-      socket_base::message_flags flags, WriteHandler handler)
-  {
-    this->service.async_send(this->implementation, buffers, flags, handler);
-  }
-
-  /// Receive some data on the socket.
-  /**
-   * This function is used to receive data on the stream socket. The function
-   * call will block until one or more bytes of data has been received
-   * successfully, or until an error occurs.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   *
-   * @returns The number of bytes received.
-   *
-   * @throws boost::system::system_error Thrown on failure. An error code of
-   * boost::asio::error::eof indicates that the connection was closed by the
-   * peer.
-   *
-   * @note The receive operation may not receive all of the requested number of
-   * bytes. Consider using the @ref read function if you need to ensure that the
-   * requested amount of data is read before the blocking operation completes.
-   *
-   * @par Example
-   * To receive into a single data buffer use the @ref buffer function as
-   * follows:
-   * @code
-   * socket.receive(boost::asio::buffer(data, size));
-   * @endcode
-   * See the @ref buffer documentation for information on receiving into
-   * multiple buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t receive(const MutableBufferSequence& buffers)
-  {
-    boost::system::error_code ec;
-    std::size_t s = this->service.receive(this->implementation, buffers, 0, ec);
-    boost::asio::detail::throw_error(ec);
-    return s;
-  }
-
-  /// Receive some data on the socket.
-  /**
-   * This function is used to receive data on the stream socket. The function
-   * call will block until one or more bytes of data has been received
-   * successfully, or until an error occurs.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   *
-   * @param flags Flags specifying how the receive call is to be made.
-   *
-   * @returns The number of bytes received.
-   *
-   * @throws boost::system::system_error Thrown on failure. An error code of
-   * boost::asio::error::eof indicates that the connection was closed by the
-   * peer.
-   *
-   * @note The receive operation may not receive all of the requested number of
-   * bytes. Consider using the @ref read function if you need to ensure that the
-   * requested amount of data is read before the blocking operation completes.
-   *
-   * @par Example
-   * To receive into a single data buffer use the @ref buffer function as
-   * follows:
-   * @code
-   * socket.receive(boost::asio::buffer(data, size), 0);
-   * @endcode
-   * See the @ref buffer documentation for information on receiving into
-   * multiple buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t receive(const MutableBufferSequence& buffers,
-      socket_base::message_flags flags)
-  {
-    boost::system::error_code ec;
-    std::size_t s = this->service.receive(
-        this->implementation, buffers, flags, ec);
-    boost::asio::detail::throw_error(ec);
-    return s;
-  }
-
-  /// Receive some data on a connected socket.
-  /**
-   * This function is used to receive data on the stream socket. The function
-   * call will block until one or more bytes of data has been received
-   * successfully, or until an error occurs.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   *
-   * @param flags Flags specifying how the receive call is to be made.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes received. Returns 0 if an error occurred.
-   *
-   * @note The receive operation may not receive all of the requested number of
-   * bytes. Consider using the @ref read function if you need to ensure that the
-   * requested amount of data is read before the blocking operation completes.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t receive(const MutableBufferSequence& buffers,
-      socket_base::message_flags flags, boost::system::error_code& ec)
-  {
-    return this->service.receive(this->implementation, buffers, flags, ec);
-  }
-
-  /// Start an asynchronous receive.
-  /**
-   * This function is used to asynchronously receive data from the stream
-   * socket. The function call always returns immediately.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param handler The handler to be called when the receive operation
-   * completes. Copies will be made of the handler as required. The function
-   * signature of the handler must be:
-   * @code void handler(
-   *   const boost::system::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes received.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * boost::asio::io_service::post().
-   *
-   * @note The receive operation may not receive all of the requested number of
-   * bytes. Consider using the @ref async_read function if you need to ensure
-   * that the requested amount of data is received before the asynchronous
-   * operation completes.
-   *
-   * @par Example
-   * To receive into a single data buffer use the @ref buffer function as
-   * follows:
-   * @code
-   * socket.async_receive(boost::asio::buffer(data, size), handler);
-   * @endcode
-   * See the @ref buffer documentation for information on receiving into
-   * multiple buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence, typename ReadHandler>
-  void async_receive(const MutableBufferSequence& buffers, ReadHandler handler)
-  {
-    this->service.async_receive(this->implementation, buffers, 0, handler);
-  }
-
-  /// Start an asynchronous receive.
-  /**
-   * This function is used to asynchronously receive data from the stream
-   * socket. The function call always returns immediately.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param flags Flags specifying how the receive call is to be made.
-   *
-   * @param handler The handler to be called when the receive operation
-   * completes. Copies will be made of the handler as required. The function
-   * signature of the handler must be:
-   * @code void handler(
-   *   const boost::system::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes received.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * boost::asio::io_service::post().
-   *
-   * @note The receive operation may not receive all of the requested number of
-   * bytes. Consider using the @ref async_read function if you need to ensure
-   * that the requested amount of data is received before the asynchronous
-   * operation completes.
-   *
-   * @par Example
-   * To receive into a single data buffer use the @ref buffer function as
-   * follows:
-   * @code
-   * socket.async_receive(boost::asio::buffer(data, size), 0, handler);
-   * @endcode
-   * See the @ref buffer documentation for information on receiving into
-   * multiple buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence, typename ReadHandler>
-  void async_receive(const MutableBufferSequence& buffers,
-      socket_base::message_flags flags, ReadHandler handler)
-  {
-    this->service.async_receive(this->implementation, buffers, flags, handler);
-  }
-
-  /// Write some data to the socket.
-  /**
-   * This function is used to write data to the stream socket. The function call
-   * will block until one or more bytes of the data has been written
-   * successfully, or until an error occurs.
-   *
-   * @param buffers One or more data buffers to be written to the socket.
-   *
-   * @returns The number of bytes written.
-   *
-   * @throws boost::system::system_error Thrown on failure. An error code of
-   * boost::asio::error::eof indicates that the connection was closed by the
-   * peer.
-   *
-   * @note The write_some operation may not transmit all of the data to the
-   * peer. Consider using the @ref write function if you need to ensure that
-   * all data is written before the blocking operation completes.
-   *
-   * @par Example
-   * To write a single data buffer use the @ref buffer function as follows:
-   * @code
-   * socket.write_some(boost::asio::buffer(data, size));
-   * @endcode
-   * See the @ref buffer documentation for information on writing multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t write_some(const ConstBufferSequence& buffers)
-  {
-    boost::system::error_code ec;
-    std::size_t s = this->service.send(this->implementation, buffers, 0, ec);
-    boost::asio::detail::throw_error(ec);
-    return s;
-  }
-
-  /// Write some data to the socket.
-  /**
-   * This function is used to write data to the stream socket. The function call
-   * will block until one or more bytes of the data has been written
-   * successfully, or until an error occurs.
-   *
-   * @param buffers One or more data buffers to be written to the socket.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes written. Returns 0 if an error occurred.
-   *
-   * @note The write_some operation may not transmit all of the data to the
-   * peer. Consider using the @ref write function if you need to ensure that
-   * all data is written before the blocking operation completes.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t write_some(const ConstBufferSequence& buffers,
-      boost::system::error_code& ec)
-  {
-    return this->service.send(this->implementation, buffers, 0, ec);
-  }
-
-  /// Start an asynchronous write.
-  /**
-   * This function is used to asynchronously write data to the stream socket.
-   * The function call always returns immediately.
-   *
-   * @param buffers One or more data buffers to be written to the socket.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param handler The handler to be called when the write operation completes.
-   * Copies will be made of the handler as required. The function signature of
-   * the handler must be:
-   * @code void handler(
-   *   const boost::system::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes written.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * boost::asio::io_service::post().
-   *
-   * @note The write operation may not transmit all of the data to the peer.
-   * Consider using the @ref async_write function if you need to ensure that all
-   * data is written before the asynchronous operation completes.
-   *
-   * @par Example
-   * To write a single data buffer use the @ref buffer function as follows:
-   * @code
-   * socket.async_write_some(boost::asio::buffer(data, size), handler);
-   * @endcode
-   * See the @ref buffer documentation for information on writing multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence, typename WriteHandler>
-  void async_write_some(const ConstBufferSequence& buffers,
-      WriteHandler handler)
-  {
-    this->service.async_send(this->implementation, buffers, 0, handler);
-  }
-
-  /// Read some data from the socket.
-  /**
-   * This function is used to read data from the stream socket. The function
-   * call will block until one or more bytes of data has been read successfully,
-   * or until an error occurs.
-   *
-   * @param buffers One or more buffers into which the data will be read.
-   *
-   * @returns The number of bytes read.
-   *
-   * @throws boost::system::system_error Thrown on failure. An error code of
-   * boost::asio::error::eof indicates that the connection was closed by the
-   * peer.
-   *
-   * @note The read_some operation may not read all of the requested number of
-   * bytes. Consider using the @ref read function if you need to ensure that
-   * the requested amount of data is read before the blocking operation
-   * completes.
-   *
-   * @par Example
-   * To read into a single data buffer use the @ref buffer function as follows:
-   * @code
-   * socket.read_some(boost::asio::buffer(data, size));
-   * @endcode
-   * See the @ref buffer documentation for information on reading into multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t read_some(const MutableBufferSequence& buffers)
-  {
-    boost::system::error_code ec;
-    std::size_t s = this->service.receive(this->implementation, buffers, 0, ec);
-    boost::asio::detail::throw_error(ec);
-    return s;
-  }
-
-  /// Read some data from the socket.
-  /**
-   * This function is used to read data from the stream socket. The function
-   * call will block until one or more bytes of data has been read successfully,
-   * or until an error occurs.
-   *
-   * @param buffers One or more buffers into which the data will be read.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes read. Returns 0 if an error occurred.
-   *
-   * @note The read_some operation may not read all of the requested number of
-   * bytes. Consider using the @ref read function if you need to ensure that
-   * the requested amount of data is read before the blocking operation
-   * completes.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t read_some(const MutableBufferSequence& buffers,
-      boost::system::error_code& ec)
-  {
-    return this->service.receive(this->implementation, buffers, 0, ec);
-  }
-
-  /// Start an asynchronous read.
-  /**
-   * This function is used to asynchronously read data from the stream socket.
-   * The function call always returns immediately.
-   *
-   * @param buffers One or more buffers into which the data will be read.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param handler The handler to be called when the read operation completes.
-   * Copies will be made of the handler as required. The function signature of
-   * the handler must be:
-   * @code void handler(
-   *   const boost::system::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes read.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * boost::asio::io_service::post().
-   *
-   * @note The read operation may not read all of the requested number of bytes.
-   * Consider using the @ref async_read function if you need to ensure that the
-   * requested amount of data is read before the asynchronous operation
-   * completes.
-   *
-   * @par Example
-   * To read into a single data buffer use the @ref buffer function as follows:
-   * @code
-   * socket.async_read_some(boost::asio::buffer(data, size), handler);
-   * @endcode
-   * See the @ref buffer documentation for information on reading into multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence, typename ReadHandler>
-  void async_read_some(const MutableBufferSequence& buffers,
-      ReadHandler handler)
-  {
-    this->service.async_receive(this->implementation, buffers, 0, handler);
-  }
-};
-
-} // namespace asio
-} // namespace boost
-
-#include <boost/asio/detail/pop_options.hpp>
-
-#endif // BOOST_ASIO_BASIC_STREAM_SOCKET_HPP

+ 0 - 342
feng-authnotify/ext/boost/asio/basic_streambuf.hpp

@@ -1,342 +0,0 @@
-//
-// basic_streambuf.hpp
-// ~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef BOOST_ASIO_BASIC_STREAMBUF_HPP
-#define BOOST_ASIO_BASIC_STREAMBUF_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include <boost/asio/detail/push_options.hpp>
-
-#include <boost/asio/detail/push_options.hpp>
-#include <algorithm>
-#include <cstring>
-#include <limits>
-#include <memory>
-#include <stdexcept>
-#include <streambuf>
-#include <vector>
-#include <boost/throw_exception.hpp>
-#include <boost/asio/detail/pop_options.hpp>
-
-#include <boost/asio/buffer.hpp>
-#include <boost/asio/detail/noncopyable.hpp>
-
-namespace boost {
-namespace asio {
-
-/// Automatically resizable buffer class based on std::streambuf.
-/**
- * The @c basic_streambuf class is derived from @c std::streambuf to associate
- * the streambuf's input and output sequences with one or more character
- * arrays. These character arrays are internal to the @c basic_streambuf
- * object, but direct access to the array elements is provided to permit them
- * to be used efficiently with I/O operations. Characters written to the output
- * sequence of a @c basic_streambuf object are appended to the input sequence
- * of the same object.
- *
- * The @c basic_streambuf class's public interface is intended to permit the
- * following implementation strategies:
- *
- * @li A single contiguous character array, which is reallocated as necessary
- * to accommodate changes in the size of the character sequence. This is the
- * implementation approach currently used in Asio.
- *
- * @li A sequence of one or more character arrays, where each array is of the
- * same size. Additional character array objects are appended to the sequence
- * to accommodate changes in the size of the character sequence.
- *
- * @li A sequence of one or more character arrays of varying sizes. Additional
- * character array objects are appended to the sequence to accommodate changes
- * in the size of the character sequence.
- *
- * The constructor for basic_streambuf accepts a @c size_t argument specifying
- * the maximum of the sum of the sizes of the input sequence and output
- * sequence. During the lifetime of the @c basic_streambuf object, the following
- * invariant holds:
- * @code size() <= max_size()@endcode
- * Any member function that would, if successful, cause the invariant to be
- * violated shall throw an exception of class @c std::length_error.
- *
- * The constructor for @c basic_streambuf takes an Allocator argument. A copy
- * of this argument is used for any memory allocation performed, by the
- * constructor and by all member functions, during the lifetime of each @c
- * basic_streambuf object.
- *
- * @par Examples
- * Writing directly from an streambuf to a socket:
- * @code
- * boost::asio::streambuf b;
- * std::ostream os(&b);
- * os << "Hello, World!\n";
- *
- * // try sending some data in input sequence
- * size_t n = sock.send(b.data());
- *
- * b.consume(n); // sent data is removed from input sequence
- * @endcode
- *
- * Reading from a socket directly into a streambuf:
- * @code
- * boost::asio::streambuf b;
- *
- * // reserve 512 bytes in output sequence
- * boost::asio::streambuf::const_buffers_type bufs = b.prepare(512);
- *
- * size_t n = sock.receive(bufs);
- *
- * // received data is "committed" from output sequence to input sequence
- * b.commit(n);
- *
- * std::istream is(&b);
- * std::string s;
- * is >> s;
- * @endcode
- */
-template <typename Allocator = std::allocator<char> >
-class basic_streambuf
-  : public std::streambuf,
-    private noncopyable
-{
-public:
-#if defined(GENERATING_DOCUMENTATION)
-  /// The type used to represent the input sequence as a list of buffers.
-  typedef implementation_defined const_buffers_type;
-
-  /// The type used to represent the output sequence as a list of buffers.
-  typedef implementation_defined mutable_buffers_type;
-#else
-  typedef boost::asio::const_buffers_1 const_buffers_type;
-  typedef boost::asio::mutable_buffers_1 mutable_buffers_type;
-#endif
-
-  /// Construct a basic_streambuf object.
-  /**
-   * Constructs a streambuf with the specified maximum size. The initial size
-   * of the streambuf's input sequence is 0.
-   */
-  explicit basic_streambuf(
-      std::size_t max_size = (std::numeric_limits<std::size_t>::max)(),
-      const Allocator& allocator = Allocator())
-    : max_size_(max_size),
-      buffer_(allocator)
-  {
-    std::size_t pend = (std::min<std::size_t>)(max_size_, buffer_delta);
-    buffer_.resize((std::max<std::size_t>)(pend, 1));
-    setg(&buffer_[0], &buffer_[0], &buffer_[0]);
-    setp(&buffer_[0], &buffer_[0] + pend);
-  }
-
-  /// Get the size of the input sequence.
-  /**
-   * @returns The size of the input sequence. The value is equal to that
-   * calculated for @c s in the following code:
-   * @code
-   * size_t s = 0;
-   * const_buffers_type bufs = data();
-   * const_buffers_type::const_iterator i = bufs.begin();
-   * while (i != bufs.end())
-   * {
-   *   const_buffer buf(*i++);
-   *   s += buffer_size(buf);
-   * }
-   * @endcode
-   */
-  std::size_t size() const
-  {
-    return pptr() - gptr();
-  }
-
-  /// Get the maximum size of the basic_streambuf.
-  /**
-   * @returns The allowed maximum of the sum of the sizes of the input sequence
-   * and output sequence.
-   */
-  std::size_t max_size() const
-  {
-    return max_size_;
-  }
-
-  /// Get a list of buffers that represents the input sequence.
-  /**
-   * @returns An object of type @c const_buffers_type that satisfies
-   * ConstBufferSequence requirements, representing all character arrays in the
-   * input sequence.
-   *
-   * @note The returned object is invalidated by any @c basic_streambuf member
-   * function that modifies the input sequence or output sequence.
-   */
-  const_buffers_type data() const
-  {
-    return boost::asio::buffer(boost::asio::const_buffer(gptr(),
-          (pptr() - gptr()) * sizeof(char_type)));
-  }
-
-  /// Get a list of buffers that represents the output sequence, with the given
-  /// size.
-  /**
-   * Ensures that the output sequence can accommodate @c n characters,
-   * reallocating character array objects as necessary.
-   *
-   * @returns An object of type @c mutable_buffers_type that satisfies
-   * MutableBufferSequence requirements, representing character array objects
-   * at the start of the output sequence such that the sum of the buffer sizes
-   * is @c n.
-   *
-   * @throws std::length_error If <tt>size() + n > max_size()</tt>.
-   *
-   * @note The returned object is invalidated by any @c basic_streambuf member
-   * function that modifies the input sequence or output sequence.
-   */
-  mutable_buffers_type prepare(std::size_t n)
-  {
-    reserve(n);
-    return boost::asio::buffer(boost::asio::mutable_buffer(
-          pptr(), n * sizeof(char_type)));
-  }
-
-  /// Move characters from the output sequence to the input sequence.
-  /**
-   * Appends @c n characters from the start of the output sequence to the input
-   * sequence. The beginning of the output sequence is advanced by @c n
-   * characters.
-   *
-   * Requires a preceding call <tt>prepare(x)</tt> where <tt>x >= n</tt>, and
-   * no intervening operations that modify the input or output sequence.
-   *
-   * @throws std::length_error If @c n is greater than the size of the output
-   * sequence.
-   */
-  void commit(std::size_t n)
-  {
-    if (pptr() + n > epptr())
-      n = epptr() - pptr();
-    pbump(static_cast<int>(n));
-    setg(eback(), gptr(), pptr());
-  }
-
-  /// Remove characters from the input sequence.
-  /**
-   * Removes @c n characters from the beginning of the input sequence.
-   *
-   * @throws std::length_error If <tt>n > size()</tt>.
-   */
-  void consume(std::size_t n)
-  {
-    if (gptr() + n > pptr())
-      n = pptr() - gptr();
-    gbump(static_cast<int>(n));
-  }
-
-protected:
-  enum { buffer_delta = 128 };
-
-  /// Override std::streambuf behaviour.
-  /**
-   * Behaves according to the specification of @c std::streambuf::underflow().
-   */
-  int_type underflow()
-  {
-    if (gptr() < pptr())
-    {
-      setg(&buffer_[0], gptr(), pptr());
-      return traits_type::to_int_type(*gptr());
-    }
-    else
-    {
-      return traits_type::eof();
-    }
-  }
-
-  /// Override std::streambuf behaviour.
-  /**
-   * Behaves according to the specification of @c std::streambuf::overflow(),
-   * with the specialisation that @c std::length_error is thrown if appending
-   * the character to the input sequence would require the condition
-   * <tt>size() > max_size()</tt> to be true.
-   */
-  int_type overflow(int_type c)
-  {
-    if (!traits_type::eq_int_type(c, traits_type::eof()))
-    {
-      if (pptr() == epptr())
-      {
-        std::size_t buffer_size = pptr() - gptr();
-        if (buffer_size < max_size_ && max_size_ - buffer_size < buffer_delta)
-        {
-          reserve(max_size_ - buffer_size);
-        }
-        else
-        {
-          reserve(buffer_delta);
-        }
-      }
-
-      *pptr() = traits_type::to_char_type(c);
-      pbump(1);
-      return c;
-    }
-
-    return traits_type::not_eof(c);
-  }
-
-  void reserve(std::size_t n)
-  {
-    // Get current stream positions as offsets.
-    std::size_t gnext = gptr() - &buffer_[0];
-    std::size_t pnext = pptr() - &buffer_[0];
-    std::size_t pend = epptr() - &buffer_[0];
-
-    // Check if there is already enough space in the put area.
-    if (n <= pend - pnext)
-    {
-      return;
-    }
-
-    // Shift existing contents of get area to start of buffer.
-    if (gnext > 0)
-    {
-      pnext -= gnext;
-      std::memmove(&buffer_[0], &buffer_[0] + gnext, pnext);
-    }
-
-    // Ensure buffer is large enough to hold at least the specified size.
-    if (n > pend - pnext)
-    {
-      if (n <= max_size_ && pnext <= max_size_ - n)
-      {
-        pend = pnext + n;
-        buffer_.resize((std::max<std::size_t>)(pend, 1));
-      }
-      else
-      {
-        std::length_error ex("boost::asio::streambuf too long");
-        boost::throw_exception(ex);
-      }
-    }
-
-    // Update stream positions.
-    setg(&buffer_[0], &buffer_[0], &buffer_[0] + pnext);
-    setp(&buffer_[0] + pnext, &buffer_[0] + pend);
-  }
-
-private:
-  std::size_t max_size_;
-  std::vector<char_type, Allocator> buffer_;
-};
-
-} // namespace asio
-} // namespace boost
-
-#include <boost/asio/detail/pop_options.hpp>
-
-#endif // BOOST_ASIO_BASIC_STREAMBUF_HPP

File diff suppressed because it is too large
+ 0 - 1042
feng-authnotify/ext/boost/asio/buffer.hpp


+ 0 - 463
feng-authnotify/ext/boost/asio/buffered_read_stream.hpp

@@ -1,463 +0,0 @@
-//
-// buffered_read_stream.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef BOOST_ASIO_BUFFERED_READ_STREAM_HPP
-#define BOOST_ASIO_BUFFERED_READ_STREAM_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include <boost/asio/detail/push_options.hpp>
-
-#include <boost/asio/detail/push_options.hpp>
-#include <cstddef>
-#include <cstring>
-#include <boost/config.hpp>
-#include <boost/type_traits.hpp>
-#include <boost/asio/detail/pop_options.hpp>
-
-#include <boost/asio/buffered_read_stream_fwd.hpp>
-#include <boost/asio/buffer.hpp>
-#include <boost/asio/error.hpp>
-#include <boost/asio/io_service.hpp>
-#include <boost/asio/detail/bind_handler.hpp>
-#include <boost/asio/detail/buffer_resize_guard.hpp>
-#include <boost/asio/detail/buffered_stream_storage.hpp>
-#include <boost/asio/detail/noncopyable.hpp>
-
-namespace boost {
-namespace asio {
-
-/// Adds buffering to the read-related operations of a stream.
-/**
- * The buffered_read_stream class template can be used to add buffering to the
- * synchronous and asynchronous read operations of a stream.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- *
- * @par Concepts:
- * AsyncReadStream, AsyncWriteStream, Stream, Sync_Read_Stream, SyncWriteStream.
- */
-template <typename Stream>
-class buffered_read_stream
-  : private noncopyable
-{
-public:
-  /// The type of the next layer.
-  typedef typename boost::remove_reference<Stream>::type next_layer_type;
-
-  /// The type of the lowest layer.
-  typedef typename next_layer_type::lowest_layer_type lowest_layer_type;
-
-#if defined(GENERATING_DOCUMENTATION)
-  /// The default buffer size.
-  static const std::size_t default_buffer_size = implementation_defined;
-#else
-  BOOST_STATIC_CONSTANT(std::size_t, default_buffer_size = 1024);
-#endif
-
-  /// Construct, passing the specified argument to initialise the next layer.
-  template <typename Arg>
-  explicit buffered_read_stream(Arg& a)
-    : next_layer_(a),
-      storage_(default_buffer_size)
-  {
-  }
-
-  /// Construct, passing the specified argument to initialise the next layer.
-  template <typename Arg>
-  buffered_read_stream(Arg& a, std::size_t buffer_size)
-    : next_layer_(a),
-      storage_(buffer_size)
-  {
-  }
-
-  /// Get a reference to the next layer.
-  next_layer_type& next_layer()
-  {
-    return next_layer_;
-  }
-
-  /// Get a reference to the lowest layer.
-  lowest_layer_type& lowest_layer()
-  {
-    return next_layer_.lowest_layer();
-  }
-
-  /// Get a const reference to the lowest layer.
-  const lowest_layer_type& lowest_layer() const
-  {
-    return next_layer_.lowest_layer();
-  }
-
-  /// (Deprecated: use get_io_service().) Get the io_service associated with
-  /// the object.
-  boost::asio::io_service& io_service()
-  {
-    return next_layer_.get_io_service();
-  }
-
-  /// Get the io_service associated with the object.
-  boost::asio::io_service& get_io_service()
-  {
-    return next_layer_.get_io_service();
-  }
-
-  /// Close the stream.
-  void close()
-  {
-    next_layer_.close();
-  }
-
-  /// Close the stream.
-  boost::system::error_code close(boost::system::error_code& ec)
-  {
-    return next_layer_.close(ec);
-  }
-
-  /// Write the given data to the stream. Returns the number of bytes written.
-  /// Throws an exception on failure.
-  template <typename ConstBufferSequence>
-  std::size_t write_some(const ConstBufferSequence& buffers)
-  {
-    return next_layer_.write_some(buffers);
-  }
-
-  /// Write the given data to the stream. Returns the number of bytes written,
-  /// or 0 if an error occurred.
-  template <typename ConstBufferSequence>
-  std::size_t write_some(const ConstBufferSequence& buffers,
-      boost::system::error_code& ec)
-  {
-    return next_layer_.write_some(buffers, ec);
-  }
-
-  /// Start an asynchronous write. The data being written must be valid for the
-  /// lifetime of the asynchronous operation.
-  template <typename ConstBufferSequence, typename WriteHandler>
-  void async_write_some(const ConstBufferSequence& buffers,
-      WriteHandler handler)
-  {
-    next_layer_.async_write_some(buffers, handler);
-  }
-
-  /// Fill the buffer with some data. Returns the number of bytes placed in the
-  /// buffer as a result of the operation. Throws an exception on failure.
-  std::size_t fill()
-  {
-    detail::buffer_resize_guard<detail::buffered_stream_storage>
-      resize_guard(storage_);
-    std::size_t previous_size = storage_.size();
-    storage_.resize(storage_.capacity());
-    storage_.resize(previous_size + next_layer_.read_some(buffer(
-            storage_.data() + previous_size,
-            storage_.size() - previous_size)));
-    resize_guard.commit();
-    return storage_.size() - previous_size;
-  }
-
-  /// Fill the buffer with some data. Returns the number of bytes placed in the
-  /// buffer as a result of the operation, or 0 if an error occurred.
-  std::size_t fill(boost::system::error_code& ec)
-  {
-    detail::buffer_resize_guard<detail::buffered_stream_storage>
-      resize_guard(storage_);
-    std::size_t previous_size = storage_.size();
-    storage_.resize(storage_.capacity());
-    storage_.resize(previous_size + next_layer_.read_some(buffer(
-            storage_.data() + previous_size,
-            storage_.size() - previous_size),
-          ec));
-    resize_guard.commit();
-    return storage_.size() - previous_size;
-  }
-
-  template <typename ReadHandler>
-  class fill_handler
-  {
-  public:
-    fill_handler(boost::asio::io_service& io_service,
-        detail::buffered_stream_storage& storage,
-        std::size_t previous_size, ReadHandler handler)
-      : io_service_(io_service),
-        storage_(storage),
-        previous_size_(previous_size),
-        handler_(handler)
-    {
-    }
-
-    void operator()(const boost::system::error_code& ec,
-        std::size_t bytes_transferred)
-    {
-      storage_.resize(previous_size_ + bytes_transferred);
-      io_service_.dispatch(detail::bind_handler(
-            handler_, ec, bytes_transferred));
-    }
-
-  private:
-    boost::asio::io_service& io_service_;
-    detail::buffered_stream_storage& storage_;
-    std::size_t previous_size_;
-    ReadHandler handler_;
-  };
-
-  /// Start an asynchronous fill.
-  template <typename ReadHandler>
-  void async_fill(ReadHandler handler)
-  {
-    std::size_t previous_size = storage_.size();
-    storage_.resize(storage_.capacity());
-    next_layer_.async_read_some(
-        buffer(
-          storage_.data() + previous_size,
-          storage_.size() - previous_size),
-        fill_handler<ReadHandler>(get_io_service(),
-          storage_, previous_size, handler));
-  }
-
-  /// Read some data from the stream. Returns the number of bytes read. Throws
-  /// an exception on failure.
-  template <typename MutableBufferSequence>
-  std::size_t read_some(const MutableBufferSequence& buffers)
-  {
-    typename MutableBufferSequence::const_iterator iter = buffers.begin();
-    typename MutableBufferSequence::const_iterator end = buffers.end();
-    size_t total_buffer_size = 0;
-    for (; iter != end; ++iter)
-    {
-      boost::asio::mutable_buffer buffer(*iter);
-      total_buffer_size += boost::asio::buffer_size(buffer);
-    }
-
-    if (total_buffer_size == 0)
-      return 0;
-
-    if (storage_.empty())
-      fill();
-
-    return copy(buffers);
-  }
-
-  /// Read some data from the stream. Returns the number of bytes read or 0 if
-  /// an error occurred.
-  template <typename MutableBufferSequence>
-  std::size_t read_some(const MutableBufferSequence& buffers,
-      boost::system::error_code& ec)
-  {
-    ec = boost::system::error_code();
-
-    typename MutableBufferSequence::const_iterator iter = buffers.begin();
-    typename MutableBufferSequence::const_iterator end = buffers.end();
-    size_t total_buffer_size = 0;
-    for (; iter != end; ++iter)
-    {
-      boost::asio::mutable_buffer buffer(*iter);
-      total_buffer_size += boost::asio::buffer_size(buffer);
-    }
-
-    if (total_buffer_size == 0)
-      return 0;
-
-    if (storage_.empty() && !fill(ec))
-      return 0;
-
-    return copy(buffers);
-  }
-
-  template <typename MutableBufferSequence, typename ReadHandler>
-  class read_some_handler
-  {
-  public:
-    read_some_handler(boost::asio::io_service& io_service,
-        detail::buffered_stream_storage& storage,
-        const MutableBufferSequence& buffers, ReadHandler handler)
-      : io_service_(io_service),
-        storage_(storage),
-        buffers_(buffers),
-        handler_(handler)
-    {
-    }
-
-    void operator()(const boost::system::error_code& ec, std::size_t)
-    {
-      if (ec || storage_.empty())
-      {
-        std::size_t length = 0;
-        io_service_.dispatch(detail::bind_handler(handler_, ec, length));
-      }
-      else
-      {
-        using namespace std; // For memcpy.
-
-        std::size_t bytes_avail = storage_.size();
-        std::size_t bytes_copied = 0;
-
-        typename MutableBufferSequence::const_iterator iter = buffers_.begin();
-        typename MutableBufferSequence::const_iterator end = buffers_.end();
-        for (; iter != end && bytes_avail > 0; ++iter)
-        {
-          std::size_t max_length = buffer_size(*iter);
-          std::size_t length = (max_length < bytes_avail)
-            ? max_length : bytes_avail;
-          memcpy(buffer_cast<void*>(*iter),
-              storage_.data() + bytes_copied, length);
-          bytes_copied += length;
-          bytes_avail -= length;
-        }
-
-        storage_.consume(bytes_copied);
-        io_service_.dispatch(detail::bind_handler(handler_, ec, bytes_copied));
-      }
-    }
-
-  private:
-    boost::asio::io_service& io_service_;
-    detail::buffered_stream_storage& storage_;
-    MutableBufferSequence buffers_;
-    ReadHandler handler_;
-  };
-
-  /// Start an asynchronous read. The buffer into which the data will be read
-  /// must be valid for the lifetime of the asynchronous operation.
-  template <typename MutableBufferSequence, typename ReadHandler>
-  void async_read_some(const MutableBufferSequence& buffers,
-      ReadHandler handler)
-  {
-    typename MutableBufferSequence::const_iterator iter = buffers.begin();
-    typename MutableBufferSequence::const_iterator end = buffers.end();
-    size_t total_buffer_size = 0;
-    for (; iter != end; ++iter)
-    {
-      boost::asio::mutable_buffer buffer(*iter);
-      total_buffer_size += boost::asio::buffer_size(buffer);
-    }
-
-    if (total_buffer_size == 0)
-    {
-      get_io_service().post(detail::bind_handler(
-            handler, boost::system::error_code(), 0));
-    }
-    else if (storage_.empty())
-    {
-      async_fill(read_some_handler<MutableBufferSequence, ReadHandler>(
-            get_io_service(), storage_, buffers, handler));
-    }
-    else
-    {
-      std::size_t length = copy(buffers);
-      get_io_service().post(detail::bind_handler(
-            handler, boost::system::error_code(), length));
-    }
-  }
-
-  /// Peek at the incoming data on the stream. Returns the number of bytes read.
-  /// Throws an exception on failure.
-  template <typename MutableBufferSequence>
-  std::size_t peek(const MutableBufferSequence& buffers)
-  {
-    if (storage_.empty())
-      fill();
-    return peek_copy(buffers);
-  }
-
-  /// Peek at the incoming data on the stream. Returns the number of bytes read,
-  /// or 0 if an error occurred.
-  template <typename MutableBufferSequence>
-  std::size_t peek(const MutableBufferSequence& buffers,
-      boost::system::error_code& ec)
-  {
-    ec = boost::system::error_code();
-    if (storage_.empty() && !fill(ec))
-      return 0;
-    return peek_copy(buffers);
-  }
-
-  /// Determine the amount of data that may be read without blocking.
-  std::size_t in_avail()
-  {
-    return storage_.size();
-  }
-
-  /// Determine the amount of data that may be read without blocking.
-  std::size_t in_avail(boost::system::error_code& ec)
-  {
-    ec = boost::system::error_code();
-    return storage_.size();
-  }
-
-private:
-  /// Copy data out of the internal buffer to the specified target buffer.
-  /// Returns the number of bytes copied.
-  template <typename MutableBufferSequence>
-  std::size_t copy(const MutableBufferSequence& buffers)
-  {
-    using namespace std; // For memcpy.
-
-    std::size_t bytes_avail = storage_.size();
-    std::size_t bytes_copied = 0;
-
-    typename MutableBufferSequence::const_iterator iter = buffers.begin();
-    typename MutableBufferSequence::const_iterator end = buffers.end();
-    for (; iter != end && bytes_avail > 0; ++iter)
-    {
-      std::size_t max_length = buffer_size(*iter);
-      std::size_t length = (max_length < bytes_avail)
-        ? max_length : bytes_avail;
-      memcpy(buffer_cast<void*>(*iter), storage_.data() + bytes_copied, length);
-      bytes_copied += length;
-      bytes_avail -= length;
-    }
-
-    storage_.consume(bytes_copied);
-    return bytes_copied;
-  }
-
-  /// Copy data from the internal buffer to the specified target buffer, without
-  /// removing the data from the internal buffer. Returns the number of bytes
-  /// copied.
-  template <typename MutableBufferSequence>
-  std::size_t peek_copy(const MutableBufferSequence& buffers)
-  {
-    using namespace std; // For memcpy.
-
-    std::size_t bytes_avail = storage_.size();
-    std::size_t bytes_copied = 0;
-
-    typename MutableBufferSequence::const_iterator iter = buffers.begin();
-    typename MutableBufferSequence::const_iterator end = buffers.end();
-    for (; iter != end && bytes_avail > 0; ++iter)
-    {
-      std::size_t max_length = buffer_size(*iter);
-      std::size_t length = (max_length < bytes_avail)
-        ? max_length : bytes_avail;
-      memcpy(buffer_cast<void*>(*iter), storage_.data() + bytes_copied, length);
-      bytes_copied += length;
-      bytes_avail -= length;
-    }
-
-    return bytes_copied;
-  }
-
-  /// The next layer.
-  Stream next_layer_;
-
-  // The data in the buffer.
-  detail::buffered_stream_storage storage_;
-};
-
-} // namespace asio
-} // namespace boost
-
-#include <boost/asio/detail/pop_options.hpp>
-
-#endif // BOOST_ASIO_BUFFERED_READ_STREAM_HPP

+ 0 - 31
feng-authnotify/ext/boost/asio/buffered_read_stream_fwd.hpp

@@ -1,31 +0,0 @@
-//
-// buffered_read_stream_fwd.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef BOOST_ASIO_BUFFERED_READ_STREAM_FWD_HPP
-#define BOOST_ASIO_BUFFERED_READ_STREAM_FWD_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include <boost/asio/detail/push_options.hpp>
-
-namespace boost {
-namespace asio {
-
-template <typename Stream>
-class buffered_read_stream;
-
-} // namespace asio
-} // namespace boost
-
-#include <boost/asio/detail/pop_options.hpp>
-
-#endif // BOOST_ASIO_BUFFERED_READ_STREAM_FWD_HPP

+ 0 - 0
feng-authnotify/ext/boost/asio/buffered_stream.hpp


Some files were not shown because too many files changed in this diff