diff options
| author | Remko Tronçon <git@el-tramo.be> | 2010-02-11 12:14:00 (GMT) | 
|---|---|---|
| committer | Remko Tronçon <git@el-tramo.be> | 2010-02-11 12:14:00 (GMT) | 
| commit | 0efa7c32aaf21a29b42b5926cc116007056843be (patch) | |
| tree | 882f663a5dd0e65694bf6077b71086dd77fd7ff8 /3rdParty/Boost/boost/regex | |
| parent | 1d20eabbc32274b491b4c2bedf73d19933d97bfd (diff) | |
| download | swift-contrib-0efa7c32aaf21a29b42b5926cc116007056843be.zip swift-contrib-0efa7c32aaf21a29b42b5926cc116007056843be.tar.bz2  | |
Moved some modules into separate git modules.
Diffstat (limited to '3rdParty/Boost/boost/regex')
54 files changed, 0 insertions, 20358 deletions
diff --git a/3rdParty/Boost b/3rdParty/Boost new file mode 160000 +Subproject 3bbdbc8cf1996f23d9a366da8bac0f97be6ad79 diff --git a/3rdParty/Boost/boost/regex/config.hpp b/3rdParty/Boost/boost/regex/config.hpp deleted file mode 100644 index 8c8f524..0000000 --- a/3rdParty/Boost/boost/regex/config.hpp +++ /dev/null @@ -1,417 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ - - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         config.hpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: regex extended config setup. -  */ - -#ifndef BOOST_REGEX_CONFIG_HPP -#define BOOST_REGEX_CONFIG_HPP -/* - * Borland C++ Fix/error check - * this has to go *before* we include any std lib headers: - */ -#if defined(__BORLANDC__) -#  include <boost/regex/config/borland.hpp> -#endif - -/***************************************************************************** - * - *  Include all the headers we need here: - * - ****************************************************************************/ - -#ifdef __cplusplus - -#  ifndef BOOST_REGEX_USER_CONFIG -#     define BOOST_REGEX_USER_CONFIG <boost/regex/user.hpp> -#  endif - -#  include BOOST_REGEX_USER_CONFIG - -#  include <boost/config.hpp> - -#else -   /* -    * C build, -    * don't include <boost/config.hpp> because that may -    * do C++ specific things in future... -    */ -#  include <stdlib.h> -#  include <stddef.h> -#  ifdef _MSC_VER -#     define BOOST_MSVC _MSC_VER -#  endif -#endif - -/***************************************************************************** - * - *  Boilerplate regex config options: - * - ****************************************************************************/ - -/* Obsolete macro, use BOOST_VERSION instead: */ -#define BOOST_RE_VERSION 320 - -/* fix: */ -#if defined(_UNICODE) && !defined(UNICODE) -#define UNICODE -#endif - -/* - * Fix for gcc prior to 3.4: std::ctype<wchar_t> doesn't allow - * masks to be combined, for example: - * std::use_facet<std::ctype<wchar_t> >.is(std::ctype_base::lower|std::ctype_base::upper, L'a'); - * returns *false*. - */ -#ifdef __GLIBCPP__ -#  define BOOST_REGEX_BUGGY_CTYPE_FACET -#endif - -/* - * Intel C++ before 8.0 ends up with unresolved externals unless we turn off - * extern template support: - */ -#if defined(BOOST_INTEL) && defined(__cplusplus) && (BOOST_INTEL <= 800) -#  define BOOST_REGEX_NO_EXTERNAL_TEMPLATES -#endif -/* - * Visual C++ doesn't support external templates with C++ extensions turned off: - */ -#if defined(_MSC_VER) && !defined(_MSC_EXTENSIONS) -#  define BOOST_REGEX_NO_EXTERNAL_TEMPLATES -#endif - -/* - * If there isn't good enough wide character support then there will - * be no wide character regular expressions: - */ -#if (defined(BOOST_NO_CWCHAR) || defined(BOOST_NO_CWCTYPE) || defined(BOOST_NO_STD_WSTRING)) -#  if !defined(BOOST_NO_WREGEX) -#     define BOOST_NO_WREGEX -#  endif -#else -#  if defined(__sgi) && (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) -      /* STLPort on IRIX is misconfigured: <cwctype> does not compile -       * as a temporary fix include <wctype.h> instead and prevent inclusion -       * of STLPort version of <cwctype> */ -#     include <wctype.h> -#     define __STLPORT_CWCTYPE -#     define _STLP_CWCTYPE -#  endif - -#ifdef __cplusplus -#  include <boost/regex/config/cwchar.hpp> -#endif - -#endif - -/* - * If Win32 support has been disabled for boost in general, then - * it is for regex in particular: - */ -#if defined(BOOST_DISABLE_WIN32) && !defined(BOOST_REGEX_NO_W32) -#  define BOOST_REGEX_NO_W32 -#endif - -/* disable our own file-iterators and mapfiles if we can't - * support them: */ -#if !defined(BOOST_HAS_DIRENT_H) && !(defined(_WIN32) && !defined(BOOST_REGEX_NO_W32)) -#  define BOOST_REGEX_NO_FILEITER -#endif - -/* backwards compatibitity: */ -#if defined(BOOST_RE_NO_LIB) -#  define BOOST_REGEX_NO_LIB -#endif - -#if defined(__GNUC__) && (defined(_WIN32) || defined(__CYGWIN__)) -/* gcc on win32 has problems if you include <windows.h> -   (sporadically generates bad code). */ -#  define BOOST_REGEX_NO_W32 -#endif -#if defined(__COMO__) && !defined(BOOST_REGEX_NO_W32) && !defined(_MSC_EXTENSIONS) -#  define BOOST_REGEX_NO_W32 -#endif - -/***************************************************************************** - * - *  Wide character workarounds: - * - ****************************************************************************/ - -/* - * define BOOST_REGEX_HAS_OTHER_WCHAR_T when wchar_t is a native type, but the users - * code may be built with wchar_t as unsigned short: basically when we're building - * with MSVC and the /Zc:wchar_t option we place some extra unsigned short versions - * of the non-inline functions in the library, so that users can still link to the lib, - * irrespective of whether their own code is built with /Zc:wchar_t. - */ -#if defined(__cplusplus) && (defined(BOOST_MSVC) || defined(__ICL)) && !defined(BOOST_NO_INTRINSIC_WCHAR_T) && defined(BOOST_WINDOWS) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION) && !defined(BOOST_RWSTD_VER) -#  define BOOST_REGEX_HAS_OTHER_WCHAR_T -#  ifdef BOOST_MSVC -#     pragma warning(push) -#     pragma warning(disable : 4251 4231 4660) -#  endif -#  ifdef _DLL -#     include <string> -      extern template class __declspec(dllimport) std::basic_string<unsigned short>; -#  endif -#  ifdef BOOST_MSVC -#     pragma warning(pop) -#  endif -#endif - - -/***************************************************************************** - * - *  Set up dll import/export options: - * - ****************************************************************************/ - -#if defined(BOOST_HAS_DECLSPEC) && (defined(BOOST_REGEX_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)) && !defined(BOOST_REGEX_STATIC_LINK) -#  if defined(BOOST_REGEX_SOURCE) -#     define BOOST_REGEX_DECL __declspec(dllexport) -#     define BOOST_REGEX_BUILD_DLL -#  else -#     define BOOST_REGEX_DECL __declspec(dllimport) -#  endif -#endif - -#ifndef BOOST_REGEX_DECL -#  define BOOST_REGEX_DECL -#endif - -#if !defined(BOOST_REGEX_NO_LIB) && !defined(BOOST_REGEX_SOURCE) && !defined(BOOST_ALL_NO_LIB) && defined(__cplusplus) -#  define BOOST_LIB_NAME boost_regex -#  if defined(BOOST_REGEX_DYN_LINK) || defined(BOOST_ALL_DYN_LINK) -#     define BOOST_DYN_LINK -#  endif -#  ifdef BOOST_REGEX_DIAG -#     define BOOST_LIB_DIAGNOSTIC -#  endif -#  include <boost/config/auto_link.hpp> -#endif - -/***************************************************************************** - * - *  Set up function call type: - * - ****************************************************************************/ - -#if defined(BOOST_MSVC) && (BOOST_MSVC >= 1200) && defined(_MSC_EXTENSIONS) -#if defined(_DEBUG) || defined(__MSVC_RUNTIME_CHECKS) || defined(_MANAGED) -#  define BOOST_REGEX_CALL __cdecl -#else -#  define BOOST_REGEX_CALL __fastcall -#endif -#  define BOOST_REGEX_CCALL __cdecl -#endif - -#if defined(__BORLANDC__) && !defined(BOOST_DISABLE_WIN32) -#  define BOOST_REGEX_CALL __fastcall -#  define BOOST_REGEX_CCALL __stdcall -#endif - -#ifndef BOOST_REGEX_CALL -#  define BOOST_REGEX_CALL -#endif -#ifndef BOOST_REGEX_CCALL -#define BOOST_REGEX_CCALL -#endif - -/***************************************************************************** - * - *  Set up localisation model: - * - ****************************************************************************/ - -/* backwards compatibility: */ -#ifdef BOOST_RE_LOCALE_C -#  define BOOST_REGEX_USE_C_LOCALE -#endif - -#ifdef BOOST_RE_LOCALE_CPP -#  define BOOST_REGEX_USE_CPP_LOCALE -#endif - -/* Win32 defaults to native Win32 locale: */ -#if defined(_WIN32) && !defined(BOOST_REGEX_USE_WIN32_LOCALE) && !defined(BOOST_REGEX_USE_C_LOCALE) && !defined(BOOST_REGEX_USE_CPP_LOCALE) && !defined(BOOST_REGEX_NO_W32) -#  define BOOST_REGEX_USE_WIN32_LOCALE -#endif -/* otherwise use C++ locale if supported: */ -#if !defined(BOOST_REGEX_USE_WIN32_LOCALE) && !defined(BOOST_REGEX_USE_C_LOCALE) && !defined(BOOST_REGEX_USE_CPP_LOCALE) && !defined(BOOST_NO_STD_LOCALE) -#  define BOOST_REGEX_USE_CPP_LOCALE -#endif -/* otherwise use C+ locale: */ -#if !defined(BOOST_REGEX_USE_WIN32_LOCALE) && !defined(BOOST_REGEX_USE_C_LOCALE) && !defined(BOOST_REGEX_USE_CPP_LOCALE) -#  define BOOST_REGEX_USE_C_LOCALE -#endif - -#ifndef BOOST_REGEX_MAX_STATE_COUNT -#  define BOOST_REGEX_MAX_STATE_COUNT 100000000 -#endif - - -/***************************************************************************** - * - *  Error Handling for exception free compilers: - * - ****************************************************************************/ - -#ifdef BOOST_NO_EXCEPTIONS -/* - * If there are no exceptions then we must report critical-errors - * the only way we know how; by terminating. - */ -#include <stdexcept> -#include <string> -#include <boost/throw_exception.hpp> - -#  define BOOST_REGEX_NOEH_ASSERT(x)\ -if(0 == (x))\ -{\ -   std::string s("Error: critical regex++ failure in: ");\ -   s.append(#x);\ -   std::runtime_error e(s);\ -   boost::throw_exception(e);\ -} -#else -/* - * With exceptions then error handling is taken care of and - * there is no need for these checks: - */ -#  define BOOST_REGEX_NOEH_ASSERT(x) -#endif - - -/***************************************************************************** - * - *  Stack protection under MS Windows: - * - ****************************************************************************/ - -#if !defined(BOOST_REGEX_NO_W32) && !defined(BOOST_REGEX_V3) -#  if(defined(_WIN32) || defined(_WIN64) || defined(_WINCE)) \ -        && !defined(__GNUC__) \ -        && !(defined(__BORLANDC__) && (__BORLANDC__ >= 0x600)) \ -        && !(defined(__MWERKS__) && (__MWERKS__ <= 0x3003)) -#     define BOOST_REGEX_HAS_MS_STACK_GUARD -#  endif -#elif defined(BOOST_REGEX_HAS_MS_STACK_GUARD) -#  undef BOOST_REGEX_HAS_MS_STACK_GUARD -#endif - -#if defined(__cplusplus) && defined(BOOST_REGEX_HAS_MS_STACK_GUARD) - -namespace boost{ -namespace re_detail{ - -BOOST_REGEX_DECL void BOOST_REGEX_CALL reset_stack_guard_page(); - -} -} - -#endif - - -/***************************************************************************** - * - *  Algorithm selection and configuration: - * - ****************************************************************************/ - -#if !defined(BOOST_REGEX_RECURSIVE) && !defined(BOOST_REGEX_NON_RECURSIVE) -#  if defined(BOOST_REGEX_HAS_MS_STACK_GUARD) && !defined(_STLP_DEBUG) && !defined(__STL_DEBUG) && !(defined(BOOST_MSVC) && (BOOST_MSVC >= 1400)) -#     define BOOST_REGEX_RECURSIVE -#  else -#     define BOOST_REGEX_NON_RECURSIVE -#  endif -#endif - -#ifdef BOOST_REGEX_NON_RECURSIVE -#  ifdef BOOST_REGEX_RECURSIVE -#     error "Can't set both BOOST_REGEX_RECURSIVE and BOOST_REGEX_NON_RECURSIVE" -#  endif -#  ifndef BOOST_REGEX_BLOCKSIZE -#     define BOOST_REGEX_BLOCKSIZE 4096 -#  endif -#  if BOOST_REGEX_BLOCKSIZE < 512 -#     error "BOOST_REGEX_BLOCKSIZE must be at least 512" -#  endif -#  ifndef BOOST_REGEX_MAX_BLOCKS -#     define BOOST_REGEX_MAX_BLOCKS 1024 -#  endif -#  ifdef BOOST_REGEX_HAS_MS_STACK_GUARD -#     undef BOOST_REGEX_HAS_MS_STACK_GUARD -#  endif -#  ifndef BOOST_REGEX_MAX_CACHE_BLOCKS -#     define BOOST_REGEX_MAX_CACHE_BLOCKS 16 -#  endif -#endif - - -/***************************************************************************** - * - *  helper memory allocation functions: - * - ****************************************************************************/ - -#if defined(__cplusplus) && defined(BOOST_REGEX_NON_RECURSIVE) -namespace boost{ namespace re_detail{ - -BOOST_REGEX_DECL void* BOOST_REGEX_CALL get_mem_block(); -BOOST_REGEX_DECL void BOOST_REGEX_CALL put_mem_block(void*); - -}} /* namespaces */ -#endif - -/***************************************************************************** - * - *  Diagnostics: - * - ****************************************************************************/ - -#ifdef BOOST_REGEX_CONFIG_INFO -BOOST_REGEX_DECL void BOOST_REGEX_CALL print_regex_library_info(); -#endif - -#if defined(BOOST_REGEX_DIAG) -#  pragma message ("BOOST_REGEX_DECL" BOOST_STRINGIZE(=BOOST_REGEX_DECL)) -#  pragma message ("BOOST_REGEX_CALL" BOOST_STRINGIZE(=BOOST_REGEX_CALL)) -#  pragma message ("BOOST_REGEX_CCALL" BOOST_STRINGIZE(=BOOST_REGEX_CCALL)) -#ifdef BOOST_REGEX_USE_C_LOCALE -#  pragma message ("Using C locale in regex traits class") -#elif BOOST_REGEX_USE_CPP_LOCALE -#  pragma message ("Using C++ locale in regex traits class") -#else -#  pragma message ("Using Win32 locale in regex traits class") -#endif -#if defined(BOOST_REGEX_DYN_LINK) || defined(BOOST_ALL_DYN_LINK) -#  pragma message ("Dynamic linking enabled") -#endif -#if defined(BOOST_REGEX_NO_LIB) || defined(BOOST_ALL_NO_LIB) -#  pragma message ("Auto-linking disabled") -#endif -#ifdef BOOST_REGEX_NO_EXTERNAL_TEMPLATES -#  pragma message ("Extern templates disabled") -#endif - -#endif - -#endif - - - - diff --git a/3rdParty/Boost/boost/regex/config/borland.hpp b/3rdParty/Boost/boost/regex/config/borland.hpp deleted file mode 100644 index 51c2126..0000000 --- a/3rdParty/Boost/boost/regex/config/borland.hpp +++ /dev/null @@ -1,72 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ -  - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         boost/regex/config/borland.hpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: regex borland-specific config setup. -  */ - - -#if defined(__BORLANDC__) -#  if (__BORLANDC__ == 0x550) || (__BORLANDC__ == 0x551) -      // problems with std::basic_string and dll RTL: -#     if defined(_RTLDLL) && defined(_RWSTD_COMPILE_INSTANTIATE) -#        ifdef BOOST_REGEX_BUILD_DLL -#           error _RWSTD_COMPILE_INSTANTIATE must not be defined when building regex++ as a DLL -#        else -#           pragma message("Defining _RWSTD_COMPILE_INSTANTIATE when linking to the DLL version of the RTL may produce memory corruption problems in std::basic_string, as a result of separate versions of basic_string's static data in the RTL and you're exe/dll: be warned!!") -#        endif -#     endif -#     ifndef _RTLDLL -         // this is harmless for a staic link: -#        define _RWSTD_COMPILE_INSTANTIATE -#     endif -      // external templates cause problems for some reason: -#     define BOOST_REGEX_NO_EXTERNAL_TEMPLATES -#  endif -#  if (__BORLANDC__ <= 0x540) && !defined(BOOST_REGEX_NO_LIB) && !defined(_NO_VCL) -      // C++ Builder 4 and earlier, we can't tell whether we should be using -      // the VCL runtime or not, do a static link instead: -#     define BOOST_REGEX_STATIC_LINK -#  endif -   // -   // VCL support: -   // if we're building a console app then there can't be any VCL (can there?) -#  if !defined(__CONSOLE__) && !defined(_NO_VCL) -#     define BOOST_REGEX_USE_VCL -#  endif -   // -   // if this isn't Win32 then don't automatically select link -   // libraries: -   // -#  ifndef _Windows -#     ifndef BOOST_REGEX_NO_LIB -#        define BOOST_REGEX_NO_LIB -#     endif -#     ifndef BOOST_REGEX_STATIC_LINK -#        define BOOST_REGEX_STATIC_LINK -#     endif -#  endif - -#if __BORLANDC__ < 0x600 -// -// string workarounds: -// -#include <cstring> -#undef strcmp -#undef strcpy -#endif - -#endif - - diff --git a/3rdParty/Boost/boost/regex/config/cwchar.hpp b/3rdParty/Boost/boost/regex/config/cwchar.hpp deleted file mode 100644 index a55089d..0000000 --- a/3rdParty/Boost/boost/regex/config/cwchar.hpp +++ /dev/null @@ -1,207 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ -  - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         boost/regex/config/cwchar.hpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: regex wide character string fixes. -  */ - -#ifndef BOOST_REGEX_CONFIG_CWCHAR_HPP -#define BOOST_REGEX_CONFIG_CWCHAR_HPP - -#include <cwchar> -#include <cwctype> -#include <boost/config.hpp> - -#if defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER) -// apparently this is required for the RW STL on Linux: -#undef iswalnum -#undef iswalpha -#undef iswblank -#undef iswcntrl -#undef iswdigit -#undef iswgraph -#undef iswlower -#undef iswprint -#undef iswprint -#undef iswpunct -#undef iswspace -#undef iswupper -#undef iswxdigit -#undef iswctype -#undef towlower -#undef towupper -#undef towctrans -#undef wctrans -#undef wctype -#endif - -namespace std{ - -#ifndef BOOST_NO_STDC_NAMESPACE -extern "C"{ -#endif - -#ifdef iswalnum -inline int (iswalnum)(wint_t i) -{ return iswalnum(i); } -#undef iswalnum -#elif defined(BOOST_NO_STDC_NAMESPACE) -using ::iswalnum; -#endif - -#ifdef iswalpha -inline int (iswalpha)(wint_t i) -{ return iswalpha(i); } -#undef iswalpha -#elif defined(BOOST_NO_STDC_NAMESPACE) -using ::iswalpha; -#endif - -#ifdef iswcntrl -inline int (iswcntrl)(wint_t i) -{ return iswcntrl(i); } -#undef iswcntrl -#elif defined(BOOST_NO_STDC_NAMESPACE) -using ::iswcntrl; -#endif - -#ifdef iswdigit -inline int (iswdigit)(wint_t i) -{ return iswdigit(i); } -#undef iswdigit -#elif defined(BOOST_NO_STDC_NAMESPACE) -using ::iswdigit; -#endif - -#ifdef iswgraph -inline int (iswgraph)(wint_t i) -{ return iswgraph(i); } -#undef iswgraph -#elif defined(BOOST_NO_STDC_NAMESPACE) -using ::iswgraph; -#endif - -#ifdef iswlower -inline int (iswlower)(wint_t i) -{ return iswlower(i); } -#undef iswlower -#elif defined(BOOST_NO_STDC_NAMESPACE) -using ::iswlower; -#endif - -#ifdef iswprint -inline int (iswprint)(wint_t i) -{ return iswprint(i); } -#undef iswprint -#elif defined(BOOST_NO_STDC_NAMESPACE) -using ::iswprint; -#endif - -#ifdef iswpunct -inline int (iswpunct)(wint_t i) -{ return iswpunct(i); } -#undef iswpunct -#elif defined(BOOST_NO_STDC_NAMESPACE) -using ::iswpunct; -#endif - -#ifdef iswspace -inline int (iswspace)(wint_t i) -{ return iswspace(i); } -#undef iswspace -#elif defined(BOOST_NO_STDC_NAMESPACE) -using ::iswspace; -#endif - -#ifdef iswupper -inline int (iswupper)(wint_t i) -{ return iswupper(i); } -#undef iswupper -#elif defined(BOOST_NO_STDC_NAMESPACE) -using ::iswupper; -#endif - -#ifdef iswxdigit -inline int (iswxdigit)(wint_t i) -{ return iswxdigit(i); } -#undef iswxdigit -#elif defined(BOOST_NO_STDC_NAMESPACE) -using ::iswxdigit; -#endif - -#ifdef towlower -inline wint_t (towlower)(wint_t i) -{ return towlower(i); } -#undef towlower -#elif defined(BOOST_NO_STDC_NAMESPACE) -using ::towlower; -#endif - -#ifdef towupper -inline wint_t (towupper)(wint_t i) -{ return towupper(i); } -#undef towupper -#elif defined(BOOST_NO_STDC_NAMESPACE) -using :: towupper; -#endif - -#ifdef wcscmp -inline int (wcscmp)(const wchar_t *p1, const wchar_t *p2) -{ return wcscmp(p1,p2); } -#undef wcscmp -#elif defined(BOOST_NO_STDC_NAMESPACE) -using ::wcscmp; -#endif - -#ifdef wcscoll -inline int (wcscoll)(const wchar_t *p1, const wchar_t *p2) -{ return wcscoll(p1,p2); } -#undef wcscoll -#elif defined(BOOST_NO_STDC_NAMESPACE) && !defined(UNDER_CE) -using ::wcscoll; -#endif - -#ifdef wcscpy -inline wchar_t *(wcscpy)(wchar_t *p1, const wchar_t *p2) -{ return wcscpy(p1,p2); } -#undef wcscpy -#elif defined(BOOST_NO_STDC_NAMESPACE) -using ::wcscpy; -#endif - -#ifdef wcslen -inline size_t (wcslen)(const wchar_t *p) -{ return wcslen(p); } -#undef wcslen -#elif defined(BOOST_NO_STDC_NAMESPACE) -using ::wcslen; -#endif - -#ifdef wcsxfrm -size_t wcsxfrm(wchar_t *p1, const wchar_t *p2, size_t s) -{ return wcsxfrm(p1,p2,s); } -#undef wcsxfrm -#elif defined(BOOST_NO_STDC_NAMESPACE) -using ::wcsxfrm; -#endif - - -#ifndef BOOST_NO_STDC_NAMESPACE -} // extern "C" -#endif - -} // namespace std - -#endif - diff --git a/3rdParty/Boost/boost/regex/icu.hpp b/3rdParty/Boost/boost/regex/icu.hpp deleted file mode 100644 index 7af1d67..0000000 --- a/3rdParty/Boost/boost/regex/icu.hpp +++ /dev/null @@ -1,1017 +0,0 @@ -/* - * - * Copyright (c) 2004 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ - - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         icu.hpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Unicode regular expressions on top of the ICU Library. -  */ - -#ifndef BOOST_REGEX_ICU_HPP -#define BOOST_REGEX_ICU_HPP - -#include <unicode/utypes.h> -#include <unicode/uchar.h> -#include <unicode/coll.h> -#include <boost/regex.hpp> -#include <boost/regex/pending/unicode_iterator.hpp> -#include <boost/mpl/int_fwd.hpp> -#include <bitset> - - -namespace boost{ - -namespace re_detail{ - -//  -// Implementation details: -// -class BOOST_REGEX_DECL icu_regex_traits_implementation -{ -   typedef UChar32                      char_type; -   typedef std::size_t                  size_type; -   typedef std::vector<char_type>       string_type; -   typedef U_NAMESPACE_QUALIFIER Locale locale_type; -   typedef boost::uint_least32_t        char_class_type; -public: -   icu_regex_traits_implementation(const U_NAMESPACE_QUALIFIER Locale& l) -      : m_locale(l) -   { -      UErrorCode success = U_ZERO_ERROR; -      m_collator.reset(U_NAMESPACE_QUALIFIER Collator::createInstance(l, success)); -      if(U_SUCCESS(success) == 0) -         init_error(); -      m_collator->setStrength(U_NAMESPACE_QUALIFIER Collator::IDENTICAL); -      success = U_ZERO_ERROR; -      m_primary_collator.reset(U_NAMESPACE_QUALIFIER Collator::createInstance(l, success)); -      if(U_SUCCESS(success) == 0) -         init_error(); -      m_primary_collator->setStrength(U_NAMESPACE_QUALIFIER Collator::PRIMARY); -   } -   U_NAMESPACE_QUALIFIER Locale getloc()const -   { -      return m_locale; -   } -   string_type do_transform(const char_type* p1, const char_type* p2, const U_NAMESPACE_QUALIFIER Collator* pcoll) const; -   string_type transform(const char_type* p1, const char_type* p2) const -   { -      return do_transform(p1, p2, m_collator.get()); -   } -   string_type transform_primary(const char_type* p1, const char_type* p2) const -   { -      return do_transform(p1, p2, m_primary_collator.get()); -   } -private: -   void init_error() -   { -      std::runtime_error e("Could not initialize ICU resources"); -      boost::throw_exception(e); -   } -   U_NAMESPACE_QUALIFIER Locale m_locale;                                  // The ICU locale that we're using -   boost::scoped_ptr< U_NAMESPACE_QUALIFIER Collator> m_collator;          // The full collation object -   boost::scoped_ptr< U_NAMESPACE_QUALIFIER Collator> m_primary_collator;  // The primary collation object -}; - -inline boost::shared_ptr<icu_regex_traits_implementation> get_icu_regex_traits_implementation(const U_NAMESPACE_QUALIFIER Locale& loc) -{ -   return boost::shared_ptr<icu_regex_traits_implementation>(new icu_regex_traits_implementation(loc)); -} - -} - -class BOOST_REGEX_DECL icu_regex_traits -{ -public: -   typedef UChar32                      char_type; -   typedef std::size_t                  size_type; -   typedef std::vector<char_type>       string_type; -   typedef U_NAMESPACE_QUALIFIER Locale locale_type; -#ifdef BOOST_NO_INT64_T -   typedef std::bitset<64>              char_class_type; -#else -   typedef boost::uint64_t              char_class_type; -#endif - -   struct boost_extensions_tag{}; - -   icu_regex_traits() -      : m_pimpl(re_detail::get_icu_regex_traits_implementation(U_NAMESPACE_QUALIFIER Locale())) -   { -   } -   static size_type length(const char_type* p); - -   ::boost::regex_constants::syntax_type syntax_type(char_type c)const -   { -      return ((c < 0x7f) && (c > 0)) ? re_detail::get_default_syntax_type(static_cast<char>(c)) : regex_constants::syntax_char; -   } -   ::boost::regex_constants::escape_syntax_type escape_syntax_type(char_type c) const -   { -      return ((c < 0x7f) && (c > 0)) ? re_detail::get_default_escape_syntax_type(static_cast<char>(c)) : regex_constants::syntax_char; -   } -   char_type translate(char_type c) const -   { -      return c; -   } -   char_type translate_nocase(char_type c) const -   { -      return ::u_tolower(c); -   } -   char_type translate(char_type c, bool icase) const -   { -      return icase ? translate_nocase(c) : translate(c); -   } -   char_type tolower(char_type c) const -   { -      return ::u_tolower(c); -   } -   char_type toupper(char_type c) const -   { -      return ::u_toupper(c); -   } -   string_type transform(const char_type* p1, const char_type* p2) const -   { -      return m_pimpl->transform(p1, p2); -   } -   string_type transform_primary(const char_type* p1, const char_type* p2) const -   { -      return m_pimpl->transform_primary(p1, p2); -   } -   char_class_type lookup_classname(const char_type* p1, const char_type* p2) const; -   string_type lookup_collatename(const char_type* p1, const char_type* p2) const; -   bool isctype(char_type c, char_class_type f) const; -   int toi(const char_type*& p1, const char_type* p2, int radix)const -   { -      return re_detail::global_toi(p1, p2, radix, *this); -   } -   int value(char_type c, int radix)const -   { -      return u_digit(c, static_cast< ::int8_t>(radix)); -   } -   locale_type imbue(locale_type l) -   { -      locale_type result(m_pimpl->getloc()); -      m_pimpl = re_detail::get_icu_regex_traits_implementation(l); -      return result; -   } -   locale_type getloc()const -   { -      return locale_type(); -   } -   std::string error_string(::boost::regex_constants::error_type n) const -   { -      return re_detail::get_default_error_string(n); -   } -private: -   icu_regex_traits(const icu_regex_traits&); -   icu_regex_traits& operator=(const icu_regex_traits&); - -   // -   // define the bitmasks offsets we need for additional character properties: -   // -   enum{ -      offset_blank = U_CHAR_CATEGORY_COUNT, -      offset_space = U_CHAR_CATEGORY_COUNT+1, -      offset_xdigit = U_CHAR_CATEGORY_COUNT+2, -      offset_underscore = U_CHAR_CATEGORY_COUNT+3, -      offset_unicode = U_CHAR_CATEGORY_COUNT+4, -      offset_any = U_CHAR_CATEGORY_COUNT+5, -      offset_ascii = U_CHAR_CATEGORY_COUNT+6 -   }; - -   // -   // and now the masks: -   // -   static const char_class_type mask_blank; -   static const char_class_type mask_space; -   static const char_class_type mask_xdigit; -   static const char_class_type mask_underscore; -   static const char_class_type mask_unicode; -   static const char_class_type mask_any; -   static const char_class_type mask_ascii; - -   static char_class_type lookup_icu_mask(const ::UChar32* p1, const ::UChar32* p2); - -   boost::shared_ptr< ::boost::re_detail::icu_regex_traits_implementation> m_pimpl; -}; - -} // namespace boost - -// -// template instances: -// -#define BOOST_REGEX_CHAR_T UChar32 -#undef BOOST_REGEX_TRAITS_T -#define BOOST_REGEX_TRAITS_T , icu_regex_traits -#define BOOST_REGEX_ICU_INSTANCES -#ifdef BOOST_REGEX_ICU_INSTANTIATE -#  define BOOST_REGEX_INSTANTIATE -#endif -#include <boost/regex/v4/instances.hpp> -#undef BOOST_REGEX_CHAR_T -#undef BOOST_REGEX_TRAITS_T -#undef BOOST_REGEX_ICU_INSTANCES -#ifdef BOOST_REGEX_INSTANTIATE -#  undef BOOST_REGEX_INSTANTIATE -#endif - -namespace boost{ - -// types: -typedef basic_regex< ::UChar32, icu_regex_traits> u32regex; -typedef match_results<const ::UChar32*> u32match; -typedef match_results<const ::UChar*> u16match; - -// -// Construction of 32-bit regex types from UTF-8 and UTF-16 primitives: -// -namespace re_detail{ - -#if !defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(__IBMCPP__) -template <class InputIterator> -inline u32regex do_make_u32regex(InputIterator i,  -                              InputIterator j,  -                              boost::regex_constants::syntax_option_type opt,  -                              const boost::mpl::int_<1>*) -{ -   typedef boost::u8_to_u32_iterator<InputIterator, UChar32> conv_type; -   return u32regex(conv_type(i), conv_type(j), opt); -} - -template <class InputIterator> -inline u32regex do_make_u32regex(InputIterator i,  -                              InputIterator j,  -                              boost::regex_constants::syntax_option_type opt,  -                              const boost::mpl::int_<2>*) -{ -   typedef boost::u16_to_u32_iterator<InputIterator, UChar32> conv_type; -   return u32regex(conv_type(i), conv_type(j), opt); -} - -template <class InputIterator> -inline u32regex do_make_u32regex(InputIterator i,  -                              InputIterator j,  -                              boost::regex_constants::syntax_option_type opt,  -                              const boost::mpl::int_<4>*) -{ -   return u32regex(i, j, opt); -} -#else -template <class InputIterator> -inline u32regex do_make_u32regex(InputIterator i,  -                              InputIterator j,  -                              boost::regex_constants::syntax_option_type opt,  -                              const boost::mpl::int_<1>*) -{ -   typedef boost::u8_to_u32_iterator<InputIterator, UChar32> conv_type; -   typedef std::vector<UChar32> vector_type; -   vector_type v; -   conv_type a(i), b(j); -   while(a != b) -   { -      v.push_back(*a); -      ++a; -   } -   if(v.size()) -      return u32regex(&*v.begin(), v.size(), opt); -   return u32regex(static_cast<UChar32 const*>(0), static_cast<u32regex::size_type>(0), opt); -} - -template <class InputIterator> -inline u32regex do_make_u32regex(InputIterator i,  -                              InputIterator j,  -                              boost::regex_constants::syntax_option_type opt,  -                              const boost::mpl::int_<2>*) -{ -   typedef boost::u16_to_u32_iterator<InputIterator, UChar32> conv_type; -   typedef std::vector<UChar32> vector_type; -   vector_type v; -   conv_type a(i), b(j); -   while(a != b) -   { -      v.push_back(*a); -      ++a; -   } -   if(v.size()) -      return u32regex(&*v.begin(), v.size(), opt); -   return u32regex(static_cast<UChar32 const*>(0), static_cast<u32regex::size_type>(0), opt); -} - -template <class InputIterator> -inline u32regex do_make_u32regex(InputIterator i,  -                              InputIterator j,  -                              boost::regex_constants::syntax_option_type opt,  -                              const boost::mpl::int_<4>*) -{ -   typedef std::vector<UCHAR32> vector_type; -   vector_type v; -   while(i != j) -   { -      v.push_back((UCHAR32)(*i)); -      ++a; -   } -   if(v.size()) -      return u32regex(&*v.begin(), v.size(), opt); -   return u32regex(static_cast<UChar32 const*>(0), static_cast<u32regex::size_type>(0), opt); -} -#endif -} - -// -// Construction from an iterator pair: -// -template <class InputIterator> -inline u32regex make_u32regex(InputIterator i,  -                              InputIterator j,  -                              boost::regex_constants::syntax_option_type opt) -{ -   return re_detail::do_make_u32regex(i, j, opt, static_cast<boost::mpl::int_<sizeof(*i)> const*>(0)); -} -// -// construction from UTF-8 nul-terminated strings: -// -inline u32regex make_u32regex(const char* p, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl) -{ -   return re_detail::do_make_u32regex(p, p + std::strlen(p), opt, static_cast<boost::mpl::int_<1> const*>(0)); -} -inline u32regex make_u32regex(const unsigned char* p, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl) -{ -   return re_detail::do_make_u32regex(p, p + std::strlen(reinterpret_cast<const char*>(p)), opt, static_cast<boost::mpl::int_<1> const*>(0)); -} -// -// construction from UTF-16 nul-terminated strings: -// -#ifndef BOOST_NO_WREGEX -inline u32regex make_u32regex(const wchar_t* p, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl) -{ -   return re_detail::do_make_u32regex(p, p + std::wcslen(p), opt, static_cast<boost::mpl::int_<sizeof(wchar_t)> const*>(0)); -} -#endif -#if !defined(U_WCHAR_IS_UTF16) && (U_SIZEOF_WCHAR_T != 2) -inline u32regex make_u32regex(const UChar* p, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl) -{ -   return re_detail::do_make_u32regex(p, p + u_strlen(p), opt, static_cast<boost::mpl::int_<2> const*>(0)); -} -#endif -// -// construction from basic_string class-template: -// -template<class C, class T, class A> -inline u32regex make_u32regex(const std::basic_string<C, T, A>& s, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl) -{ -   return re_detail::do_make_u32regex(s.begin(), s.end(), opt, static_cast<boost::mpl::int_<sizeof(C)> const*>(0)); -} -// -// Construction from ICU string type: -// -inline u32regex make_u32regex(const UnicodeString& s, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl) -{ -   return re_detail::do_make_u32regex(s.getBuffer(), s.getBuffer() + s.length(), opt, static_cast<boost::mpl::int_<2> const*>(0)); -} - -// -// regex_match overloads that widen the character type as appropriate: -// -namespace re_detail{ -template<class MR1, class MR2> -void copy_results(MR1& out, MR2 const& in) -{ -   // copy results from an adapted MR2 match_results: -   out.set_size(in.size(), in.prefix().first.base(), in.suffix().second.base()); -   out.set_base(in.base().base()); -   for(int i = 0; i < (int)in.size(); ++i) -   { -      if(in[i].matched) -      { -         out.set_first(in[i].first.base(), i); -         out.set_second(in[i].second.base(), i); -      } -   } -} - -template <class BidiIterator, class Allocator> -inline bool do_regex_match(BidiIterator first, BidiIterator last,  -                 match_results<BidiIterator, Allocator>& m,  -                 const u32regex& e,  -                 match_flag_type flags, -                 boost::mpl::int_<4> const*) -{ -   return ::boost::regex_match(first, last, m, e, flags); -} -template <class BidiIterator, class Allocator> -bool do_regex_match(BidiIterator first, BidiIterator last,  -                 match_results<BidiIterator, Allocator>& m,  -                 const u32regex& e,  -                 match_flag_type flags, -                 boost::mpl::int_<2> const*) -{ -   typedef u16_to_u32_iterator<BidiIterator, UChar32> conv_type; -   typedef match_results<conv_type>                   match_type; -   typedef typename match_type::allocator_type        alloc_type; -   match_type what; -   bool result = ::boost::regex_match(conv_type(first), conv_type(last), what, e, flags); -   // copy results across to m: -   if(result) copy_results(m, what); -   return result; -} -template <class BidiIterator, class Allocator> -bool do_regex_match(BidiIterator first, BidiIterator last,  -                 match_results<BidiIterator, Allocator>& m,  -                 const u32regex& e,  -                 match_flag_type flags, -                 boost::mpl::int_<1> const*) -{ -   typedef u8_to_u32_iterator<BidiIterator, UChar32>  conv_type; -   typedef match_results<conv_type>                   match_type; -   typedef typename match_type::allocator_type        alloc_type; -   match_type what; -   bool result = ::boost::regex_match(conv_type(first), conv_type(last), what, e, flags); -   // copy results across to m: -   if(result) copy_results(m, what); -   return result; -} -} // namespace re_detail - -template <class BidiIterator, class Allocator> -inline bool u32regex_match(BidiIterator first, BidiIterator last,  -                 match_results<BidiIterator, Allocator>& m,  -                 const u32regex& e,  -                 match_flag_type flags = match_default) -{ -   return re_detail::do_regex_match(first, last, m, e, flags, static_cast<mpl::int_<sizeof(*first)> const*>(0)); -} -inline bool u32regex_match(const UChar* p,  -                 match_results<const UChar*>& m,  -                 const u32regex& e,  -                 match_flag_type flags = match_default) -{ -   return re_detail::do_regex_match(p, p+u_strlen(p), m, e, flags, static_cast<mpl::int_<2> const*>(0)); -} -#if !defined(U_WCHAR_IS_UTF16) && (U_SIZEOF_WCHAR_T != 2) && !defined(BOOST_NO_WREGEX) -inline bool u32regex_match(const wchar_t* p,  -                 match_results<const wchar_t*>& m,  -                 const u32regex& e,  -                 match_flag_type flags = match_default) -{ -   return re_detail::do_regex_match(p, p+std::wcslen(p), m, e, flags, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0)); -} -#endif -inline bool u32regex_match(const char* p,  -                 match_results<const char*>& m,  -                 const u32regex& e,  -                 match_flag_type flags = match_default) -{ -   return re_detail::do_regex_match(p, p+std::strlen(p), m, e, flags, static_cast<mpl::int_<1> const*>(0)); -} -inline bool u32regex_match(const unsigned char* p,  -                 match_results<const unsigned char*>& m,  -                 const u32regex& e,  -                 match_flag_type flags = match_default) -{ -   return re_detail::do_regex_match(p, p+std::strlen((const char*)p), m, e, flags, static_cast<mpl::int_<1> const*>(0)); -} -inline bool u32regex_match(const std::string& s,  -                        match_results<std::string::const_iterator>& m,  -                        const u32regex& e,  -                        match_flag_type flags = match_default) -{ -   return re_detail::do_regex_match(s.begin(), s.end(), m, e, flags, static_cast<mpl::int_<1> const*>(0)); -} -#ifndef BOOST_NO_STD_WSTRING -inline bool u32regex_match(const std::wstring& s,  -                        match_results<std::wstring::const_iterator>& m,  -                        const u32regex& e,  -                        match_flag_type flags = match_default) -{ -   return re_detail::do_regex_match(s.begin(), s.end(), m, e, flags, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0)); -} -#endif -inline bool u32regex_match(const UnicodeString& s,  -                        match_results<const UChar*>& m,  -                        const u32regex& e,  -                        match_flag_type flags = match_default) -{ -   return re_detail::do_regex_match(s.getBuffer(), s.getBuffer() + s.length(), m, e, flags, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0)); -} -// -// regex_match overloads that do not return what matched: -// -template <class BidiIterator> -inline bool u32regex_match(BidiIterator first, BidiIterator last,  -                 const u32regex& e,  -                 match_flag_type flags = match_default) -{ -   match_results<BidiIterator> m; -   return re_detail::do_regex_match(first, last, m, e, flags, static_cast<mpl::int_<sizeof(*first)> const*>(0)); -} -inline bool u32regex_match(const UChar* p,  -                 const u32regex& e,  -                 match_flag_type flags = match_default) -{ -   match_results<const UChar*> m; -   return re_detail::do_regex_match(p, p+u_strlen(p), m, e, flags, static_cast<mpl::int_<2> const*>(0)); -} -#if !defined(U_WCHAR_IS_UTF16) && (U_SIZEOF_WCHAR_T != 2) && !defined(BOOST_NO_WREGEX) -inline bool u32regex_match(const wchar_t* p,  -                 const u32regex& e,  -                 match_flag_type flags = match_default) -{ -   match_results<const wchar_t*> m; -   return re_detail::do_regex_match(p, p+std::wcslen(p), m, e, flags, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0)); -} -#endif -inline bool u32regex_match(const char* p,  -                 const u32regex& e,  -                 match_flag_type flags = match_default) -{ -   match_results<const char*> m; -   return re_detail::do_regex_match(p, p+std::strlen(p), m, e, flags, static_cast<mpl::int_<1> const*>(0)); -} -inline bool u32regex_match(const unsigned char* p,  -                 const u32regex& e,  -                 match_flag_type flags = match_default) -{ -   match_results<const unsigned char*> m; -   return re_detail::do_regex_match(p, p+std::strlen((const char*)p), m, e, flags, static_cast<mpl::int_<1> const*>(0)); -} -inline bool u32regex_match(const std::string& s,  -                        const u32regex& e,  -                        match_flag_type flags = match_default) -{ -   match_results<std::string::const_iterator> m; -   return re_detail::do_regex_match(s.begin(), s.end(), m, e, flags, static_cast<mpl::int_<1> const*>(0)); -} -#ifndef BOOST_NO_STD_WSTRING -inline bool u32regex_match(const std::wstring& s,  -                        const u32regex& e,  -                        match_flag_type flags = match_default) -{ -   match_results<std::wstring::const_iterator> m; -   return re_detail::do_regex_match(s.begin(), s.end(), m, e, flags, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0)); -} -#endif -inline bool u32regex_match(const UnicodeString& s,  -                        const u32regex& e,  -                        match_flag_type flags = match_default) -{ -   match_results<const UChar*> m; -   return re_detail::do_regex_match(s.getBuffer(), s.getBuffer() + s.length(), m, e, flags, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0)); -} - -// -// regex_search overloads that widen the character type as appropriate: -// -namespace re_detail{ -template <class BidiIterator, class Allocator> -inline bool do_regex_search(BidiIterator first, BidiIterator last,  -                 match_results<BidiIterator, Allocator>& m,  -                 const u32regex& e,  -                 match_flag_type flags, -                 BidiIterator base, -                 boost::mpl::int_<4> const*) -{ -   return ::boost::regex_search(first, last, m, e, flags, base); -} -template <class BidiIterator, class Allocator> -bool do_regex_search(BidiIterator first, BidiIterator last,  -                 match_results<BidiIterator, Allocator>& m,  -                 const u32regex& e,  -                 match_flag_type flags, -                 BidiIterator base, -                 boost::mpl::int_<2> const*) -{ -   typedef u16_to_u32_iterator<BidiIterator, UChar32> conv_type; -   typedef match_results<conv_type>                   match_type; -   typedef typename match_type::allocator_type        alloc_type; -   match_type what; -   bool result = ::boost::regex_search(conv_type(first), conv_type(last), what, e, flags, conv_type(base)); -   // copy results across to m: -   if(result) copy_results(m, what); -   return result; -} -template <class BidiIterator, class Allocator> -bool do_regex_search(BidiIterator first, BidiIterator last,  -                 match_results<BidiIterator, Allocator>& m,  -                 const u32regex& e,  -                 match_flag_type flags, -                 BidiIterator base, -                 boost::mpl::int_<1> const*) -{ -   typedef u8_to_u32_iterator<BidiIterator, UChar32>  conv_type; -   typedef match_results<conv_type>                   match_type; -   typedef typename match_type::allocator_type        alloc_type; -   match_type what; -   bool result = ::boost::regex_search(conv_type(first), conv_type(last), what, e, flags, conv_type(base)); -   // copy results across to m: -   if(result) copy_results(m, what); -   return result; -} -} - -template <class BidiIterator, class Allocator> -inline bool u32regex_search(BidiIterator first, BidiIterator last,  -                 match_results<BidiIterator, Allocator>& m,  -                 const u32regex& e,  -                 match_flag_type flags = match_default) -{ -   return re_detail::do_regex_search(first, last, m, e, flags, first, static_cast<mpl::int_<sizeof(*first)> const*>(0)); -} -template <class BidiIterator, class Allocator> -inline bool u32regex_search(BidiIterator first, BidiIterator last,  -                 match_results<BidiIterator, Allocator>& m,  -                 const u32regex& e,  -                 match_flag_type flags, -                 BidiIterator base) -{ -   return re_detail::do_regex_search(first, last, m, e, flags, base, static_cast<mpl::int_<sizeof(*first)> const*>(0)); -} -inline bool u32regex_search(const UChar* p,  -                 match_results<const UChar*>& m,  -                 const u32regex& e,  -                 match_flag_type flags = match_default) -{ -   return re_detail::do_regex_search(p, p+u_strlen(p), m, e, flags, p, static_cast<mpl::int_<2> const*>(0)); -} -#if !defined(U_WCHAR_IS_UTF16) && (U_SIZEOF_WCHAR_T != 2) && !defined(BOOST_NO_WREGEX) -inline bool u32regex_search(const wchar_t* p,  -                 match_results<const wchar_t*>& m,  -                 const u32regex& e,  -                 match_flag_type flags = match_default) -{ -   return re_detail::do_regex_search(p, p+std::wcslen(p), m, e, flags, p, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0)); -} -#endif -inline bool u32regex_search(const char* p,  -                 match_results<const char*>& m,  -                 const u32regex& e,  -                 match_flag_type flags = match_default) -{ -   return re_detail::do_regex_search(p, p+std::strlen(p), m, e, flags, p, static_cast<mpl::int_<1> const*>(0)); -} -inline bool u32regex_search(const unsigned char* p,  -                 match_results<const unsigned char*>& m,  -                 const u32regex& e,  -                 match_flag_type flags = match_default) -{ -   return re_detail::do_regex_search(p, p+std::strlen((const char*)p), m, e, flags, p, static_cast<mpl::int_<1> const*>(0)); -} -inline bool u32regex_search(const std::string& s,  -                        match_results<std::string::const_iterator>& m,  -                        const u32regex& e,  -                        match_flag_type flags = match_default) -{ -   return re_detail::do_regex_search(s.begin(), s.end(), m, e, flags, s.begin(), static_cast<mpl::int_<1> const*>(0)); -} -#ifndef BOOST_NO_STD_WSTRING -inline bool u32regex_search(const std::wstring& s,  -                        match_results<std::wstring::const_iterator>& m,  -                        const u32regex& e,  -                        match_flag_type flags = match_default) -{ -   return re_detail::do_regex_search(s.begin(), s.end(), m, e, flags, s.begin(), static_cast<mpl::int_<sizeof(wchar_t)> const*>(0)); -} -#endif -inline bool u32regex_search(const UnicodeString& s,  -                        match_results<const UChar*>& m,  -                        const u32regex& e,  -                        match_flag_type flags = match_default) -{ -   return re_detail::do_regex_search(s.getBuffer(), s.getBuffer() + s.length(), m, e, flags, s.getBuffer(), static_cast<mpl::int_<sizeof(wchar_t)> const*>(0)); -} -template <class BidiIterator> -inline bool u32regex_search(BidiIterator first, BidiIterator last,  -                 const u32regex& e,  -                 match_flag_type flags = match_default) -{ -   match_results<BidiIterator> m; -   return re_detail::do_regex_search(first, last, m, e, flags, first, static_cast<mpl::int_<sizeof(*first)> const*>(0)); -} -inline bool u32regex_search(const UChar* p,  -                 const u32regex& e,  -                 match_flag_type flags = match_default) -{ -   match_results<const UChar*> m; -   return re_detail::do_regex_search(p, p+u_strlen(p), m, e, flags, p, static_cast<mpl::int_<2> const*>(0)); -} -#if !defined(U_WCHAR_IS_UTF16) && (U_SIZEOF_WCHAR_T != 2) && !defined(BOOST_NO_WREGEX) -inline bool u32regex_search(const wchar_t* p,  -                 const u32regex& e,  -                 match_flag_type flags = match_default) -{ -   match_results<const wchar_t*> m; -   return re_detail::do_regex_search(p, p+std::wcslen(p), m, e, flags, p, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0)); -} -#endif -inline bool u32regex_search(const char* p,  -                 const u32regex& e,  -                 match_flag_type flags = match_default) -{ -   match_results<const char*> m; -   return re_detail::do_regex_search(p, p+std::strlen(p), m, e, flags, p, static_cast<mpl::int_<1> const*>(0)); -} -inline bool u32regex_search(const unsigned char* p,  -                 const u32regex& e,  -                 match_flag_type flags = match_default) -{ -   match_results<const unsigned char*> m; -   return re_detail::do_regex_search(p, p+std::strlen((const char*)p), m, e, flags, p, static_cast<mpl::int_<1> const*>(0)); -} -inline bool u32regex_search(const std::string& s,  -                        const u32regex& e,  -                        match_flag_type flags = match_default) -{ -   match_results<std::string::const_iterator> m; -   return re_detail::do_regex_search(s.begin(), s.end(), m, e, flags, s.begin(), static_cast<mpl::int_<1> const*>(0)); -} -#ifndef BOOST_NO_STD_WSTRING -inline bool u32regex_search(const std::wstring& s,  -                        const u32regex& e,  -                        match_flag_type flags = match_default) -{ -   match_results<std::wstring::const_iterator> m; -   return re_detail::do_regex_search(s.begin(), s.end(), m, e, flags, s.begin(), static_cast<mpl::int_<sizeof(wchar_t)> const*>(0)); -} -#endif -inline bool u32regex_search(const UnicodeString& s,  -                        const u32regex& e,  -                        match_flag_type flags = match_default) -{ -   match_results<const UChar*> m; -   return re_detail::do_regex_search(s.getBuffer(), s.getBuffer() + s.length(), m, e, flags, s.getBuffer(), static_cast<mpl::int_<sizeof(wchar_t)> const*>(0)); -} - -// -// overloads for regex_replace with utf-8 and utf-16 data types: -// -namespace re_detail{ -template <class I> -inline std::pair< boost::u8_to_u32_iterator<I>, boost::u8_to_u32_iterator<I> > -   make_utf32_seq(I i, I j, mpl::int_<1> const*) -{ -   return std::pair< boost::u8_to_u32_iterator<I>, boost::u8_to_u32_iterator<I> >(boost::u8_to_u32_iterator<I>(i), boost::u8_to_u32_iterator<I>(j)); -} -template <class I> -inline std::pair< boost::u16_to_u32_iterator<I>, boost::u16_to_u32_iterator<I> > -   make_utf32_seq(I i, I j, mpl::int_<2> const*) -{ -   return std::pair< boost::u16_to_u32_iterator<I>, boost::u16_to_u32_iterator<I> >(boost::u16_to_u32_iterator<I>(i), boost::u16_to_u32_iterator<I>(j)); -} -template <class I> -inline std::pair< I, I > -   make_utf32_seq(I i, I j, mpl::int_<4> const*) -{ -   return std::pair< I, I >(i, j); -} -template <class charT> -inline std::pair< boost::u8_to_u32_iterator<const charT*>, boost::u8_to_u32_iterator<const charT*> > -   make_utf32_seq(const charT* p, mpl::int_<1> const*) -{ -   return std::pair< boost::u8_to_u32_iterator<const charT*>, boost::u8_to_u32_iterator<const charT*> >(boost::u8_to_u32_iterator<const charT*>(p), boost::u8_to_u32_iterator<const charT*>(p+std::strlen((const char*)p))); -} -template <class charT> -inline std::pair< boost::u16_to_u32_iterator<const charT*>, boost::u16_to_u32_iterator<const charT*> > -   make_utf32_seq(const charT* p, mpl::int_<2> const*) -{ -   return std::pair< boost::u16_to_u32_iterator<const charT*>, boost::u16_to_u32_iterator<const charT*> >(boost::u16_to_u32_iterator<const charT*>(p), boost::u16_to_u32_iterator<const charT*>(p+u_strlen((const UChar*)p))); -} -template <class charT> -inline std::pair< const charT*, const charT* > -   make_utf32_seq(const charT* p, mpl::int_<4> const*) -{ -   return std::pair< const charT*, const charT* >(p, p+icu_regex_traits::length((UChar32 const*)p)); -} -template <class OutputIterator> -inline OutputIterator make_utf32_out(OutputIterator o, mpl::int_<4> const*) -{ -   return o; -} -template <class OutputIterator> -inline utf16_output_iterator<OutputIterator> make_utf32_out(OutputIterator o, mpl::int_<2> const*) -{ -   return o; -} -template <class OutputIterator> -inline utf8_output_iterator<OutputIterator> make_utf32_out(OutputIterator o, mpl::int_<1> const*) -{ -   return o; -} - -template <class OutputIterator, class I1, class I2> -OutputIterator do_regex_replace(OutputIterator out, -                                 std::pair<I1, I1> const& in, -                                 const u32regex& e,  -                                 const std::pair<I2, I2>& fmt,  -                                 match_flag_type flags -                                 ) -{ -   // unfortunately we have to copy the format string in order to pass in onward: -   std::vector<UChar32> f; -#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS -   f.assign(fmt.first, fmt.second); -#else -   f.clear(); -   I2 pos = fmt.first; -   while(pos != fmt.second) -      f.push_back(*pos++); -#endif -    -   regex_iterator<I1, UChar32, icu_regex_traits> i(in.first, in.second, e, flags); -   regex_iterator<I1, UChar32, icu_regex_traits> j; -   if(i == j) -   { -      if(!(flags & regex_constants::format_no_copy)) -         out = re_detail::copy(in.first, in.second, out); -   } -   else -   { -      I1 last_m = in.first; -      while(i != j) -      { -         if(!(flags & regex_constants::format_no_copy)) -            out = re_detail::copy(i->prefix().first, i->prefix().second, out);  -         if(f.size()) -            out = ::boost::re_detail::regex_format_imp(out, *i, &*f.begin(), &*f.begin() + f.size(), flags, e.get_traits()); -         else -            out = ::boost::re_detail::regex_format_imp(out, *i, static_cast<UChar32 const*>(0), static_cast<UChar32 const*>(0), flags, e.get_traits()); -         last_m = (*i)[0].second; -         if(flags & regex_constants::format_first_only) -            break; -         ++i; -      } -      if(!(flags & regex_constants::format_no_copy)) -         out = re_detail::copy(last_m, in.second, out); -   } -   return out; -} -template <class BaseIterator> -inline const BaseIterator& extract_output_base(const BaseIterator& b) -{ -   return b; -} -template <class BaseIterator> -inline BaseIterator extract_output_base(const utf8_output_iterator<BaseIterator>& b) -{ -   return b.base(); -} -template <class BaseIterator> -inline BaseIterator extract_output_base(const utf16_output_iterator<BaseIterator>& b) -{ -   return b.base(); -} -}  // re_detail - -template <class OutputIterator, class BidirectionalIterator, class charT> -inline OutputIterator u32regex_replace(OutputIterator out, -                         BidirectionalIterator first, -                         BidirectionalIterator last, -                         const u32regex& e,  -                         const charT* fmt,  -                         match_flag_type flags = match_default) -{ -   return re_detail::extract_output_base -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) -   <OutputIterator> -#endif -    ( -      re_detail::do_regex_replace( -         re_detail::make_utf32_out(out, static_cast<mpl::int_<sizeof(*first)> const*>(0)), -         re_detail::make_utf32_seq(first, last, static_cast<mpl::int_<sizeof(*first)> const*>(0)), -         e, -         re_detail::make_utf32_seq(fmt, static_cast<mpl::int_<sizeof(*fmt)> const*>(0)), -         flags) -      ); -} - -template <class OutputIterator, class Iterator, class charT> -inline OutputIterator u32regex_replace(OutputIterator out, -                         Iterator first, -                         Iterator last, -                         const u32regex& e,  -                         const std::basic_string<charT>& fmt, -                         match_flag_type flags = match_default) -{ -   return re_detail::extract_output_base -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) -   <OutputIterator> -#endif -    ( -      re_detail::do_regex_replace( -         re_detail::make_utf32_out(out, static_cast<mpl::int_<sizeof(*first)> const*>(0)), -         re_detail::make_utf32_seq(first, last, static_cast<mpl::int_<sizeof(*first)> const*>(0)), -         e, -         re_detail::make_utf32_seq(fmt.begin(), fmt.end(), static_cast<mpl::int_<sizeof(charT)> const*>(0)), -         flags) -      ); -} - -template <class OutputIterator, class Iterator> -inline OutputIterator u32regex_replace(OutputIterator out, -                         Iterator first, -                         Iterator last, -                         const u32regex& e,  -                         const UnicodeString& fmt, -                         match_flag_type flags = match_default) -{ -   return re_detail::extract_output_base -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) -   <OutputIterator> -#endif -   ( -      re_detail::do_regex_replace( -         re_detail::make_utf32_out(out, static_cast<mpl::int_<sizeof(*first)> const*>(0)), -         re_detail::make_utf32_seq(first, last, static_cast<mpl::int_<sizeof(*first)> const*>(0)), -         e, -         re_detail::make_utf32_seq(fmt.getBuffer(), fmt.getBuffer() + fmt.length(), static_cast<mpl::int_<2> const*>(0)), -         flags) -      ); -} - -template <class charT> -std::basic_string<charT> u32regex_replace(const std::basic_string<charT>& s, -                         const u32regex& e,  -                         const charT* fmt, -                         match_flag_type flags = match_default) -{ -   std::basic_string<charT> result; -   re_detail::string_out_iterator<std::basic_string<charT> > i(result); -   u32regex_replace(i, s.begin(), s.end(), e, fmt, flags); -   return result; -} - -template <class charT> -std::basic_string<charT> u32regex_replace(const std::basic_string<charT>& s, -                         const u32regex& e,  -                         const std::basic_string<charT>& fmt, -                         match_flag_type flags = match_default) -{ -   std::basic_string<charT> result; -   re_detail::string_out_iterator<std::basic_string<charT> > i(result); -   u32regex_replace(i, s.begin(), s.end(), e, fmt.c_str(), flags); -   return result; -} - -namespace re_detail{ - -class unicode_string_out_iterator -{ -   UnicodeString* out; -public: -   unicode_string_out_iterator(UnicodeString& s) : out(&s) {} -   unicode_string_out_iterator& operator++() { return *this; } -   unicode_string_out_iterator& operator++(int) { return *this; } -   unicode_string_out_iterator& operator*() { return *this; } -   unicode_string_out_iterator& operator=(UChar v)  -   {  -      *out += v;  -      return *this;  -   } -   typedef std::ptrdiff_t difference_type; -   typedef UChar value_type; -   typedef value_type* pointer; -   typedef value_type& reference; -   typedef std::output_iterator_tag iterator_category; -}; - -} - -inline UnicodeString u32regex_replace(const UnicodeString& s, -                         const u32regex& e,  -                         const UChar* fmt, -                         match_flag_type flags = match_default) -{ -   UnicodeString result; -   re_detail::unicode_string_out_iterator i(result); -   u32regex_replace(i, s.getBuffer(), s.getBuffer()+s.length(), e, fmt, flags); -   return result; -} - -inline UnicodeString u32regex_replace(const UnicodeString& s, -                         const u32regex& e,  -                         const UnicodeString& fmt, -                         match_flag_type flags = match_default) -{ -   UnicodeString result; -   re_detail::unicode_string_out_iterator i(result); -   re_detail::do_regex_replace( -         re_detail::make_utf32_out(i, static_cast<mpl::int_<2> const*>(0)), -         re_detail::make_utf32_seq(s.getBuffer(), s.getBuffer()+s.length(), static_cast<mpl::int_<2> const*>(0)), -         e, -         re_detail::make_utf32_seq(fmt.getBuffer(), fmt.getBuffer() + fmt.length(), static_cast<mpl::int_<2> const*>(0)), -         flags); -   return result; -} - -} // namespace boost. - -#include <boost/regex/v4/u32regex_iterator.hpp> -#include <boost/regex/v4/u32regex_token_iterator.hpp> - -#endif diff --git a/3rdParty/Boost/boost/regex/pattern_except.hpp b/3rdParty/Boost/boost/regex/pattern_except.hpp deleted file mode 100644 index 57ea14c..0000000 --- a/3rdParty/Boost/boost/regex/pattern_except.hpp +++ /dev/null @@ -1,100 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ -  - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         pattern_except.hpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Declares pattern-matching exception classes. -  */ - -#ifndef BOOST_RE_PAT_EXCEPT_HPP -#define BOOST_RE_PAT_EXCEPT_HPP - -#ifndef BOOST_REGEX_CONFIG_HPP -#include <boost/regex/config.hpp> -#endif - -#include <stdexcept> -#include <cstddef> -#include <boost/regex/v4/error_type.hpp> - -namespace boost{ - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable : 4275) -#endif -class BOOST_REGEX_DECL regex_error : public std::runtime_error -{ -public: -   explicit regex_error(const std::string& s, regex_constants::error_type err = regex_constants::error_unknown, std::ptrdiff_t pos = 0); -   explicit regex_error(regex_constants::error_type err); -   ~regex_error() throw(); -   regex_constants::error_type code()const -   { return m_error_code; } -   std::ptrdiff_t position()const -   { return m_position; } -   void raise()const; -private: -   regex_constants::error_type m_error_code; -   std::ptrdiff_t m_position; -}; - -typedef regex_error bad_pattern; -typedef regex_error bad_expression; - -namespace re_detail{ - -BOOST_REGEX_DECL void BOOST_REGEX_CALL raise_runtime_error(const std::runtime_error& ex); - -template <class traits> -void raise_error(const traits& t, regex_constants::error_type code) -{ -   (void)t;  // warning suppression -   std::runtime_error e(t.error_string(code)); -   ::boost::re_detail::raise_runtime_error(e); -} - -} - -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -} // namespace boost - -#endif - - - diff --git a/3rdParty/Boost/boost/regex/pending/object_cache.hpp b/3rdParty/Boost/boost/regex/pending/object_cache.hpp deleted file mode 100644 index 2a7e00b..0000000 --- a/3rdParty/Boost/boost/regex/pending/object_cache.hpp +++ /dev/null @@ -1,163 +0,0 @@ -/* - * - * Copyright (c) 2004 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ - - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         object_cache.hpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Implements a generic object cache. -  */ - -#ifndef BOOST_REGEX_OBJECT_CACHE_HPP -#define BOOST_REGEX_OBJECT_CACHE_HPP - -#include <map> -#include <list> -#include <stdexcept> -#include <string> -#include <boost/config.hpp> -#include <boost/shared_ptr.hpp> -#ifdef BOOST_HAS_THREADS -#include <boost/regex/pending/static_mutex.hpp> -#endif - -namespace boost{ - -template <class Key, class Object> -class object_cache -{ -public: -   typedef std::pair< ::boost::shared_ptr<Object const>, Key const*> value_type; -   typedef std::list<value_type> list_type; -   typedef typename list_type::iterator list_iterator; -   typedef std::map<Key, list_iterator> map_type; -   typedef typename map_type::iterator map_iterator; -   typedef typename list_type::size_type size_type; -   static boost::shared_ptr<Object const> get(const Key& k, size_type max_cache_size); - -private: -   static boost::shared_ptr<Object const> do_get(const Key& k, size_type max_cache_size); - -   struct data -   { -      list_type   cont; -      map_type    index; -   }; - -   // Needed by compilers not implementing the resolution to DR45. For reference, -   // see http://www.open-std.org/JTC1/SC22/WG21/docs/cwg_defects.html#45. -   friend struct data; -}; - -template <class Key, class Object> -boost::shared_ptr<Object const> object_cache<Key, Object>::get(const Key& k, size_type max_cache_size) -{ -#ifdef BOOST_HAS_THREADS -   static boost::static_mutex mut = BOOST_STATIC_MUTEX_INIT; - -   boost::static_mutex::scoped_lock l(mut); -   if(l) -   { -      return do_get(k, max_cache_size); -   } -   // -   // what do we do if the lock fails? -   // for now just throw, but we should never really get here... -   // -   ::boost::throw_exception(std::runtime_error("Error in thread safety code: could not acquire a lock")); -   return boost::shared_ptr<Object>(); -#else -   return do_get(k, max_cache_size); -#endif -} - -template <class Key, class Object> -boost::shared_ptr<Object const> object_cache<Key, Object>::do_get(const Key& k, size_type max_cache_size) -{ -   typedef typename object_cache<Key, Object>::data object_data; -   typedef typename map_type::size_type map_size_type; -   static object_data s_data; - -   // -   // see if the object is already in the cache: -   // -   map_iterator mpos = s_data.index.find(k); -   if(mpos != s_data.index.end()) -   { -      // -      // Eureka!  -      // We have a cached item, bump it up the list and return it: -      // -      if(--(s_data.cont.end()) != mpos->second) -      { -         // splice out the item we want to move: -         list_type temp; -         temp.splice(temp.end(), s_data.cont, mpos->second); -         // and now place it at the end of the list: -         s_data.cont.splice(s_data.cont.end(), temp, temp.begin()); -         BOOST_ASSERT(*(s_data.cont.back().second) == k); -         // update index with new position: -         mpos->second = --(s_data.cont.end()); -         BOOST_ASSERT(&(mpos->first) == mpos->second->second); -         BOOST_ASSERT(&(mpos->first) == s_data.cont.back().second); -      } -      return s_data.cont.back().first; -   } -   // -   // if we get here then the item is not in the cache, -   // so create it: -   // -   boost::shared_ptr<Object const> result(new Object(k)); -   // -   // Add it to the list, and index it: -   // -   s_data.cont.push_back(value_type(result, static_cast<Key const*>(0))); -   s_data.index.insert(std::make_pair(k, --(s_data.cont.end()))); -   s_data.cont.back().second = &(s_data.index.find(k)->first); -   map_size_type s = s_data.index.size(); -   BOOST_ASSERT(s_data.index[k]->first.get() == result.get()); -   BOOST_ASSERT(&(s_data.index.find(k)->first) == s_data.cont.back().second); -   BOOST_ASSERT(s_data.index.find(k)->first == k); -   if(s > max_cache_size) -   { -      // -      // We have too many items in the list, so we need to start -      // popping them off the back of the list, but only if they're -      // being held uniquely by us: -      // -      list_iterator pos = s_data.cont.begin(); -      list_iterator last = s_data.cont.end(); -      while((pos != last) && (s > max_cache_size)) -      { -         if(pos->first.unique()) -         { -            list_iterator condemmed(pos); -            ++pos; -            // now remove the items from our containers,  -            // then order has to be as follows: -            BOOST_ASSERT(s_data.index.find(*(condemmed->second)) != s_data.index.end()); -            s_data.index.erase(*(condemmed->second)); -            s_data.cont.erase(condemmed);  -            --s; -         } -         else -            --pos; -      } -      BOOST_ASSERT(s_data.index[k]->first.get() == result.get()); -      BOOST_ASSERT(&(s_data.index.find(k)->first) == s_data.cont.back().second); -      BOOST_ASSERT(s_data.index.find(k)->first == k); -   } -   return result; -} - -} - -#endif diff --git a/3rdParty/Boost/boost/regex/pending/static_mutex.hpp b/3rdParty/Boost/boost/regex/pending/static_mutex.hpp deleted file mode 100644 index 218169c..0000000 --- a/3rdParty/Boost/boost/regex/pending/static_mutex.hpp +++ /dev/null @@ -1,184 +0,0 @@ -/* - * - * Copyright (c) 2004 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ -  - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         static_mutex.hpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Declares static_mutex lock type, there are three different -  *                implementations: POSIX pthreads, WIN32 threads, and portable, -  *                these are described in more detail below. -  */ - -#ifndef BOOST_REGEX_STATIC_MUTEX_HPP -#define BOOST_REGEX_STATIC_MUTEX_HPP - -#include <boost/config.hpp> -#include <boost/regex/config.hpp> // dll import/export options. - -#ifdef BOOST_HAS_PTHREADS -#include <pthread.h> -#endif - -#if defined(BOOST_HAS_PTHREADS) && defined(PTHREAD_MUTEX_INITIALIZER) -// -// pthreads version: -// simple wrap around a pthread_mutex_t initialized with -// PTHREAD_MUTEX_INITIALIZER. -// -namespace boost{ - -class BOOST_REGEX_DECL scoped_static_mutex_lock; - -class static_mutex -{ -public: -   typedef scoped_static_mutex_lock scoped_lock; -   pthread_mutex_t m_mutex; -}; - -#define BOOST_STATIC_MUTEX_INIT { PTHREAD_MUTEX_INITIALIZER, } - -class BOOST_REGEX_DECL scoped_static_mutex_lock -{ -public: -   scoped_static_mutex_lock(static_mutex& mut, bool lk = true); -   ~scoped_static_mutex_lock(); -   inline bool locked()const -   { -      return m_have_lock; -   } -   inline operator void const*()const -   { -      return locked() ? this : 0; -   } -   void lock(); -   void unlock(); -private: -   static_mutex& m_mutex; -   bool m_have_lock; -}; - - -} // namespace boost -#elif defined(BOOST_HAS_WINTHREADS) -// -// Win32 version: -// Use a 32-bit int as a lock, along with a test-and-set -// implementation using InterlockedCompareExchange. -// - -#include <boost/cstdint.hpp> - -namespace boost{ - -class BOOST_REGEX_DECL scoped_static_mutex_lock; - -class static_mutex -{ -public: -   typedef scoped_static_mutex_lock scoped_lock; -   boost::int32_t m_mutex; -}; - -#define BOOST_STATIC_MUTEX_INIT { 0, } - -class BOOST_REGEX_DECL scoped_static_mutex_lock -{ -public: -   scoped_static_mutex_lock(static_mutex& mut, bool lk = true); -   ~scoped_static_mutex_lock(); -   operator void const*()const; -   bool locked()const; -   void lock(); -   void unlock(); -private: -   static_mutex& m_mutex; -   bool m_have_lock; -   scoped_static_mutex_lock(const scoped_static_mutex_lock&); -   scoped_static_mutex_lock& operator=(const scoped_static_mutex_lock&); -}; - -inline scoped_static_mutex_lock::operator void const*()const -{ -   return locked() ? this : 0; -} - -inline bool scoped_static_mutex_lock::locked()const -{ -   return m_have_lock; -} - -} // namespace - -#else -// -// Portable version of a static mutex based on Boost.Thread library: -// This has to use a single mutex shared by all instances of static_mutex -// because boost::call_once doesn't alow us to pass instance information -// down to the initialisation proceedure.  In fact the initialisation routine -// may need to be called more than once - but only once per instance. -// -// Since this preprocessor path is almost never taken, we hide these header -// dependencies so that build tools don't find them. -// -#define B1 <boost/thread/once.hpp> -#define B2 <boost/thread/recursive_mutex.hpp> -#include B1 -#include B2 -#undef B1 -#undef B2 - -namespace boost{ - -class BOOST_REGEX_DECL scoped_static_mutex_lock; -extern "C" BOOST_REGEX_DECL void free_static_mutex(); - -class BOOST_REGEX_DECL static_mutex -{ -public: -   typedef scoped_static_mutex_lock scoped_lock; -   static void init(); -   static boost::recursive_mutex* m_pmutex; -   static boost::once_flag m_once; -}; - -#define BOOST_STATIC_MUTEX_INIT {  } - -class BOOST_REGEX_DECL scoped_static_mutex_lock -{ -public: -   scoped_static_mutex_lock(static_mutex& mut, bool lk = true); -   ~scoped_static_mutex_lock(); -   operator void const*()const; -   bool locked()const; -   void lock(); -   void unlock(); -private: -   boost::recursive_mutex::scoped_lock* m_plock; -   bool m_have_lock; -}; - -inline scoped_static_mutex_lock::operator void const*()const -{ -   return locked() ? this : 0; -} - -inline bool scoped_static_mutex_lock::locked()const -{ -   return m_have_lock; -} - -} // namespace - -#endif - -#endif diff --git a/3rdParty/Boost/boost/regex/pending/unicode_iterator.hpp b/3rdParty/Boost/boost/regex/pending/unicode_iterator.hpp deleted file mode 100644 index 657ca0a..0000000 --- a/3rdParty/Boost/boost/regex/pending/unicode_iterator.hpp +++ /dev/null @@ -1,692 +0,0 @@ -/* - * - * Copyright (c) 2004 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ -  - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         unicode_iterator.hpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Iterator adapters for converting between different Unicode encodings. -  */ - -/**************************************************************************** - -Contents: -~~~~~~~~~ - -1) Read Only, Input Adapters: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -template <class BaseIterator, class U8Type = ::boost::uint8_t> -class u32_to_u8_iterator; - -Adapts sequence of UTF-32 code points to "look like" a sequence of UTF-8. - -template <class BaseIterator, class U32Type = ::boost::uint32_t> -class u8_to_u32_iterator; - -Adapts sequence of UTF-8 code points to "look like" a sequence of UTF-32. - -template <class BaseIterator, class U16Type = ::boost::uint16_t> -class u32_to_u16_iterator; - -Adapts sequence of UTF-32 code points to "look like" a sequence of UTF-16. - -template <class BaseIterator, class U32Type = ::boost::uint32_t> -class u16_to_u32_iterator; - -Adapts sequence of UTF-16 code points to "look like" a sequence of UTF-32. - -2) Single pass output iterator adapters: - -template <class BaseIterator> -class utf8_output_iterator; - -Accepts UTF-32 code points and forwards them on as UTF-8 code points. - -template <class BaseIterator> -class utf16_output_iterator; - -Accepts UTF-32 code points and forwards them on as UTF-16 code points. - -****************************************************************************/ - -#ifndef BOOST_REGEX_UNICODE_ITERATOR_HPP -#define BOOST_REGEX_UNICODE_ITERATOR_HPP -#include <boost/cstdint.hpp> -#include <boost/assert.hpp> -#include <boost/iterator/iterator_facade.hpp> -#include <boost/static_assert.hpp> -#include <boost/throw_exception.hpp> -#include <stdexcept> -#ifndef BOOST_NO_STD_LOCALE -#include <sstream> -#include <ios> -#endif -#include <limits.h> // CHAR_BIT - -namespace boost{ - -namespace detail{ - -static const ::boost::uint16_t high_surrogate_base = 0xD7C0u; -static const ::boost::uint16_t low_surrogate_base = 0xDC00u; -static const ::boost::uint32_t ten_bit_mask = 0x3FFu; - -inline bool is_high_surrogate(::boost::uint16_t v) -{ -   return (v & 0xFC00u) == 0xd800u; -} -inline bool is_low_surrogate(::boost::uint16_t v) -{ -   return (v & 0xFC00u) == 0xdc00u; -} -template <class T> -inline bool is_surrogate(T v) -{ -   return (v & 0xF800u) == 0xd800; -} - -inline unsigned utf8_byte_count(boost::uint8_t c) -{ -   // if the most significant bit with a zero in it is in position -   // 8-N then there are N bytes in this UTF-8 sequence: -   boost::uint8_t mask = 0x80u; -   unsigned result = 0; -   while(c & mask) -   { -      ++result; -      mask >>= 1; -   } -   return (result == 0) ? 1 : ((result > 4) ? 4 : result); -} - -inline unsigned utf8_trailing_byte_count(boost::uint8_t c) -{ -   return utf8_byte_count(c) - 1; -} - -inline void invalid_utf32_code_point(::boost::uint32_t val) -{ -#ifndef BOOST_NO_STD_LOCALE -   std::stringstream ss; -   ss << "Invalid UTF-32 code point U+" << std::showbase << std::hex << val << " encountered while trying to encode UTF-16 sequence"; -   std::out_of_range e(ss.str()); -#else -   std::out_of_range e("Invalid UTF-32 code point encountered while trying to encode UTF-16 sequence"); -#endif -   boost::throw_exception(e); -} - - -} // namespace detail - -template <class BaseIterator, class U16Type = ::boost::uint16_t> -class u32_to_u16_iterator -   : public boost::iterator_facade<u32_to_u16_iterator<BaseIterator, U16Type>, U16Type, std::bidirectional_iterator_tag, const U16Type> -{ -   typedef boost::iterator_facade<u32_to_u16_iterator<BaseIterator, U16Type>, U16Type, std::bidirectional_iterator_tag, const U16Type> base_type; - -#if !defined(BOOST_NO_STD_ITERATOR_TRAITS) && !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) -   typedef typename std::iterator_traits<BaseIterator>::value_type base_value_type; - -   BOOST_STATIC_ASSERT(sizeof(base_value_type)*CHAR_BIT == 32); -   BOOST_STATIC_ASSERT(sizeof(U16Type)*CHAR_BIT == 16); -#endif - -public: -   typename base_type::reference -      dereference()const -   { -      if(m_current == 2) -         extract_current(); -      return m_values[m_current]; -   } -   bool equal(const u32_to_u16_iterator& that)const -   { -      if(m_position == that.m_position) -      { -         // Both m_currents must be equal, or both even -         // this is the same as saying their sum must be even: -         return (m_current + that.m_current) & 1u ? false : true; -      } -      return false; -   } -   void increment() -   { -      // if we have a pending read then read now, so that we know whether -      // to skip a position, or move to a low-surrogate: -      if(m_current == 2) -      { -         // pending read: -         extract_current(); -      } -      // move to the next surrogate position: -      ++m_current; -      // if we've reached the end skip a position: -      if(m_values[m_current] == 0) -      { -         m_current = 2; -         ++m_position; -      } -   } -   void decrement() -   { -      if(m_current != 1) -      { -         // decrementing an iterator always leads to a valid position: -         --m_position; -         extract_current(); -         m_current = m_values[1] ? 1 : 0; -      } -      else -      { -         m_current = 0; -      } -   } -   BaseIterator base()const -   { -      return m_position; -   } -   // construct: -   u32_to_u16_iterator() : m_position(), m_current(0) -   { -      m_values[0] = 0; -      m_values[1] = 0; -      m_values[2] = 0; -   } -   u32_to_u16_iterator(BaseIterator b) : m_position(b), m_current(2) -   { -      m_values[0] = 0; -      m_values[1] = 0; -      m_values[2] = 0; -   } -private: - -   void extract_current()const -   { -      // begin by checking for a code point out of range: -      ::boost::uint32_t v = *m_position; -      if(v >= 0x10000u) -      { -         if(v > 0x10FFFFu) -            detail::invalid_utf32_code_point(*m_position); -         // split into two surrogates: -         m_values[0] = static_cast<U16Type>(v >> 10) + detail::high_surrogate_base; -         m_values[1] = static_cast<U16Type>(v & detail::ten_bit_mask) + detail::low_surrogate_base; -         m_current = 0; -         BOOST_ASSERT(detail::is_high_surrogate(m_values[0])); -         BOOST_ASSERT(detail::is_low_surrogate(m_values[1])); -      } -      else -      { -         // 16-bit code point: -         m_values[0] = static_cast<U16Type>(*m_position); -         m_values[1] = 0; -         m_current = 0; -         // value must not be a surrogate: -         if(detail::is_surrogate(m_values[0])) -            detail::invalid_utf32_code_point(*m_position); -      } -   } -   BaseIterator m_position; -   mutable U16Type m_values[3]; -   mutable unsigned m_current; -}; - -template <class BaseIterator, class U32Type = ::boost::uint32_t> -class u16_to_u32_iterator -   : public boost::iterator_facade<u16_to_u32_iterator<BaseIterator, U32Type>, U32Type, std::bidirectional_iterator_tag, const U32Type> -{ -   typedef boost::iterator_facade<u16_to_u32_iterator<BaseIterator, U32Type>, U32Type, std::bidirectional_iterator_tag, const U32Type> base_type; -   // special values for pending iterator reads: -   BOOST_STATIC_CONSTANT(U32Type, pending_read = 0xffffffffu); - -#if !defined(BOOST_NO_STD_ITERATOR_TRAITS) && !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) -   typedef typename std::iterator_traits<BaseIterator>::value_type base_value_type; - -   BOOST_STATIC_ASSERT(sizeof(base_value_type)*CHAR_BIT == 16); -   BOOST_STATIC_ASSERT(sizeof(U32Type)*CHAR_BIT == 32); -#endif - -public: -   typename base_type::reference -      dereference()const -   { -      if(m_value == pending_read) -         extract_current(); -      return m_value; -   } -   bool equal(const u16_to_u32_iterator& that)const -   { -      return m_position == that.m_position; -   } -   void increment() -   { -      // skip high surrogate first if there is one: -      if(detail::is_high_surrogate(*m_position)) ++m_position; -      ++m_position; -      m_value = pending_read; -   } -   void decrement() -   { -      --m_position; -      // if we have a low surrogate then go back one more: -      if(detail::is_low_surrogate(*m_position))  -         --m_position; -      m_value = pending_read; -   } -   BaseIterator base()const -   { -      return m_position; -   } -   // construct: -   u16_to_u32_iterator() : m_position() -   { -      m_value = pending_read; -   } -   u16_to_u32_iterator(BaseIterator b) : m_position(b) -   { -      m_value = pending_read; -   } -private: -   static void invalid_code_point(::boost::uint16_t val) -   { -#ifndef BOOST_NO_STD_LOCALE -      std::stringstream ss; -      ss << "Misplaced UTF-16 surrogate U+" << std::showbase << std::hex << val << " encountered while trying to encode UTF-32 sequence"; -      std::out_of_range e(ss.str()); -#else -      std::out_of_range e("Misplaced UTF-16 surrogate encountered while trying to encode UTF-32 sequence"); -#endif -      boost::throw_exception(e); -   } -   void extract_current()const -   { -      m_value = static_cast<U32Type>(static_cast< ::boost::uint16_t>(*m_position)); -      // if the last value is a high surrogate then adjust m_position and m_value as needed: -      if(detail::is_high_surrogate(*m_position)) -      { -         // precondition; next value must have be a low-surrogate: -         BaseIterator next(m_position); -         ::boost::uint16_t t = *++next; -         if((t & 0xFC00u) != 0xDC00u) -            invalid_code_point(t); -         m_value = (m_value - detail::high_surrogate_base) << 10; -         m_value |= (static_cast<U32Type>(static_cast< ::boost::uint16_t>(t)) & detail::ten_bit_mask); -      } -      // postcondition; result must not be a surrogate: -      if(detail::is_surrogate(m_value)) -         invalid_code_point(static_cast< ::boost::uint16_t>(m_value)); -   } -   BaseIterator m_position; -   mutable U32Type m_value; -}; - -template <class BaseIterator, class U8Type = ::boost::uint8_t> -class u32_to_u8_iterator -   : public boost::iterator_facade<u32_to_u8_iterator<BaseIterator, U8Type>, U8Type, std::bidirectional_iterator_tag, const U8Type> -{ -   typedef boost::iterator_facade<u32_to_u8_iterator<BaseIterator, U8Type>, U8Type, std::bidirectional_iterator_tag, const U8Type> base_type; -    -#if !defined(BOOST_NO_STD_ITERATOR_TRAITS) && !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) -   typedef typename std::iterator_traits<BaseIterator>::value_type base_value_type; - -   BOOST_STATIC_ASSERT(sizeof(base_value_type)*CHAR_BIT == 32); -   BOOST_STATIC_ASSERT(sizeof(U8Type)*CHAR_BIT == 8); -#endif - -public: -   typename base_type::reference -      dereference()const -   { -      if(m_current == 4) -         extract_current(); -      return m_values[m_current]; -   } -   bool equal(const u32_to_u8_iterator& that)const -   { -      if(m_position == that.m_position) -      { -         // either the m_current's must be equal, or one must be 0 and  -         // the other 4: which means neither must have bits 1 or 2 set: -         return (m_current == that.m_current) -            || (((m_current | that.m_current) & 3) == 0); -      } -      return false; -   } -   void increment() -   { -      // if we have a pending read then read now, so that we know whether -      // to skip a position, or move to a low-surrogate: -      if(m_current == 4) -      { -         // pending read: -         extract_current(); -      } -      // move to the next surrogate position: -      ++m_current; -      // if we've reached the end skip a position: -      if(m_values[m_current] == 0) -      { -         m_current = 4; -         ++m_position; -      } -   } -   void decrement() -   { -      if((m_current & 3) == 0) -      { -         --m_position; -         extract_current(); -         m_current = 3; -         while(m_current && (m_values[m_current] == 0)) -            --m_current; -      } -      else -         --m_current; -   } -   BaseIterator base()const -   { -      return m_position; -   } -   // construct: -   u32_to_u8_iterator() : m_position(), m_current(0) -   { -      m_values[0] = 0; -      m_values[1] = 0; -      m_values[2] = 0; -      m_values[3] = 0; -      m_values[4] = 0; -   } -   u32_to_u8_iterator(BaseIterator b) : m_position(b), m_current(4) -   { -      m_values[0] = 0; -      m_values[1] = 0; -      m_values[2] = 0; -      m_values[3] = 0; -      m_values[4] = 0; -   } -private: - -   void extract_current()const -   { -      boost::uint32_t c = *m_position; -      if(c > 0x10FFFFu) -         detail::invalid_utf32_code_point(c); -      if(c < 0x80u) -      { -         m_values[0] = static_cast<unsigned char>(c); -         m_values[1] = static_cast<unsigned char>(0u); -         m_values[2] = static_cast<unsigned char>(0u); -         m_values[3] = static_cast<unsigned char>(0u); -      } -      else if(c < 0x800u) -      { -         m_values[0] = static_cast<unsigned char>(0xC0u + (c >> 6)); -         m_values[1] = static_cast<unsigned char>(0x80u + (c & 0x3Fu)); -         m_values[2] = static_cast<unsigned char>(0u); -         m_values[3] = static_cast<unsigned char>(0u); -      } -      else if(c < 0x10000u) -      { -         m_values[0] = static_cast<unsigned char>(0xE0u + (c >> 12)); -         m_values[1] = static_cast<unsigned char>(0x80u + ((c >> 6) & 0x3Fu)); -         m_values[2] = static_cast<unsigned char>(0x80u + (c & 0x3Fu)); -         m_values[3] = static_cast<unsigned char>(0u); -      } -      else -      { -         m_values[0] = static_cast<unsigned char>(0xF0u + (c >> 18)); -         m_values[1] = static_cast<unsigned char>(0x80u + ((c >> 12) & 0x3Fu)); -         m_values[2] = static_cast<unsigned char>(0x80u + ((c >> 6) & 0x3Fu)); -         m_values[3] = static_cast<unsigned char>(0x80u + (c & 0x3Fu)); -      } -      m_current= 0; -   } -   BaseIterator m_position; -   mutable U8Type m_values[5]; -   mutable unsigned m_current; -}; - -template <class BaseIterator, class U32Type = ::boost::uint32_t> -class u8_to_u32_iterator -   : public boost::iterator_facade<u8_to_u32_iterator<BaseIterator, U32Type>, U32Type, std::bidirectional_iterator_tag, const U32Type> -{ -   typedef boost::iterator_facade<u8_to_u32_iterator<BaseIterator, U32Type>, U32Type, std::bidirectional_iterator_tag, const U32Type> base_type; -   // special values for pending iterator reads: -   BOOST_STATIC_CONSTANT(U32Type, pending_read = 0xffffffffu); - -#if !defined(BOOST_NO_STD_ITERATOR_TRAITS) && !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) -   typedef typename std::iterator_traits<BaseIterator>::value_type base_value_type; - -   BOOST_STATIC_ASSERT(sizeof(base_value_type)*CHAR_BIT == 8); -   BOOST_STATIC_ASSERT(sizeof(U32Type)*CHAR_BIT == 32); -#endif - -public: -   typename base_type::reference -      dereference()const -   { -      if(m_value == pending_read) -         extract_current(); -      return m_value; -   } -   bool equal(const u8_to_u32_iterator& that)const -   { -      return m_position == that.m_position; -   } -   void increment() -   { -      // skip high surrogate first if there is one: -      unsigned c = detail::utf8_byte_count(*m_position); -      std::advance(m_position, c); -      m_value = pending_read; -   } -   void decrement() -   { -      // Keep backtracking until we don't have a trailing character: -      unsigned count = 0; -      while((*--m_position & 0xC0u) == 0x80u) ++count; -      // now check that the sequence was valid: -      if(count != detail::utf8_trailing_byte_count(*m_position)) -         invalid_sequnce(); -      m_value = pending_read; -   } -   BaseIterator base()const -   { -      return m_position; -   } -   // construct: -   u8_to_u32_iterator() : m_position() -   { -      m_value = pending_read; -   } -   u8_to_u32_iterator(BaseIterator b) : m_position(b) -   { -      m_value = pending_read; -   } -private: -   static void invalid_sequnce() -   { -      std::out_of_range e("Invalid UTF-8 sequence encountered while trying to encode UTF-32 character"); -      boost::throw_exception(e); -   } -   void extract_current()const -   { -      m_value = static_cast<U32Type>(static_cast< ::boost::uint8_t>(*m_position)); -      // we must not have a continuation character: -      if((m_value & 0xC0u) == 0x80u) -         invalid_sequnce(); -      // see how many extra byts we have: -      unsigned extra = detail::utf8_trailing_byte_count(*m_position); -      // extract the extra bits, 6 from each extra byte: -      BaseIterator next(m_position); -      for(unsigned c = 0; c < extra; ++c) -      { -         ++next; -         m_value <<= 6; -         m_value += static_cast<boost::uint8_t>(*next) & 0x3Fu; -      } -      // we now need to remove a few of the leftmost bits, but how many depends -      // upon how many extra bytes we've extracted: -      static const boost::uint32_t masks[4] =  -      { -         0x7Fu, -         0x7FFu, -         0xFFFFu, -         0x1FFFFFu, -      }; -      m_value &= masks[extra]; -      // check the result: -      if(m_value > static_cast<U32Type>(0x10FFFFu)) -         invalid_sequnce(); -   } -   BaseIterator m_position; -   mutable U32Type m_value; -}; - -template <class BaseIterator> -class utf16_output_iterator -{ -public: -   typedef void                                   difference_type; -   typedef void                                   value_type; -   typedef boost::uint32_t*                       pointer; -   typedef boost::uint32_t&                       reference; -   typedef std::output_iterator_tag               iterator_category; - -   utf16_output_iterator(const BaseIterator& b) -      : m_position(b){} -   utf16_output_iterator(const utf16_output_iterator& that) -      : m_position(that.m_position){} -   utf16_output_iterator& operator=(const utf16_output_iterator& that) -   { -      m_position = that.m_position; -      return *this; -   } -   const utf16_output_iterator& operator*()const -   { -      return *this; -   } -   void operator=(boost::uint32_t val)const -   { -      push(val); -   } -   utf16_output_iterator& operator++() -   { -      return *this; -   } -   utf16_output_iterator& operator++(int) -   { -      return *this; -   } -   BaseIterator base()const -   { -      return m_position; -   } -private: -   void push(boost::uint32_t v)const -   { -      if(v >= 0x10000u) -      { -         // begin by checking for a code point out of range: -         if(v > 0x10FFFFu) -            detail::invalid_utf32_code_point(v); -         // split into two surrogates: -         *m_position++ = static_cast<boost::uint16_t>(v >> 10) + detail::high_surrogate_base; -         *m_position++ = static_cast<boost::uint16_t>(v & detail::ten_bit_mask) + detail::low_surrogate_base; -      } -      else -      { -         // 16-bit code point: -         // value must not be a surrogate: -         if(detail::is_surrogate(v)) -            detail::invalid_utf32_code_point(v); -         *m_position++ = static_cast<boost::uint16_t>(v); -      } -   } -   mutable BaseIterator m_position; -}; - -template <class BaseIterator> -class utf8_output_iterator -{ -public: -   typedef void                                   difference_type; -   typedef void                                   value_type; -   typedef boost::uint32_t*                       pointer; -   typedef boost::uint32_t&                       reference; -   typedef std::output_iterator_tag               iterator_category; - -   utf8_output_iterator(const BaseIterator& b) -      : m_position(b){} -   utf8_output_iterator(const utf8_output_iterator& that) -      : m_position(that.m_position){} -   utf8_output_iterator& operator=(const utf8_output_iterator& that) -   { -      m_position = that.m_position; -      return *this; -   } -   const utf8_output_iterator& operator*()const -   { -      return *this; -   } -   void operator=(boost::uint32_t val)const -   { -      push(val); -   } -   utf8_output_iterator& operator++() -   { -      return *this; -   } -   utf8_output_iterator& operator++(int) -   { -      return *this; -   } -   BaseIterator base()const -   { -      return m_position; -   } -private: -   void push(boost::uint32_t c)const -   { -      if(c > 0x10FFFFu) -         detail::invalid_utf32_code_point(c); -      if(c < 0x80u) -      { -         *m_position++ = static_cast<unsigned char>(c); -      } -      else if(c < 0x800u) -      { -         *m_position++ = static_cast<unsigned char>(0xC0u + (c >> 6)); -         *m_position++ = static_cast<unsigned char>(0x80u + (c & 0x3Fu)); -      } -      else if(c < 0x10000u) -      { -         *m_position++ = static_cast<unsigned char>(0xE0u + (c >> 12)); -         *m_position++ = static_cast<unsigned char>(0x80u + ((c >> 6) & 0x3Fu)); -         *m_position++ = static_cast<unsigned char>(0x80u + (c & 0x3Fu)); -      } -      else -      { -         *m_position++ = static_cast<unsigned char>(0xF0u + (c >> 18)); -         *m_position++ = static_cast<unsigned char>(0x80u + ((c >> 12) & 0x3Fu)); -         *m_position++ = static_cast<unsigned char>(0x80u + ((c >> 6) & 0x3Fu)); -         *m_position++ = static_cast<unsigned char>(0x80u + (c & 0x3Fu)); -      } -   } -   mutable BaseIterator m_position; -}; - -} // namespace boost - -#endif // BOOST_REGEX_UNICODE_ITERATOR_HPP - diff --git a/3rdParty/Boost/boost/regex/regex_traits.hpp b/3rdParty/Boost/boost/regex/regex_traits.hpp deleted file mode 100644 index 730ba6e..0000000 --- a/3rdParty/Boost/boost/regex/regex_traits.hpp +++ /dev/null @@ -1,35 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ -  - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         regex_traits.hpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Declares regular expression traits classes. -  */ - -#ifndef BOOST_REGEX_TRAITS_HPP -#define BOOST_REGEX_TRAITS_HPP - -#ifndef BOOST_REGEX_CONFIG_HPP -#  include <boost/regex/config.hpp> -#endif - -#  ifndef BOOST_REGEX_TRAITS_HPP_INCLUDED -#     include <boost/regex/v4/regex_traits.hpp> -#  endif - -#endif // include - - - - - diff --git a/3rdParty/Boost/boost/regex/user.hpp b/3rdParty/Boost/boost/regex/user.hpp deleted file mode 100644 index 9590817..0000000 --- a/3rdParty/Boost/boost/regex/user.hpp +++ /dev/null @@ -1,90 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ -  - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         user.hpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: User settable options. -  */ - -// define if you want the regex library to use the C locale -// even on Win32: -// #define BOOST_REGEX_USE_C_LOCALE - -// define this is you want the regex library to use the C++ -// locale: -// #define BOOST_REGEX_USE_CPP_LOCALE - -// define this if the runtime library is a dll, and you -// want BOOST_REGEX_DYN_LINK to set up dll exports/imports -// with __declspec(dllexport)/__declspec(dllimport.) -// #define BOOST_REGEX_HAS_DLL_RUNTIME - -// define this if you want to dynamically link to regex, -// if the runtime library is also a dll (Probably Win32 specific, -// and has no effect unless BOOST_REGEX_HAS_DLL_RUNTIME is set): -// #define BOOST_REGEX_DYN_LINK - -// define this if you don't want the lib to automatically -// select its link libraries: -// #define BOOST_REGEX_NO_LIB - -// define this if templates with switch statements cause problems: -// #define BOOST_REGEX_NO_TEMPLATE_SWITCH_MERGE -  -// define this to disable Win32 support when available: -// #define BOOST_REGEX_NO_W32 - -// define this if bool is not a real type: -// #define BOOST_REGEX_NO_BOOL - -// define this if no template instances are to be placed in -// the library rather than users object files: -// #define BOOST_REGEX_NO_EXTERNAL_TEMPLATES - -// define this if the forward declarations in regex_fwd.hpp -// cause more problems than they are worth: -// #define BOOST_REGEX_NO_FWD - -// define this if your compiler supports MS Windows structured -// exception handling. -// #define BOOST_REGEX_HAS_MS_STACK_GUARD - -// define this if you want to use the recursive algorithm -// even if BOOST_REGEX_HAS_MS_STACK_GUARD is not defined. -// #define BOOST_REGEX_RECURSIVE - -// define this if you want to use the non-recursive -// algorithm, even if the recursive version would be the default. -// #define BOOST_REGEX_NON_RECURSIVE - -// define this if you want to set the size of the memory blocks -// used by the non-recursive algorithm. -// #define BOOST_REGEX_BLOCKSIZE 4096 - -// define this if you want to set the maximum number of memory blocks -// used by the non-recursive algorithm. -// #define BOOST_REGEX_MAX_BLOCKS 1024 - -// define this if you want to set the maximum number of memory blocks -// cached by the non-recursive algorithm: Normally this is 16, but can be  -// higher if you have multiple threads all using boost.regex, or lower  -// if you don't want boost.regex to cache memory. -// #define BOOST_REGEX_MAX_CACHE_BLOCKS 16 - -// define this if you want to be able to access extended capture -// information in your sub_match's (caution this will slow things -// down quite a bit). -// #define BOOST_REGEX_MATCH_EXTRA - -// define this if you want to enable support for Unicode via ICU. -// #define BOOST_HAS_ICU diff --git a/3rdParty/Boost/boost/regex/v4/basic_regex.hpp b/3rdParty/Boost/boost/regex/v4/basic_regex.hpp deleted file mode 100644 index cb9ff3c..0000000 --- a/3rdParty/Boost/boost/regex/v4/basic_regex.hpp +++ /dev/null @@ -1,669 +0,0 @@ -/* - * - * Copyright (c) 1998-2004 - * John Maddock - * - * 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) - * - */ - - /* -  *   LOCATION:    see http://www.boost.org/ for most recent version. -  *   FILE         basic_regex.cpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Declares template class basic_regex. -  */ - -#ifndef BOOST_REGEX_V4_BASIC_REGEX_HPP -#define BOOST_REGEX_V4_BASIC_REGEX_HPP - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -namespace boost{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable : 4251 4231 4660 4800) -#endif - -namespace re_detail{ - -// -// forward declaration, we will need this one later: -// -template <class charT, class traits> -class basic_regex_parser; - -// -// class regex_data: -// represents the data we wish to expose to the matching algorithms. -// -template <class charT, class traits> -struct regex_data -{ -   typedef regex_constants::syntax_option_type   flag_type; -   typedef std::size_t                           size_type;   - -   regex_data(const ::boost::shared_ptr< -      ::boost::regex_traits_wrapper<traits> >& t)  -      : m_ptraits(t), m_expression(0), m_expression_len(0) {} -   regex_data()  -      : m_ptraits(new ::boost::regex_traits_wrapper<traits>()), m_expression(0), m_expression_len(0) {} - -   ::boost::shared_ptr< -      ::boost::regex_traits_wrapper<traits> -      >                        m_ptraits;                 // traits class instance -   flag_type                   m_flags;                   // flags with which we were compiled -   int                         m_status;                  // error code (0 implies OK). -   const charT*                m_expression;              // the original expression -   std::ptrdiff_t              m_expression_len;          // the length of the original expression -   size_type                   m_mark_count;              // the number of marked sub-expressions -   re_detail::re_syntax_base*  m_first_state;             // the first state of the machine -   unsigned                    m_restart_type;            // search optimisation type -   unsigned char               m_startmap[1 << CHAR_BIT]; // which characters can start a match -   unsigned int                m_can_be_null;             // whether we can match a null string -   re_detail::raw_storage      m_data;                    // the buffer in which our states are constructed -   typename traits::char_class_type    m_word_mask;       // mask used to determine if a character is a word character -   std::vector< -      std::pair< -      std::size_t, std::size_t> > m_subs;                 // Position of sub-expressions within the *string*. -}; -// -// class basic_regex_implementation -// pimpl implementation class for basic_regex. -// -template <class charT, class traits> -class basic_regex_implementation -   : public regex_data<charT, traits> -{ -public: -   typedef regex_constants::syntax_option_type   flag_type; -   typedef std::ptrdiff_t                        difference_type; -   typedef std::size_t                           size_type;  -   typedef typename traits::locale_type          locale_type; -   typedef const charT*                          const_iterator; - -   basic_regex_implementation(){} -   basic_regex_implementation(const ::boost::shared_ptr< -      ::boost::regex_traits_wrapper<traits> >& t) -      : regex_data<charT, traits>(t) {} -   void assign(const charT* arg_first, -                          const charT* arg_last, -                          flag_type f) -   { -      regex_data<charT, traits>* pdat = this; -      basic_regex_parser<charT, traits> parser(pdat); -      parser.parse(arg_first, arg_last, f); -   } - -   locale_type BOOST_REGEX_CALL imbue(locale_type l) -   {  -      return this->m_ptraits->imbue(l);  -   } -   locale_type BOOST_REGEX_CALL getloc()const -   {  -      return this->m_ptraits->getloc();  -   } -   std::basic_string<charT> BOOST_REGEX_CALL str()const -   { -      std::basic_string<charT> result; -      if(this->m_status == 0) -         result = std::basic_string<charT>(this->m_expression, this->m_expression_len); -      return result; -   } -   const_iterator BOOST_REGEX_CALL expression()const -   { -      return this->m_expression; -   } -   std::pair<const_iterator, const_iterator> BOOST_REGEX_CALL subexpression(std::size_t n)const -   { -      if(n == 0) -         throw std::out_of_range("0 is not a valid subexpression index."); -      const std::pair<std::size_t, std::size_t>& pi = this->m_subs.at(n - 1); -      std::pair<const_iterator, const_iterator> p(expression() + pi.first, expression() + pi.second); -      return p; -   } -   // -   // begin, end: -   const_iterator BOOST_REGEX_CALL begin()const -   {  -      return (!this->m_status ? 0 : this->m_expression);  -   } -   const_iterator BOOST_REGEX_CALL end()const -   {  -      return (!this->m_status ? 0 : this->m_expression + this->m_expression_len);  -   } -   flag_type BOOST_REGEX_CALL flags()const -   { -      return this->m_flags; -   } -   size_type BOOST_REGEX_CALL size()const -   { -      return this->m_expression_len; -   } -   int BOOST_REGEX_CALL status()const -   { -      return this->m_status; -   } -   size_type BOOST_REGEX_CALL mark_count()const -   { -      return this->m_mark_count; -   } -   const re_detail::re_syntax_base* get_first_state()const -   { -      return this->m_first_state; -   } -   unsigned get_restart_type()const -   { -      return this->m_restart_type; -   } -   const unsigned char* get_map()const -   { -      return this->m_startmap; -   } -   const ::boost::regex_traits_wrapper<traits>& get_traits()const -   { -      return *(this->m_ptraits); -   } -   bool can_be_null()const -   { -      return this->m_can_be_null; -   } -   const regex_data<charT, traits>& get_data()const -   { -      basic_regex_implementation<charT, traits> const* p = this; -      return *static_cast<const regex_data<charT, traits>*>(p); -   } -}; - -} // namespace re_detail -// -// class basic_regex: -// represents the compiled -// regular expression: -// - -#ifdef BOOST_REGEX_NO_FWD -template <class charT, class traits = regex_traits<charT> > -#else -template <class charT, class traits > -#endif -class basic_regex : public regbase -{ -public: -   // typedefs: -   typedef std::size_t                           traits_size_type; -   typedef typename traits::string_type          traits_string_type; -   typedef charT                                 char_type; -   typedef traits                                traits_type; - -   typedef charT                                 value_type; -   typedef charT&                                reference; -   typedef const charT&                          const_reference; -   typedef const charT*                          const_iterator; -   typedef const_iterator                        iterator; -   typedef std::ptrdiff_t                        difference_type; -   typedef std::size_t                           size_type;    -   typedef regex_constants::syntax_option_type   flag_type; -   // locale_type -   // placeholder for actual locale type used by the -   // traits class to localise *this. -   typedef typename traits::locale_type          locale_type; -    -public: -   explicit basic_regex(){} -   explicit basic_regex(const charT* p, flag_type f = regex_constants::normal) -   { -      assign(p, f); -   } -   basic_regex(const charT* p1, const charT* p2, flag_type f = regex_constants::normal) -   { -      assign(p1, p2, f); -   } -   basic_regex(const charT* p, size_type len, flag_type f) -   { -      assign(p, len, f); -   } -   basic_regex(const basic_regex& that) -      : m_pimpl(that.m_pimpl) {} -   ~basic_regex(){} -   basic_regex& BOOST_REGEX_CALL operator=(const basic_regex& that) -   { -      return assign(that); -   } -   basic_regex& BOOST_REGEX_CALL operator=(const charT* ptr) -   { -      return assign(ptr); -   } - -   // -   // assign: -   basic_regex& assign(const basic_regex& that) -   {  -      m_pimpl = that.m_pimpl; -      return *this;  -   } -   basic_regex& assign(const charT* p, flag_type f = regex_constants::normal) -   { -      return assign(p, p + traits::length(p), f); -   } -   basic_regex& assign(const charT* p, size_type len, flag_type f) -   { -      return assign(p, p + len, f); -   } -private: -   basic_regex& do_assign(const charT* p1, -                          const charT* p2, -                          flag_type f); -public: -   basic_regex& assign(const charT* p1, -                          const charT* p2, -                          flag_type f = regex_constants::normal) -   { -      return do_assign(p1, p2, f); -   } -#if !defined(BOOST_NO_MEMBER_TEMPLATES) - -   template <class ST, class SA> -   unsigned int BOOST_REGEX_CALL set_expression(const std::basic_string<charT, ST, SA>& p, flag_type f = regex_constants::normal) -   {  -      return set_expression(p.data(), p.data() + p.size(), f);  -   } - -   template <class ST, class SA> -   explicit basic_regex(const std::basic_string<charT, ST, SA>& p, flag_type f = regex_constants::normal) -   {  -      assign(p, f);  -   } - -   template <class InputIterator> -   basic_regex(InputIterator arg_first, InputIterator arg_last, flag_type f = regex_constants::normal) -   { -      typedef typename traits::string_type seq_type; -      seq_type a(arg_first, arg_last); -      if(a.size()) -         assign(&*a.begin(), &*a.begin() + a.size(), f); -      else -         assign(static_cast<const charT*>(0), static_cast<const charT*>(0), f); -   } - -   template <class ST, class SA> -   basic_regex& BOOST_REGEX_CALL operator=(const std::basic_string<charT, ST, SA>& p) -   { -      return assign(p.data(), p.data() + p.size(), regex_constants::normal); -   } - -   template <class string_traits, class A> -   basic_regex& BOOST_REGEX_CALL assign( -       const std::basic_string<charT, string_traits, A>& s, -       flag_type f = regex_constants::normal) -   { -      return assign(s.data(), s.data() + s.size(), f); -   } - -   template <class InputIterator> -   basic_regex& BOOST_REGEX_CALL assign(InputIterator arg_first, -                          InputIterator arg_last, -                          flag_type f = regex_constants::normal) -   { -      typedef typename traits::string_type seq_type; -      seq_type a(arg_first, arg_last); -      if(a.size()) -      { -         const charT* p1 = &*a.begin(); -         const charT* p2 = &*a.begin() + a.size(); -         return assign(p1, p2, f); -      } -      return assign(static_cast<const charT*>(0), static_cast<const charT*>(0), f); -   } -#else -   unsigned int BOOST_REGEX_CALL set_expression(const std::basic_string<charT>& p, flag_type f = regex_constants::normal) -   {  -      return set_expression(p.data(), p.data() + p.size(), f);  -   } - -   basic_regex(const std::basic_string<charT>& p, flag_type f = regex_constants::normal) -   {  -      assign(p, f);  -   } - -   basic_regex& BOOST_REGEX_CALL operator=(const std::basic_string<charT>& p) -   { -      return assign(p.data(), p.data() + p.size(), regex_constants::normal); -   } - -   basic_regex& BOOST_REGEX_CALL assign( -       const std::basic_string<charT>& s, -       flag_type f = regex_constants::normal) -   { -      return assign(s.data(), s.data() + s.size(), f); -   } - -#endif - -   // -   // locale: -   locale_type BOOST_REGEX_CALL imbue(locale_type l); -   locale_type BOOST_REGEX_CALL getloc()const -   {  -      return m_pimpl.get() ? m_pimpl->getloc() : locale_type();  -   } -   // -   // getflags: -   // retained for backwards compatibility only, "flags" -   // is now the preferred name: -   flag_type BOOST_REGEX_CALL getflags()const -   {  -      return flags(); -   } -   flag_type BOOST_REGEX_CALL flags()const -   {  -      return m_pimpl.get() ? m_pimpl->flags() : 0; -   } -   // -   // str: -   std::basic_string<charT> BOOST_REGEX_CALL str()const -   { -      return m_pimpl.get() ? m_pimpl->str() : std::basic_string<charT>(); -   } -   // -   // begin, end, subexpression: -   std::pair<const_iterator, const_iterator> BOOST_REGEX_CALL subexpression(std::size_t n)const -   { -      if(!m_pimpl.get()) -         throw std::logic_error("Can't access subexpressions in an invalid regex."); -      return m_pimpl->subexpression(n); -   } -   const_iterator BOOST_REGEX_CALL begin()const -   {  -      return (m_pimpl.get() ? m_pimpl->begin() : 0);  -   } -   const_iterator BOOST_REGEX_CALL end()const -   {  -      return (m_pimpl.get() ? m_pimpl->end() : 0);  -   } -   // -   // swap: -   void BOOST_REGEX_CALL swap(basic_regex& that)throw() -   { -      m_pimpl.swap(that.m_pimpl); -   } -   // -   // size: -   size_type BOOST_REGEX_CALL size()const -   {  -      return (m_pimpl.get() ? m_pimpl->size() : 0);  -   } -   // -   // max_size: -   size_type BOOST_REGEX_CALL max_size()const -   {  -      return UINT_MAX;  -   } -   // -   // empty: -   bool BOOST_REGEX_CALL empty()const -   {  -      return (m_pimpl.get() ? 0 != m_pimpl->status() : true);  -   } - -   size_type BOOST_REGEX_CALL mark_count()const  -   {  -      return (m_pimpl.get() ? m_pimpl->mark_count() : 0);  -   } - -   int status()const -   { -      return (m_pimpl.get() ? m_pimpl->status() : regex_constants::error_empty); -   } - -   int BOOST_REGEX_CALL compare(const basic_regex& that) const -   { -      if(m_pimpl.get() == that.m_pimpl.get()) -         return 0; -      if(!m_pimpl.get()) -         return -1; -      if(!that.m_pimpl.get()) -         return 1; -      if(status() != that.status()) -         return status() - that.status(); -      if(flags() != that.flags()) -         return flags() - that.flags(); -      return str().compare(that.str()); -   } -   bool BOOST_REGEX_CALL operator==(const basic_regex& e)const -   {  -      return compare(e) == 0;  -   } -   bool BOOST_REGEX_CALL operator != (const basic_regex& e)const -   {  -      return compare(e) != 0;  -   } -   bool BOOST_REGEX_CALL operator<(const basic_regex& e)const -   {  -      return compare(e) < 0;  -   } -   bool BOOST_REGEX_CALL operator>(const basic_regex& e)const -   {  -      return compare(e) > 0;  -   } -   bool BOOST_REGEX_CALL operator<=(const basic_regex& e)const -   {  -      return compare(e) <= 0;  -   } -   bool BOOST_REGEX_CALL operator>=(const basic_regex& e)const -   {  -      return compare(e) >= 0;  -   } - -   // -   // The following are deprecated as public interfaces -   // but are available for compatibility with earlier versions. -   const charT* BOOST_REGEX_CALL expression()const  -   {  -      return (m_pimpl.get() && !m_pimpl->status() ? m_pimpl->expression() : 0);  -   } -   unsigned int BOOST_REGEX_CALL set_expression(const charT* p1, const charT* p2, flag_type f = regex_constants::normal) -   { -      assign(p1, p2, f | regex_constants::no_except); -      return status(); -   } -   unsigned int BOOST_REGEX_CALL set_expression(const charT* p, flag_type f = regex_constants::normal)  -   {  -      assign(p, f | regex_constants::no_except);  -      return status(); -   } -   unsigned int BOOST_REGEX_CALL error_code()const -   { -      return status(); -   } -   // -   // private access methods: -   // -   const re_detail::re_syntax_base* get_first_state()const -   { -      BOOST_ASSERT(0 != m_pimpl.get()); -      return m_pimpl->get_first_state(); -   } -   unsigned get_restart_type()const -   { -      BOOST_ASSERT(0 != m_pimpl.get()); -      return m_pimpl->get_restart_type(); -   } -   const unsigned char* get_map()const -   { -      BOOST_ASSERT(0 != m_pimpl.get()); -      return m_pimpl->get_map(); -   } -   const ::boost::regex_traits_wrapper<traits>& get_traits()const -   { -      BOOST_ASSERT(0 != m_pimpl.get()); -      return m_pimpl->get_traits(); -   } -   bool can_be_null()const -   { -      BOOST_ASSERT(0 != m_pimpl.get()); -      return m_pimpl->can_be_null(); -   } -   const re_detail::regex_data<charT, traits>& get_data()const -   { -      BOOST_ASSERT(0 != m_pimpl.get()); -      return m_pimpl->get_data(); -   } - -private: -   shared_ptr<re_detail::basic_regex_implementation<charT, traits> > m_pimpl; -}; - -// -// out of line members; -// these are the only members that mutate the basic_regex object, -// and are designed to provide the strong exception guarentee -// (in the event of a throw, the state of the object remains unchanged). -// -template <class charT, class traits> -basic_regex<charT, traits>& basic_regex<charT, traits>::do_assign(const charT* p1, -                        const charT* p2, -                        flag_type f) -{ -   shared_ptr<re_detail::basic_regex_implementation<charT, traits> > temp; -   if(!m_pimpl.get()) -   { -      temp = shared_ptr<re_detail::basic_regex_implementation<charT, traits> >(new re_detail::basic_regex_implementation<charT, traits>()); -   } -   else -   { -      temp = shared_ptr<re_detail::basic_regex_implementation<charT, traits> >(new re_detail::basic_regex_implementation<charT, traits>(m_pimpl->m_ptraits)); -   } -   temp->assign(p1, p2, f); -   temp.swap(m_pimpl); -   return *this; -} - -template <class charT, class traits> -typename basic_regex<charT, traits>::locale_type BOOST_REGEX_CALL basic_regex<charT, traits>::imbue(locale_type l) -{  -   shared_ptr<re_detail::basic_regex_implementation<charT, traits> > temp(new re_detail::basic_regex_implementation<charT, traits>()); -   locale_type result = temp->imbue(l); -   temp.swap(m_pimpl); -   return result; -} - -// -// non-members: -// -template <class charT, class traits> -void swap(basic_regex<charT, traits>& e1, basic_regex<charT, traits>& e2) -{ -   e1.swap(e2); -} - -#ifndef BOOST_NO_STD_LOCALE -template <class charT, class traits, class traits2> -std::basic_ostream<charT, traits>&  -   operator << (std::basic_ostream<charT, traits>& os,  -                const basic_regex<charT, traits2>& e) -{ -   return (os << e.str()); -} -#else -template <class traits> -std::ostream& operator << (std::ostream& os, const basic_regex<char, traits>& e) -{ -   return (os << e.str()); -} -#endif - -// -// class reg_expression: -// this is provided for backwards compatibility only, -// it is deprecated, no not use! -// -#ifdef BOOST_REGEX_NO_FWD -template <class charT, class traits = regex_traits<charT> > -#else -template <class charT, class traits > -#endif -class reg_expression : public basic_regex<charT, traits> -{ -public: -   typedef typename basic_regex<charT, traits>::flag_type flag_type; -   typedef typename basic_regex<charT, traits>::size_type size_type; -   explicit reg_expression(){} -   explicit reg_expression(const charT* p, flag_type f = regex_constants::normal) -      : basic_regex<charT, traits>(p, f){} -   reg_expression(const charT* p1, const charT* p2, flag_type f = regex_constants::normal) -      : basic_regex<charT, traits>(p1, p2, f){} -   reg_expression(const charT* p, size_type len, flag_type f) -      : basic_regex<charT, traits>(p, len, f){} -   reg_expression(const reg_expression& that) -      : basic_regex<charT, traits>(that) {} -   ~reg_expression(){} -   reg_expression& BOOST_REGEX_CALL operator=(const reg_expression& that) -   { -      return this->assign(that); -   } - -#if !defined(BOOST_NO_MEMBER_TEMPLATES) -   template <class ST, class SA> -   explicit reg_expression(const std::basic_string<charT, ST, SA>& p, flag_type f = regex_constants::normal) -   : basic_regex<charT, traits>(p, f) -   {  -   } - -   template <class InputIterator> -   reg_expression(InputIterator arg_first, InputIterator arg_last, flag_type f = regex_constants::normal) -   : basic_regex<charT, traits>(arg_first, arg_last, f) -   { -   } - -   template <class ST, class SA> -   reg_expression& BOOST_REGEX_CALL operator=(const std::basic_string<charT, ST, SA>& p) -   { -      this->assign(p); -      return *this; -   } -#else -   explicit reg_expression(const std::basic_string<charT>& p, flag_type f = regex_constants::normal) -   : basic_regex<charT, traits>(p, f) -   {  -   } - -   reg_expression& BOOST_REGEX_CALL operator=(const std::basic_string<charT>& p) -   { -      this->assign(p); -      return *this; -   } -#endif - -}; - -#ifdef BOOST_MSVC -#pragma warning (pop) -#endif - -} // namespace boost - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif - diff --git a/3rdParty/Boost/boost/regex/v4/basic_regex_creator.hpp b/3rdParty/Boost/boost/regex/v4/basic_regex_creator.hpp deleted file mode 100644 index 9f2cbee..0000000 --- a/3rdParty/Boost/boost/regex/v4/basic_regex_creator.hpp +++ /dev/null @@ -1,1332 +0,0 @@ -/* - * - * Copyright (c) 2004 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ - - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         basic_regex_creator.cpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Declares template class basic_regex_creator which fills in -  *                the data members of a regex_data object. -  */ - -#ifndef BOOST_REGEX_V4_BASIC_REGEX_CREATOR_HPP -#define BOOST_REGEX_V4_BASIC_REGEX_CREATOR_HPP - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#ifdef BOOST_MSVC -#  pragma warning(push) -#  pragma warning(disable: 4800) -#endif - -namespace boost{ - -namespace re_detail{ - -template <class charT> -struct digraph : public std::pair<charT, charT> -{ -   digraph() : std::pair<charT, charT>(0, 0){} -   digraph(charT c1) : std::pair<charT, charT>(c1, 0){} -   digraph(charT c1, charT c2) : std::pair<charT, charT>(c1, c2) -   {} -#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300) -   digraph(const digraph<charT>& d) : std::pair<charT, charT>(d.first, d.second){} -#endif -   template <class Seq> -   digraph(const Seq& s) : std::pair<charT, charT>() -   { -      BOOST_ASSERT(s.size() <= 2); -      BOOST_ASSERT(s.size()); -      this->first = s[0]; -      this->second = (s.size() > 1) ? s[1] : 0; -   } -}; - -template <class charT, class traits> -class basic_char_set -{ -public: -   typedef digraph<charT>                   digraph_type; -   typedef typename traits::string_type     string_type; -   typedef typename traits::char_class_type mask_type; - -   basic_char_set() -   { -      m_negate = false; -      m_has_digraphs = false; -      m_classes = 0; -      m_negated_classes = 0; -      m_empty = true; -   } - -   void add_single(const digraph_type& s) -   { -      m_singles.insert(m_singles.end(), s); -      if(s.second) -         m_has_digraphs = true; -      m_empty = false; -   } -   void add_range(const digraph_type& first, const digraph_type& end) -   { -      m_ranges.insert(m_ranges.end(), first); -      m_ranges.insert(m_ranges.end(), end); -      if(first.second) -      { -         m_has_digraphs = true; -         add_single(first); -      } -      if(end.second) -      { -         m_has_digraphs = true; -         add_single(end); -      } -      m_empty = false; -   } -   void add_class(mask_type m) -   { -      m_classes |= m; -      m_empty = false; -   } -   void add_negated_class(mask_type m) -   { -      m_negated_classes |= m; -      m_empty = false; -   } -   void add_equivalent(const digraph_type& s) -   { -      m_equivalents.insert(m_equivalents.end(), s); -      if(s.second) -      { -         m_has_digraphs = true; -         add_single(s); -      } -      m_empty = false; -   } -   void negate() -   {  -      m_negate = true; -      //m_empty = false; -   } - -   // -   // accessor functions: -   // -   bool has_digraphs()const -   { -      return m_has_digraphs; -   } -   bool is_negated()const -   { -      return m_negate; -   } -   typedef typename std::vector<digraph_type>::const_iterator  list_iterator; -   list_iterator singles_begin()const -   { -      return m_singles.begin(); -   } -   list_iterator singles_end()const -   { -      return m_singles.end(); -   } -   list_iterator ranges_begin()const -   { -      return m_ranges.begin(); -   } -   list_iterator ranges_end()const -   { -      return m_ranges.end(); -   } -   list_iterator equivalents_begin()const -   { -      return m_equivalents.begin(); -   } -   list_iterator equivalents_end()const -   { -      return m_equivalents.end(); -   } -   mask_type classes()const -   { -      return m_classes; -   } -   mask_type negated_classes()const -   { -      return m_negated_classes; -   } -   bool empty()const -   { -      return m_empty; -   } -private: -   std::vector<digraph_type> m_singles;         // a list of single characters to match -   std::vector<digraph_type> m_ranges;          // a list of end points of our ranges -   bool                      m_negate;          // true if the set is to be negated -   bool                      m_has_digraphs;    // true if we have digraphs present -   mask_type                 m_classes;         // character classes to match -   mask_type                 m_negated_classes; // negated character classes to match -   bool                      m_empty;           // whether we've added anything yet -   std::vector<digraph_type> m_equivalents;     // a list of equivalence classes -}; -    -template <class charT, class traits> -class basic_regex_creator -{ -public: -   basic_regex_creator(regex_data<charT, traits>* data); -   std::ptrdiff_t getoffset(void* addr) -   { -      return getoffset(addr, m_pdata->m_data.data()); -   } -   std::ptrdiff_t getoffset(const void* addr, const void* base) -   { -      return static_cast<const char*>(addr) - static_cast<const char*>(base); -   } -   re_syntax_base* getaddress(std::ptrdiff_t off) -   { -      return getaddress(off, m_pdata->m_data.data()); -   } -   re_syntax_base* getaddress(std::ptrdiff_t off, void* base) -   { -      return static_cast<re_syntax_base*>(static_cast<void*>(static_cast<char*>(base) + off)); -   } -   void init(unsigned l_flags) -   { -      m_pdata->m_flags = l_flags; -      m_icase = l_flags & regex_constants::icase; -   } -   regbase::flag_type flags() -   { -      return m_pdata->m_flags; -   } -   void flags(regbase::flag_type f) -   { -      m_pdata->m_flags = f; -      if(m_icase != static_cast<bool>(f & regbase::icase)) -      { -         m_icase = static_cast<bool>(f & regbase::icase); -      } -   } -   re_syntax_base* append_state(syntax_element_type t, std::size_t s = sizeof(re_syntax_base)); -   re_syntax_base* insert_state(std::ptrdiff_t pos, syntax_element_type t, std::size_t s = sizeof(re_syntax_base)); -   re_literal* append_literal(charT c); -   re_syntax_base* append_set(const basic_char_set<charT, traits>& char_set); -   re_syntax_base* append_set(const basic_char_set<charT, traits>& char_set, mpl::false_*); -   re_syntax_base* append_set(const basic_char_set<charT, traits>& char_set, mpl::true_*); -   void finalize(const charT* p1, const charT* p2); -protected: -   regex_data<charT, traits>*    m_pdata;              // pointer to the basic_regex_data struct we are filling in -   const ::boost::regex_traits_wrapper<traits>&   -                                 m_traits;             // convenience reference to traits class -   re_syntax_base*               m_last_state;         // the last state we added -   bool                          m_icase;              // true for case insensitive matches -   unsigned                      m_repeater_id;        // the state_id of the next repeater -   bool                          m_has_backrefs;       // true if there are actually any backrefs -   unsigned                      m_backrefs;           // bitmask of permitted backrefs -   boost::uintmax_t              m_bad_repeats;        // bitmask of repeats we can't deduce a startmap for; -   typename traits::char_class_type m_word_mask;       // mask used to determine if a character is a word character -   typename traits::char_class_type m_mask_space;      // mask used to determine if a character is a word character -   typename traits::char_class_type m_lower_mask;       // mask used to determine if a character is a lowercase character -   typename traits::char_class_type m_upper_mask;      // mask used to determine if a character is an uppercase character -   typename traits::char_class_type m_alpha_mask;      // mask used to determine if a character is an alphabetic character -private: -   basic_regex_creator& operator=(const basic_regex_creator&); -   basic_regex_creator(const basic_regex_creator&); - -   void fixup_pointers(re_syntax_base* state); -   void create_startmaps(re_syntax_base* state); -   int calculate_backstep(re_syntax_base* state); -   void create_startmap(re_syntax_base* state, unsigned char* l_map, unsigned int* pnull, unsigned char mask); -   unsigned get_restart_type(re_syntax_base* state); -   void set_all_masks(unsigned char* bits, unsigned char); -   bool is_bad_repeat(re_syntax_base* pt); -   void set_bad_repeat(re_syntax_base* pt); -   syntax_element_type get_repeat_type(re_syntax_base* state); -   void probe_leading_repeat(re_syntax_base* state); -}; - -template <class charT, class traits> -basic_regex_creator<charT, traits>::basic_regex_creator(regex_data<charT, traits>* data) -   : m_pdata(data), m_traits(*(data->m_ptraits)), m_last_state(0), m_repeater_id(0), m_has_backrefs(false), m_backrefs(0) -{ -   m_pdata->m_data.clear(); -   m_pdata->m_status = ::boost::regex_constants::error_ok; -   static const charT w = 'w'; -   static const charT s = 's'; -   static const charT l[5] = { 'l', 'o', 'w', 'e', 'r', }; -   static const charT u[5] = { 'u', 'p', 'p', 'e', 'r', }; -   static const charT a[5] = { 'a', 'l', 'p', 'h', 'a', }; -   m_word_mask = m_traits.lookup_classname(&w, &w +1); -   m_mask_space = m_traits.lookup_classname(&s, &s +1); -   m_lower_mask = m_traits.lookup_classname(l, l + 5); -   m_upper_mask = m_traits.lookup_classname(u, u + 5); -   m_alpha_mask = m_traits.lookup_classname(a, a + 5); -   m_pdata->m_word_mask = m_word_mask; -   BOOST_ASSERT(m_word_mask != 0);  -   BOOST_ASSERT(m_mask_space != 0);  -   BOOST_ASSERT(m_lower_mask != 0);  -   BOOST_ASSERT(m_upper_mask != 0);  -   BOOST_ASSERT(m_alpha_mask != 0);  -} - -template <class charT, class traits> -re_syntax_base* basic_regex_creator<charT, traits>::append_state(syntax_element_type t, std::size_t s) -{ -   // if the state is a backref then make a note of it: -   if(t == syntax_element_backref) -      this->m_has_backrefs = true; -   // append a new state, start by aligning our last one: -   m_pdata->m_data.align(); -   // set the offset to the next state in our last one: -   if(m_last_state) -      m_last_state->next.i = m_pdata->m_data.size() - getoffset(m_last_state); -   // now actually extent our data: -   m_last_state = static_cast<re_syntax_base*>(m_pdata->m_data.extend(s)); -   // fill in boilerplate options in the new state: -   m_last_state->next.i = 0; -   m_last_state->type = t; -   return m_last_state; -} - -template <class charT, class traits> -re_syntax_base* basic_regex_creator<charT, traits>::insert_state(std::ptrdiff_t pos, syntax_element_type t, std::size_t s) -{ -   // append a new state, start by aligning our last one: -   m_pdata->m_data.align(); -   // set the offset to the next state in our last one: -   if(m_last_state) -      m_last_state->next.i = m_pdata->m_data.size() - getoffset(m_last_state); -   // remember the last state position: -   std::ptrdiff_t off = getoffset(m_last_state) + s; -   // now actually insert our data: -   re_syntax_base* new_state = static_cast<re_syntax_base*>(m_pdata->m_data.insert(pos, s)); -   // fill in boilerplate options in the new state: -   new_state->next.i = s; -   new_state->type = t; -   m_last_state = getaddress(off); -   return new_state; -} - -template <class charT, class traits> -re_literal* basic_regex_creator<charT, traits>::append_literal(charT c) -{ -   re_literal* result; -   // start by seeing if we have an existing re_literal we can extend: -   if((0 == m_last_state) || (m_last_state->type != syntax_element_literal)) -   { -      // no existing re_literal, create a new one: -      result = static_cast<re_literal*>(append_state(syntax_element_literal, sizeof(re_literal) + sizeof(charT))); -      result->length = 1; -      *static_cast<charT*>(static_cast<void*>(result+1)) = m_traits.translate(c, m_icase); -   } -   else -   { -      // we have an existing re_literal, extend it: -      std::ptrdiff_t off = getoffset(m_last_state); -      m_pdata->m_data.extend(sizeof(charT)); -      m_last_state = result = static_cast<re_literal*>(getaddress(off)); -      charT* characters = static_cast<charT*>(static_cast<void*>(result+1)); -      characters[result->length] = m_traits.translate(c, m_icase); -      ++(result->length); -   } -   return result; -} - -template <class charT, class traits> -inline re_syntax_base* basic_regex_creator<charT, traits>::append_set( -   const basic_char_set<charT, traits>& char_set) -{ -   typedef mpl::bool_< (sizeof(charT) == 1) > truth_type; -   return char_set.has_digraphs()  -      ? append_set(char_set, static_cast<mpl::false_*>(0)) -      : append_set(char_set, static_cast<truth_type*>(0)); -} - -template <class charT, class traits> -re_syntax_base* basic_regex_creator<charT, traits>::append_set( -   const basic_char_set<charT, traits>& char_set, mpl::false_*) -{ -   typedef typename traits::string_type string_type; -   typedef typename basic_char_set<charT, traits>::list_iterator item_iterator; -   typedef typename traits::char_class_type mask_type; -    -   re_set_long<mask_type>* result = static_cast<re_set_long<mask_type>*>(append_state(syntax_element_long_set, sizeof(re_set_long<mask_type>))); -   // -   // fill in the basics: -   // -   result->csingles = static_cast<unsigned int>(::boost::re_detail::distance(char_set.singles_begin(), char_set.singles_end())); -   result->cranges = static_cast<unsigned int>(::boost::re_detail::distance(char_set.ranges_begin(), char_set.ranges_end())) / 2; -   result->cequivalents = static_cast<unsigned int>(::boost::re_detail::distance(char_set.equivalents_begin(), char_set.equivalents_end())); -   result->cclasses = char_set.classes(); -   result->cnclasses = char_set.negated_classes(); -   if(flags() & regbase::icase) -   { -      // adjust classes as needed: -      if(((result->cclasses & m_lower_mask) == m_lower_mask) || ((result->cclasses & m_upper_mask) == m_upper_mask)) -         result->cclasses |= m_alpha_mask; -      if(((result->cnclasses & m_lower_mask) == m_lower_mask) || ((result->cnclasses & m_upper_mask) == m_upper_mask)) -         result->cnclasses |= m_alpha_mask; -   } - -   result->isnot = char_set.is_negated(); -   result->singleton = !char_set.has_digraphs(); -   // -   // remember where the state is for later: -   // -   std::ptrdiff_t offset = getoffset(result); -   // -   // now extend with all the singles: -   // -   item_iterator first, last; -   first = char_set.singles_begin(); -   last = char_set.singles_end(); -   while(first != last) -   { -      charT* p = static_cast<charT*>(this->m_pdata->m_data.extend(sizeof(charT) * (first->second ? 3 : 2))); -      p[0] = m_traits.translate(first->first, m_icase); -      if(first->second) -      { -         p[1] = m_traits.translate(first->second, m_icase); -         p[2] = 0; -      } -      else -         p[1] = 0; -      ++first; -   } -   // -   // now extend with all the ranges: -   // -   first = char_set.ranges_begin(); -   last = char_set.ranges_end(); -   while(first != last) -   { -      // first grab the endpoints of the range: -      digraph<charT> c1 = *first; -      c1.first = this->m_traits.translate(c1.first, this->m_icase); -      c1.second = this->m_traits.translate(c1.second, this->m_icase); -      ++first; -      digraph<charT> c2 = *first; -      c2.first = this->m_traits.translate(c2.first, this->m_icase); -      c2.second = this->m_traits.translate(c2.second, this->m_icase); -      ++first; -      string_type s1, s2; -      // different actions now depending upon whether collation is turned on: -      if(flags() & regex_constants::collate) -      { -         // we need to transform our range into sort keys: -#if BOOST_WORKAROUND(__GNUC__, < 3) -         string_type in(3, charT(0)); -         in[0] = c1.first; -         in[1] = c1.second; -         s1 = this->m_traits.transform(in.c_str(), (in[1] ? in.c_str()+2 : in.c_str()+1)); -         in[0] = c2.first; -         in[1] = c2.second; -         s2 = this->m_traits.transform(in.c_str(), (in[1] ? in.c_str()+2 : in.c_str()+1)); -#else -         charT a1[3] = { c1.first, c1.second, charT(0), }; -         charT a2[3] = { c2.first, c2.second, charT(0), }; -         s1 = this->m_traits.transform(a1, (a1[1] ? a1+2 : a1+1)); -         s2 = this->m_traits.transform(a2, (a2[1] ? a2+2 : a2+1)); -#endif -         if(s1.size() == 0) -            s1 = string_type(1, charT(0)); -         if(s2.size() == 0) -            s2 = string_type(1, charT(0)); -      } -      else -      { -         if(c1.second) -         { -            s1.insert(s1.end(), c1.first); -            s1.insert(s1.end(), c1.second); -         } -         else -            s1 = string_type(1, c1.first); -         if(c2.second) -         { -            s2.insert(s2.end(), c2.first); -            s2.insert(s2.end(), c2.second); -         } -         else -            s2.insert(s2.end(), c2.first); -      } -      if(s1 > s2) -      { -         // Oops error: -         return 0; -      } -      charT* p = static_cast<charT*>(this->m_pdata->m_data.extend(sizeof(charT) * (s1.size() + s2.size() + 2) ) ); -      re_detail::copy(s1.begin(), s1.end(), p); -      p[s1.size()] = charT(0); -      p += s1.size() + 1; -      re_detail::copy(s2.begin(), s2.end(), p); -      p[s2.size()] = charT(0); -   } -   // -   // now process the equivalence classes: -   // -   first = char_set.equivalents_begin(); -   last = char_set.equivalents_end(); -   while(first != last) -   { -      string_type s; -      if(first->second) -      { -#if BOOST_WORKAROUND(__GNUC__, < 3) -         string_type in(3, charT(0)); -         in[0] = first->first; -         in[1] = first->second; -         s = m_traits.transform_primary(in.c_str(), in.c_str()+2); -#else -         charT cs[3] = { first->first, first->second, charT(0), }; -         s = m_traits.transform_primary(cs, cs+2); -#endif -      } -      else -         s = m_traits.transform_primary(&first->first, &first->first+1); -      if(s.empty()) -         return 0;  // invalid or unsupported equivalence class -      charT* p = static_cast<charT*>(this->m_pdata->m_data.extend(sizeof(charT) * (s.size()+1) ) ); -      re_detail::copy(s.begin(), s.end(), p); -      p[s.size()] = charT(0); -      ++first; -   } -   // -   // finally reset the address of our last state: -   // -   m_last_state = result = static_cast<re_set_long<mask_type>*>(getaddress(offset)); -   return result; -} - -namespace{ - -template<class T> -inline bool char_less(T t1, T t2) -{ -   return t1 < t2; -} -template<> -inline bool char_less<char>(char t1, char t2) -{ -   return static_cast<unsigned char>(t1) < static_cast<unsigned char>(t2); -} -template<> -inline bool char_less<signed char>(signed char t1, signed char t2) -{ -   return static_cast<unsigned char>(t1) < static_cast<unsigned char>(t2); -} -} - -template <class charT, class traits> -re_syntax_base* basic_regex_creator<charT, traits>::append_set( -   const basic_char_set<charT, traits>& char_set, mpl::true_*) -{ -   typedef typename traits::string_type string_type; -   typedef typename basic_char_set<charT, traits>::list_iterator item_iterator; -    -   re_set* result = static_cast<re_set*>(append_state(syntax_element_set, sizeof(re_set))); -   bool negate = char_set.is_negated(); -   std::memset(result->_map, 0, sizeof(result->_map)); -   // -   // handle singles first: -   // -   item_iterator first, last; -   first = char_set.singles_begin(); -   last = char_set.singles_end(); -   while(first != last) -   { -      for(unsigned int i = 0; i < (1 << CHAR_BIT); ++i) -      { -         if(this->m_traits.translate(static_cast<charT>(i), this->m_icase) -            == this->m_traits.translate(first->first, this->m_icase)) -            result->_map[i] = true; -      } -      ++first; -   } -   // -   // OK now handle ranges: -   // -   first = char_set.ranges_begin(); -   last = char_set.ranges_end(); -   while(first != last) -   { -      // first grab the endpoints of the range: -      charT c1 = this->m_traits.translate(first->first, this->m_icase); -      ++first; -      charT c2 = this->m_traits.translate(first->first, this->m_icase); -      ++first; -      // different actions now depending upon whether collation is turned on: -      if(flags() & regex_constants::collate) -      { -         // we need to transform our range into sort keys: -         charT c3[2] = { c1, charT(0), }; -         string_type s1 = this->m_traits.transform(c3, c3+1); -         c3[0] = c2; -         string_type s2 = this->m_traits.transform(c3, c3+1); -         if(s1 > s2) -         { -            // Oops error: -            return 0; -         } -         BOOST_ASSERT(c3[1] == charT(0)); -         for(unsigned i = 0; i < (1u << CHAR_BIT); ++i) -         { -            c3[0] = static_cast<charT>(i); -            string_type s3 = this->m_traits.transform(c3, c3 +1); -            if((s1 <= s3) && (s3 <= s2)) -               result->_map[i] = true; -         } -      } -      else -      { -         if(char_less<charT>(c2, c1)) -         { -            // Oops error: -            return 0; -         } -         // everything in range matches: -         std::memset(result->_map + static_cast<unsigned char>(c1), true, 1 + static_cast<unsigned char>(c2) - static_cast<unsigned char>(c1)); -      } -   } -   // -   // and now the classes: -   // -   typedef typename traits::char_class_type mask_type; -   mask_type m = char_set.classes(); -   if(flags() & regbase::icase) -   { -      // adjust m as needed: -      if(((m & m_lower_mask) == m_lower_mask) || ((m & m_upper_mask) == m_upper_mask)) -         m |= m_alpha_mask; -   } -   if(m != 0) -   { -      for(unsigned i = 0; i < (1u << CHAR_BIT); ++i) -      { -         if(this->m_traits.isctype(static_cast<charT>(i), m)) -            result->_map[i] = true; -      } -   } -   // -   // and now the negated classes: -   // -   m = char_set.negated_classes(); -   if(flags() & regbase::icase) -   { -      // adjust m as needed: -      if(((m & m_lower_mask) == m_lower_mask) || ((m & m_upper_mask) == m_upper_mask)) -         m |= m_alpha_mask; -   } -   if(m != 0) -   { -      for(unsigned i = 0; i < (1u << CHAR_BIT); ++i) -      { -         if(0 == this->m_traits.isctype(static_cast<charT>(i), m)) -            result->_map[i] = true; -      } -   } -   // -   // now process the equivalence classes: -   // -   first = char_set.equivalents_begin(); -   last = char_set.equivalents_end(); -   while(first != last) -   { -      string_type s; -      BOOST_ASSERT(static_cast<charT>(0) == first->second); -      s = m_traits.transform_primary(&first->first, &first->first+1); -      if(s.empty()) -         return 0;  // invalid or unsupported equivalence class -      for(unsigned i = 0; i < (1u << CHAR_BIT); ++i) -      { -         charT c[2] = { (static_cast<charT>(i)), charT(0), }; -         string_type s2 = this->m_traits.transform_primary(c, c+1); -         if(s == s2) -            result->_map[i] = true; -      } -      ++first; -   } -   if(negate) -   { -      for(unsigned i = 0; i < (1u << CHAR_BIT); ++i) -      { -         result->_map[i] = !(result->_map[i]); -      } -   } -   return result; -} - -template <class charT, class traits> -void basic_regex_creator<charT, traits>::finalize(const charT* p1, const charT* p2) -{ -   // we've added all the states we need, now finish things off. -   // start by adding a terminating state: -   append_state(syntax_element_match); -   // extend storage to store original expression: -   std::ptrdiff_t len = p2 - p1; -   m_pdata->m_expression_len = len; -   charT* ps = static_cast<charT*>(m_pdata->m_data.extend(sizeof(charT) * (1 + (p2 - p1)))); -   m_pdata->m_expression = ps; -   re_detail::copy(p1, p2, ps); -   ps[p2 - p1] = 0; -   // fill in our other data... -   // successful parsing implies a zero status: -   m_pdata->m_status = 0; -   // get the first state of the machine: -   m_pdata->m_first_state = static_cast<re_syntax_base*>(m_pdata->m_data.data()); -   // fixup pointers in the machine: -   fixup_pointers(m_pdata->m_first_state); -   // create nested startmaps: -   create_startmaps(m_pdata->m_first_state); -   // create main startmap: -   std::memset(m_pdata->m_startmap, 0, sizeof(m_pdata->m_startmap)); -   m_pdata->m_can_be_null = 0; - -   m_bad_repeats = 0; -   create_startmap(m_pdata->m_first_state, m_pdata->m_startmap, &(m_pdata->m_can_be_null), mask_all); -   // get the restart type: -   m_pdata->m_restart_type = get_restart_type(m_pdata->m_first_state); -   // optimise a leading repeat if there is one: -   probe_leading_repeat(m_pdata->m_first_state); -} - -template <class charT, class traits> -void basic_regex_creator<charT, traits>::fixup_pointers(re_syntax_base* state) -{ -   while(state) -   { -      switch(state->type) -      { -      case syntax_element_rep: -      case syntax_element_dot_rep: -      case syntax_element_char_rep: -      case syntax_element_short_set_rep: -      case syntax_element_long_set_rep: -         // set the state_id of this repeat: -         static_cast<re_repeat*>(state)->state_id = m_repeater_id++; -         // fall through: -      case syntax_element_alt: -         std::memset(static_cast<re_alt*>(state)->_map, 0, sizeof(static_cast<re_alt*>(state)->_map)); -         static_cast<re_alt*>(state)->can_be_null = 0; -         // fall through: -      case syntax_element_jump: -         static_cast<re_jump*>(state)->alt.p = getaddress(static_cast<re_jump*>(state)->alt.i, state); -         // fall through again: -      default: -         if(state->next.i) -            state->next.p = getaddress(state->next.i, state); -         else -            state->next.p = 0; -      } -      state = state->next.p; -   } -} - -template <class charT, class traits> -void basic_regex_creator<charT, traits>::create_startmaps(re_syntax_base* state) -{ -   // non-recursive implementation: -   // create the last map in the machine first, so that earlier maps -   // can make use of the result... -   // -   // This was originally a recursive implementation, but that caused stack -   // overflows with complex expressions on small stacks (think COM+). - -   // start by saving the case setting: -   bool l_icase = m_icase; -   std::vector<std::pair<bool, re_syntax_base*> > v; - -   while(state) -   { -      switch(state->type) -      { -      case syntax_element_toggle_case: -         // we need to track case changes here: -         m_icase = static_cast<re_case*>(state)->icase; -         state = state->next.p; -         continue; -      case syntax_element_alt: -      case syntax_element_rep: -      case syntax_element_dot_rep: -      case syntax_element_char_rep: -      case syntax_element_short_set_rep: -      case syntax_element_long_set_rep: -         // just push the state onto our stack for now: -         v.push_back(std::pair<bool, re_syntax_base*>(m_icase, state)); -         state = state->next.p; -         break; -      case syntax_element_backstep: -         // we need to calculate how big the backstep is: -         static_cast<re_brace*>(state)->index -            = this->calculate_backstep(state->next.p); -         if(static_cast<re_brace*>(state)->index < 0) -         { -            // Oops error: -            if(0 == this->m_pdata->m_status) // update the error code if not already set -               this->m_pdata->m_status = boost::regex_constants::error_bad_pattern; -            // -            // clear the expression, we should be empty: -            // -            this->m_pdata->m_expression = 0; -            this->m_pdata->m_expression_len = 0; -            // -            // and throw if required: -            // -            if(0 == (this->flags() & regex_constants::no_except)) -            { -               std::string message = this->m_pdata->m_ptraits->error_string(boost::regex_constants::error_bad_pattern); -               boost::regex_error e(message, boost::regex_constants::error_bad_pattern, 0); -               e.raise(); -            } -         } -         // fall through: -      default: -         state = state->next.p; -      } -   } -   // now work through our list, building all the maps as we go: -   while(v.size()) -   { -      const std::pair<bool, re_syntax_base*>& p = v.back(); -      m_icase = p.first; -      state = p.second; -      v.pop_back(); - -      // Build maps: -      m_bad_repeats = 0; -      create_startmap(state->next.p, static_cast<re_alt*>(state)->_map, &static_cast<re_alt*>(state)->can_be_null, mask_take); -      m_bad_repeats = 0; -      create_startmap(static_cast<re_alt*>(state)->alt.p, static_cast<re_alt*>(state)->_map, &static_cast<re_alt*>(state)->can_be_null, mask_skip); -      // adjust the type of the state to allow for faster matching: -      state->type = this->get_repeat_type(state); -   } -   // restore case sensitivity: -   m_icase = l_icase; -} - -template <class charT, class traits> -int basic_regex_creator<charT, traits>::calculate_backstep(re_syntax_base* state) -{ -   typedef typename traits::char_class_type mask_type; -   int result = 0; -   while(state) -   { -      switch(state->type) -      { -      case syntax_element_startmark: -         if((static_cast<re_brace*>(state)->index == -1) -            || (static_cast<re_brace*>(state)->index == -2)) -         { -            state = static_cast<re_jump*>(state->next.p)->alt.p->next.p; -            continue; -         } -         else if(static_cast<re_brace*>(state)->index == -3) -         { -            state = state->next.p->next.p; -            continue; -         } -         break; -      case syntax_element_endmark: -         if((static_cast<re_brace*>(state)->index == -1) -            || (static_cast<re_brace*>(state)->index == -2)) -            return result; -         break; -      case syntax_element_literal: -         result += static_cast<re_literal*>(state)->length; -         break; -      case syntax_element_wild: -      case syntax_element_set: -         result += 1; -         break; -      case syntax_element_dot_rep: -      case syntax_element_char_rep: -      case syntax_element_short_set_rep: -      case syntax_element_backref: -      case syntax_element_rep: -      case syntax_element_combining: -      case syntax_element_long_set_rep: -      case syntax_element_backstep: -         { -            re_repeat* rep = static_cast<re_repeat *>(state); -            // adjust the type of the state to allow for faster matching: -            state->type = this->get_repeat_type(state); -            if((state->type == syntax_element_dot_rep)  -               || (state->type == syntax_element_char_rep) -               || (state->type == syntax_element_short_set_rep)) -            { -               if(rep->max != rep->min) -                  return -1; -               result += static_cast<int>(rep->min); -               state = rep->alt.p; -               continue; -            } -            else if((state->type == syntax_element_long_set_rep))  -            { -               BOOST_ASSERT(rep->next.p->type == syntax_element_long_set); -               if(static_cast<re_set_long<mask_type>*>(rep->next.p)->singleton == 0) -                  return -1; -               if(rep->max != rep->min) -                  return -1; -               result += static_cast<int>(rep->min); -               state = rep->alt.p; -               continue; -            } -         } -         return -1; -      case syntax_element_long_set: -         if(static_cast<re_set_long<mask_type>*>(state)->singleton == 0) -            return -1; -         result += 1; -         break; -      case syntax_element_jump: -         state = static_cast<re_jump*>(state)->alt.p; -         continue; -      default: -         break; -      } -      state = state->next.p; -   } -   return -1; -} - -template <class charT, class traits> -void basic_regex_creator<charT, traits>::create_startmap(re_syntax_base* state, unsigned char* l_map, unsigned int* pnull, unsigned char mask) -{ -   int not_last_jump = 1; - -   // track case sensitivity: -   bool l_icase = m_icase; - -   while(state) -   { -      switch(state->type) -      { -      case syntax_element_toggle_case: -         l_icase = static_cast<re_case*>(state)->icase; -         state = state->next.p; -         break; -      case syntax_element_literal: -      { -         // don't set anything in *pnull, set each element in l_map -         // that could match the first character in the literal: -         if(l_map) -         { -            l_map[0] |= mask_init; -            charT first_char = *static_cast<charT*>(static_cast<void*>(static_cast<re_literal*>(state) + 1)); -            for(unsigned int i = 0; i < (1u << CHAR_BIT); ++i) -            { -               if(m_traits.translate(static_cast<charT>(i), l_icase) == first_char) -                  l_map[i] |= mask; -            } -         } -         return; -      } -      case syntax_element_end_line: -      { -         // next character must be a line separator (if there is one): -         if(l_map) -         { -            l_map[0] |= mask_init; -            l_map['\n'] |= mask; -            l_map['\r'] |= mask; -            l_map['\f'] |= mask; -            l_map[0x85] |= mask; -         } -         // now figure out if we can match a NULL string at this point: -         if(pnull) -            create_startmap(state->next.p, 0, pnull, mask); -         return; -      } -      case syntax_element_backref: -         // can be null, and any character can match: -         if(pnull) -            *pnull |= mask; -         // fall through: -      case syntax_element_wild: -      { -         // can't be null, any character can match: -         set_all_masks(l_map, mask); -         return; -      } -      case syntax_element_match: -      { -         // must be null, any character can match: -         set_all_masks(l_map, mask); -         if(pnull) -            *pnull |= mask; -         return; -      } -      case syntax_element_word_start: -      { -         // recurse, then AND with all the word characters: -         create_startmap(state->next.p, l_map, pnull, mask); -         if(l_map) -         { -            l_map[0] |= mask_init; -            for(unsigned int i = 0; i < (1u << CHAR_BIT); ++i) -            { -               if(!m_traits.isctype(static_cast<charT>(i), m_word_mask)) -                  l_map[i] &= static_cast<unsigned char>(~mask); -            } -         } -         return; -      } -      case syntax_element_word_end: -      { -         // recurse, then AND with all the word characters: -         create_startmap(state->next.p, l_map, pnull, mask); -         if(l_map) -         { -            l_map[0] |= mask_init; -            for(unsigned int i = 0; i < (1u << CHAR_BIT); ++i) -            { -               if(m_traits.isctype(static_cast<charT>(i), m_word_mask)) -                  l_map[i] &= static_cast<unsigned char>(~mask); -            } -         } -         return; -      } -      case syntax_element_buffer_end: -      { -         // we *must be null* : -         if(pnull) -            *pnull |= mask; -         return; -      } -      case syntax_element_long_set: -         if(l_map) -         { -            typedef typename traits::char_class_type mask_type; -            if(static_cast<re_set_long<mask_type>*>(state)->singleton) -            { -               l_map[0] |= mask_init; -               for(unsigned int i = 0; i < (1u << CHAR_BIT); ++i) -               { -                  charT c = static_cast<charT>(i); -                  if(&c != re_is_set_member(&c, &c + 1, static_cast<re_set_long<mask_type>*>(state), *m_pdata, m_icase)) -                     l_map[i] |= mask; -               } -            } -            else -               set_all_masks(l_map, mask); -         } -         return; -      case syntax_element_set: -         if(l_map) -         { -            l_map[0] |= mask_init; -            for(unsigned int i = 0; i < (1u << CHAR_BIT); ++i) -            { -               if(static_cast<re_set*>(state)->_map[ -                  static_cast<unsigned char>(m_traits.translate(static_cast<charT>(i), l_icase))]) -                  l_map[i] |= mask; -            } -         } -         return; -      case syntax_element_jump: -         // take the jump: -         state = static_cast<re_alt*>(state)->alt.p; -         not_last_jump = -1; -         break; -      case syntax_element_alt: -      case syntax_element_rep: -      case syntax_element_dot_rep: -      case syntax_element_char_rep: -      case syntax_element_short_set_rep: -      case syntax_element_long_set_rep: -         { -            re_alt* rep = static_cast<re_alt*>(state); -            if(rep->_map[0] & mask_init) -            { -               if(l_map) -               { -                  // copy previous results: -                  l_map[0] |= mask_init; -                  for(unsigned int i = 0; i <= UCHAR_MAX; ++i) -                  { -                     if(rep->_map[i] & mask_any) -                        l_map[i] |= mask; -                  } -               } -               if(pnull) -               { -                  if(rep->can_be_null & mask_any) -                     *pnull |= mask; -               } -            } -            else -            { -               // we haven't created a startmap for this alternative yet -               // so take the union of the two options: -               if(is_bad_repeat(state)) -               { -                  set_all_masks(l_map, mask); -                  if(pnull) -                     *pnull |= mask; -                  return; -               } -               set_bad_repeat(state); -               create_startmap(state->next.p, l_map, pnull, mask); -               if((state->type == syntax_element_alt) -                  || (static_cast<re_repeat*>(state)->min == 0) -                  || (not_last_jump == 0)) -                  create_startmap(rep->alt.p, l_map, pnull, mask); -            } -         } -         return; -      case syntax_element_soft_buffer_end: -         // match newline or null: -         if(l_map) -         { -            l_map[0] |= mask_init; -            l_map['\n'] |= mask; -            l_map['\r'] |= mask; -         } -         if(pnull) -            *pnull |= mask; -         return; -      case syntax_element_endmark: -         // need to handle independent subs as a special case: -         if(static_cast<re_brace*>(state)->index < 0) -         { -            // can be null, any character can match: -            set_all_masks(l_map, mask); -            if(pnull) -               *pnull |= mask; -            return; -         } -         else -         { -            state = state->next.p; -            break; -         } - -      case syntax_element_startmark: -         // need to handle independent subs as a special case: -         if(static_cast<re_brace*>(state)->index == -3) -         { -            state = state->next.p->next.p; -            break; -         } -         // otherwise fall through: -      default: -         state = state->next.p; -      } -      ++not_last_jump; -   } -} - -template <class charT, class traits> -unsigned basic_regex_creator<charT, traits>::get_restart_type(re_syntax_base* state) -{ -   // -   // find out how the machine starts, so we can optimise the search: -   // -   while(state) -   { -      switch(state->type) -      { -      case syntax_element_startmark: -      case syntax_element_endmark: -         state = state->next.p; -         continue; -      case syntax_element_start_line: -         return regbase::restart_line; -      case syntax_element_word_start: -         return regbase::restart_word; -      case syntax_element_buffer_start: -         return regbase::restart_buf; -      case syntax_element_restart_continue: -         return regbase::restart_continue; -      default: -         state = 0; -         continue; -      } -   } -   return regbase::restart_any; -} - -template <class charT, class traits> -void basic_regex_creator<charT, traits>::set_all_masks(unsigned char* bits, unsigned char mask) -{ -   // -   // set mask in all of bits elements,  -   // if bits[0] has mask_init not set then we can  -   // optimise this to a call to memset: -   // -   if(bits) -   { -      if(bits[0] == 0) -         (std::memset)(bits, mask, 1u << CHAR_BIT); -      else -      { -         for(unsigned i = 0; i < (1u << CHAR_BIT); ++i) -            bits[i] |= mask; -      } -      bits[0] |= mask_init; -   } -} - -template <class charT, class traits> -bool basic_regex_creator<charT, traits>::is_bad_repeat(re_syntax_base* pt) -{ -   switch(pt->type) -   { -   case syntax_element_rep: -   case syntax_element_dot_rep: -   case syntax_element_char_rep: -   case syntax_element_short_set_rep: -   case syntax_element_long_set_rep: -      { -         unsigned state_id = static_cast<re_repeat*>(pt)->state_id; -         if(state_id > sizeof(m_bad_repeats) * CHAR_BIT) -            return true;  // run out of bits, assume we can't traverse this one. -         static const boost::uintmax_t one = 1uL; -         return m_bad_repeats & (one << state_id); -      } -   default: -      return false; -   } -} - -template <class charT, class traits> -void basic_regex_creator<charT, traits>::set_bad_repeat(re_syntax_base* pt) -{ -   switch(pt->type) -   { -   case syntax_element_rep: -   case syntax_element_dot_rep: -   case syntax_element_char_rep: -   case syntax_element_short_set_rep: -   case syntax_element_long_set_rep: -      { -         unsigned state_id = static_cast<re_repeat*>(pt)->state_id; -         static const boost::uintmax_t one = 1uL; -         if(state_id <= sizeof(m_bad_repeats) * CHAR_BIT) -            m_bad_repeats |= (one << state_id); -      } -   default: -      break; -   } -} - -template <class charT, class traits> -syntax_element_type basic_regex_creator<charT, traits>::get_repeat_type(re_syntax_base* state) -{ -   typedef typename traits::char_class_type mask_type; -   if(state->type == syntax_element_rep) -   { -      // check to see if we are repeating a single state: -      if(state->next.p->next.p->next.p == static_cast<re_alt*>(state)->alt.p) -      { -         switch(state->next.p->type) -         { -         case re_detail::syntax_element_wild: -            return re_detail::syntax_element_dot_rep; -         case re_detail::syntax_element_literal: -            return re_detail::syntax_element_char_rep; -         case re_detail::syntax_element_set: -            return re_detail::syntax_element_short_set_rep; -         case re_detail::syntax_element_long_set: -            if(static_cast<re_detail::re_set_long<mask_type>*>(state->next.p)->singleton) -               return re_detail::syntax_element_long_set_rep; -            break; -         default: -            break; -         } -      } -   } -   return state->type; -} - -template <class charT, class traits> -void basic_regex_creator<charT, traits>::probe_leading_repeat(re_syntax_base* state) -{ -   // enumerate our states, and see if we have a leading repeat  -   // for which failed search restarts can be optimised; -   do -   { -      switch(state->type) -      { -      case syntax_element_startmark: -         if(static_cast<re_brace*>(state)->index >= 0) -         { -            state = state->next.p; -            continue; -         } -         if((static_cast<re_brace*>(state)->index == -1) -            || (static_cast<re_brace*>(state)->index == -2)) -         { -            // skip past the zero width assertion: -            state = static_cast<const re_jump*>(state->next.p)->alt.p->next.p; -            continue; -         } -         if(static_cast<re_brace*>(state)->index == -3) -         { -            // Have to skip the leading jump state: -            state = state->next.p->next.p; -            continue; -         } -         return; -      case syntax_element_endmark: -      case syntax_element_start_line: -      case syntax_element_end_line: -      case syntax_element_word_boundary: -      case syntax_element_within_word: -      case syntax_element_word_start: -      case syntax_element_word_end: -      case syntax_element_buffer_start: -      case syntax_element_buffer_end: -      case syntax_element_restart_continue: -         state = state->next.p; -         break; -      case syntax_element_dot_rep: -      case syntax_element_char_rep: -      case syntax_element_short_set_rep: -      case syntax_element_long_set_rep: -         if(this->m_has_backrefs == 0) -            static_cast<re_repeat*>(state)->leading = true; -         // fall through: -      default: -         return; -      } -   }while(state); -} - - -} // namespace re_detail - -} // namespace boost - -#ifdef BOOST_MSVC -#  pragma warning(pop) -#endif - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif diff --git a/3rdParty/Boost/boost/regex/v4/basic_regex_parser.hpp b/3rdParty/Boost/boost/regex/v4/basic_regex_parser.hpp deleted file mode 100644 index b8bc996..0000000 --- a/3rdParty/Boost/boost/regex/v4/basic_regex_parser.hpp +++ /dev/null @@ -1,2140 +0,0 @@ -/* - * - * Copyright (c) 2004 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ - - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         basic_regex_parser.cpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Declares template class basic_regex_parser. -  */ - -#ifndef BOOST_REGEX_V4_BASIC_REGEX_PARSER_HPP -#define BOOST_REGEX_V4_BASIC_REGEX_PARSER_HPP - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -namespace boost{ -namespace re_detail{ - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4244 4800) -#endif - -template <class charT, class traits> -class basic_regex_parser : public basic_regex_creator<charT, traits> -{ -public: -   basic_regex_parser(regex_data<charT, traits>* data); -   void parse(const charT* p1, const charT* p2, unsigned flags); -   void fail(regex_constants::error_type error_code, std::ptrdiff_t position); - -   bool parse_all(); -   bool parse_basic(); -   bool parse_extended(); -   bool parse_literal(); -   bool parse_open_paren(); -   bool parse_basic_escape(); -   bool parse_extended_escape(); -   bool parse_match_any(); -   bool parse_repeat(std::size_t low = 0, std::size_t high = (std::numeric_limits<std::size_t>::max)()); -   bool parse_repeat_range(bool isbasic); -   bool parse_alt(); -   bool parse_set(); -   bool parse_backref(); -   void parse_set_literal(basic_char_set<charT, traits>& char_set); -   bool parse_inner_set(basic_char_set<charT, traits>& char_set); -   bool parse_QE(); -   bool parse_perl_extension(); -   bool add_emacs_code(bool negate); -   bool unwind_alts(std::ptrdiff_t last_paren_start); -   digraph<charT> get_next_set_literal(basic_char_set<charT, traits>& char_set); -   charT unescape_character(); -   regex_constants::syntax_option_type parse_options(); - -private: -   typedef bool (basic_regex_parser::*parser_proc_type)(); -   typedef typename traits::string_type string_type; -   typedef typename traits::char_class_type char_class_type; -   parser_proc_type           m_parser_proc;    // the main parser to use -   const charT*               m_base;           // the start of the string being parsed -   const charT*               m_end;            // the end of the string being parsed -   const charT*               m_position;       // our current parser position -   unsigned                   m_mark_count;     // how many sub-expressions we have -   std::ptrdiff_t             m_paren_start;    // where the last seen ')' began (where repeats are inserted). -   std::ptrdiff_t             m_alt_insert_point; // where to insert the next alternative -   bool                       m_has_case_change; // true if somewhere in the current block the case has changed -#if defined(BOOST_MSVC) && defined(_M_IX86) -   // This is an ugly warning suppression workaround (for warnings *inside* std::vector -   // that can not otherwise be suppressed)... -   BOOST_STATIC_ASSERT(sizeof(long) >= sizeof(void*)); -   std::vector<long>           m_alt_jumps;      // list of alternative in the current scope. -#else -   std::vector<std::ptrdiff_t> m_alt_jumps;      // list of alternative in the current scope. -#endif - -   basic_regex_parser& operator=(const basic_regex_parser&); -   basic_regex_parser(const basic_regex_parser&); -}; - -template <class charT, class traits> -basic_regex_parser<charT, traits>::basic_regex_parser(regex_data<charT, traits>* data) -   : basic_regex_creator<charT, traits>(data), m_mark_count(0), m_paren_start(0), m_alt_insert_point(0), m_has_case_change(false) -{ -} - -template <class charT, class traits> -void basic_regex_parser<charT, traits>::parse(const charT* p1, const charT* p2, unsigned l_flags) -{ -   // pass l_flags on to base class: -   this->init(l_flags); -   // set up pointers: -   m_position = m_base = p1; -   m_end = p2; -   // empty strings are errors: -   if((p1 == p2) &&  -      ( -         ((l_flags & regbase::main_option_type) != regbase::perl_syntax_group) -         || (l_flags & regbase::no_empty_expressions) -      ) -     ) -   { -      fail(regex_constants::error_empty, 0); -      return; -   } -   // select which parser to use: -   switch(l_flags & regbase::main_option_type) -   { -   case regbase::perl_syntax_group: -      m_parser_proc = &basic_regex_parser<charT, traits>::parse_extended; -      break; -   case regbase::basic_syntax_group: -      m_parser_proc = &basic_regex_parser<charT, traits>::parse_basic; -      break; -   case regbase::literal: -      m_parser_proc = &basic_regex_parser<charT, traits>::parse_literal; -      break; -   } - -   // parse all our characters: -   bool result = parse_all(); -   // -   // Unwind our alternatives: -   // -   unwind_alts(-1); -   // reset l_flags as a global scope (?imsx) may have altered them: -   this->flags(l_flags); -   // if we haven't gobbled up all the characters then we must -   // have had an unexpected ')' : -   if(!result) -   { -      fail(regex_constants::error_paren, ::boost::re_detail::distance(m_base, m_position)); -      return; -   } -   // if an error has been set then give up now: -   if(this->m_pdata->m_status) -      return; -   // fill in our sub-expression count: -   this->m_pdata->m_mark_count = 1 + m_mark_count; -   this->finalize(p1, p2); -} - -template <class charT, class traits> -void basic_regex_parser<charT, traits>::fail(regex_constants::error_type error_code, std::ptrdiff_t position) -{ -   if(0 == this->m_pdata->m_status) // update the error code if not already set -      this->m_pdata->m_status = error_code; -   m_position = m_end; // don't bother parsing anything else -   // get the error message: -   std::string message = this->m_pdata->m_ptraits->error_string(error_code); -   // and raise the exception, this will do nothing if exceptions are disabled: -#ifndef BOOST_NO_EXCEPTIONS -   if(0 == (this->flags() & regex_constants::no_except)) -   { -      boost::regex_error e(message, error_code, position); -      e.raise(); -   } -#else -   (void)position; // suppress warnings. -#endif -} - -template <class charT, class traits> -bool basic_regex_parser<charT, traits>::parse_all() -{ -   bool result = true; -   while(result && (m_position != m_end)) -   { -      result = (this->*m_parser_proc)(); -   } -   return result; -} - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4702) -#endif -template <class charT, class traits> -bool basic_regex_parser<charT, traits>::parse_basic() -{ -   switch(this->m_traits.syntax_type(*m_position)) -   { -   case regex_constants::syntax_escape: -      return parse_basic_escape(); -   case regex_constants::syntax_dot: -      return parse_match_any(); -   case regex_constants::syntax_caret: -      ++m_position; -      this->append_state(syntax_element_start_line); -      break; -   case regex_constants::syntax_dollar: -      ++m_position; -      this->append_state(syntax_element_end_line); -      break; -   case regex_constants::syntax_star: -      if(!(this->m_last_state) || (this->m_last_state->type == syntax_element_start_line)) -         return parse_literal(); -      else -      { -         ++m_position; -         return parse_repeat(); -      } -   case regex_constants::syntax_plus: -      if(!(this->m_last_state) || (this->m_last_state->type == syntax_element_start_line) || !(this->flags() & regbase::emacs_ex)) -         return parse_literal(); -      else -      { -         ++m_position; -         return parse_repeat(1); -      } -   case regex_constants::syntax_question: -      if(!(this->m_last_state) || (this->m_last_state->type == syntax_element_start_line) || !(this->flags() & regbase::emacs_ex)) -         return parse_literal(); -      else -      { -         ++m_position; -         return parse_repeat(0, 1); -      } -   case regex_constants::syntax_open_set: -      return parse_set(); -   case regex_constants::syntax_newline: -      if(this->flags() & regbase::newline_alt) -         return parse_alt(); -      else -         return parse_literal(); -   default: -      return parse_literal(); -   } -   return true; -} - -template <class charT, class traits> -bool basic_regex_parser<charT, traits>::parse_extended() -{ -   bool result = true; -   switch(this->m_traits.syntax_type(*m_position)) -   { -   case regex_constants::syntax_open_mark: -      return parse_open_paren(); -   case regex_constants::syntax_close_mark: -      return false; -   case regex_constants::syntax_escape: -      return parse_extended_escape(); -   case regex_constants::syntax_dot: -      return parse_match_any(); -   case regex_constants::syntax_caret: -      ++m_position; -      this->append_state( -         (this->flags() & regex_constants::no_mod_m ? syntax_element_buffer_start : syntax_element_start_line)); -      break; -   case regex_constants::syntax_dollar: -      ++m_position; -      this->append_state( -         (this->flags() & regex_constants::no_mod_m ? syntax_element_buffer_end : syntax_element_end_line)); -      break; -   case regex_constants::syntax_star: -      if(m_position == this->m_base) -      { -         fail(regex_constants::error_badrepeat, 0); -         return false; -      } -      ++m_position; -      return parse_repeat(); -   case regex_constants::syntax_question: -      if(m_position == this->m_base) -      { -         fail(regex_constants::error_badrepeat, 0); -         return false; -      } -      ++m_position; -      return parse_repeat(0,1); -   case regex_constants::syntax_plus: -      if(m_position == this->m_base) -      { -         fail(regex_constants::error_badrepeat, 0); -         return false; -      } -      ++m_position; -      return parse_repeat(1); -   case regex_constants::syntax_open_brace: -      ++m_position; -      return parse_repeat_range(false); -   case regex_constants::syntax_close_brace: -      fail(regex_constants::error_brace, this->m_position - this->m_end); -      return false; -   case regex_constants::syntax_or: -      return parse_alt(); -   case regex_constants::syntax_open_set: -      return parse_set(); -   case regex_constants::syntax_newline: -      if(this->flags() & regbase::newline_alt) -         return parse_alt(); -      else -         return parse_literal(); -   case regex_constants::syntax_hash: -      // -      // If we have a mod_x flag set, then skip until -      // we get to a newline character: -      // -      if((this->flags()  -         & (regbase::no_perl_ex|regbase::mod_x)) -         == regbase::mod_x) -      { -         while((m_position != m_end) && !is_separator(*m_position++)){} -         return true; -      } -      // Otherwise fall through: -   default: -      result = parse_literal(); -      break; -   } -   return result; -} -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -template <class charT, class traits> -bool basic_regex_parser<charT, traits>::parse_literal() -{ -   // append this as a literal provided it's not a space character -   // or the perl option regbase::mod_x is not set: -   if( -      ((this->flags()  -         & (regbase::main_option_type|regbase::mod_x|regbase::no_perl_ex))  -            != regbase::mod_x) -      || !this->m_traits.isctype(*m_position, this->m_mask_space)) -         this->append_literal(*m_position); -   ++m_position; -   return true; -} - -template <class charT, class traits> -bool basic_regex_parser<charT, traits>::parse_open_paren() -{ -   // -   // skip the '(' and error check: -   // -   if(++m_position == m_end) -   { -      fail(regex_constants::error_paren, m_position - m_base); -      return false; -   } -   // -   // begin by checking for a perl-style (?...) extension: -   // -   if( -         ((this->flags() & (regbase::main_option_type | regbase::no_perl_ex)) == 0) -         || ((this->flags() & (regbase::main_option_type | regbase::emacs_ex)) == (regbase::basic_syntax_group|regbase::emacs_ex)) -     ) -   { -      if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_question) -         return parse_perl_extension(); -   } -   // -   // update our mark count, and append the required state: -   // -   unsigned markid = 0; -   if(0 == (this->flags() & regbase::nosubs)) -   { -      markid = ++m_mark_count; -      if(this->flags() & regbase::save_subexpression_location) -         this->m_pdata->m_subs.push_back(std::pair<std::size_t, std::size_t>(std::distance(m_base, m_position) - 1, 0)); -   } -   re_brace* pb = static_cast<re_brace*>(this->append_state(syntax_element_startmark, sizeof(re_brace))); -   pb->index = markid; -   std::ptrdiff_t last_paren_start = this->getoffset(pb); -   // back up insertion point for alternations, and set new point: -   std::ptrdiff_t last_alt_point = m_alt_insert_point; -   this->m_pdata->m_data.align(); -   m_alt_insert_point = this->m_pdata->m_data.size(); -   // -   // back up the current flags in case we have a nested (?imsx) group: -   // -   regex_constants::syntax_option_type opts = this->flags(); -   bool old_case_change = m_has_case_change; -   m_has_case_change = false; // no changes to this scope as yet... -   // -   // now recursively add more states, this will terminate when we get to a -   // matching ')' : -   // -   parse_all(); -   // -   // Unwind pushed alternatives: -   // -   if(0 == unwind_alts(last_paren_start)) -      return false; -   // -   // restore flags: -   // -   if(m_has_case_change) -   { -      // the case has changed in one or more of the alternatives -      // within the scoped (...) block: we have to add a state -      // to reset the case sensitivity: -      static_cast<re_case*>( -         this->append_state(syntax_element_toggle_case, sizeof(re_case)) -         )->icase = opts & regbase::icase; -   } -   this->flags(opts); -   m_has_case_change = old_case_change; -   // -   // we either have a ')' or we have run out of characters prematurely: -   // -   if(m_position == m_end) -   { -      this->fail(regex_constants::error_paren, ::boost::re_detail::distance(m_base, m_end)); -      return false; -   } -   BOOST_ASSERT(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_close_mark); -   if(markid && (this->flags() & regbase::save_subexpression_location)) -      this->m_pdata->m_subs.at(markid - 1).second = std::distance(m_base, m_position); -   ++m_position; -   // -   // append closing parenthesis state: -   // -   pb = static_cast<re_brace*>(this->append_state(syntax_element_endmark, sizeof(re_brace))); -   pb->index = markid; -   this->m_paren_start = last_paren_start; -   // -   // restore the alternate insertion point: -   // -   this->m_alt_insert_point = last_alt_point; -   // -   // allow backrefs to this mark: -   // -   if((markid > 0) && (markid < sizeof(unsigned) * CHAR_BIT)) -      this->m_backrefs |= 1u << (markid - 1); - -   return true; -} - -template <class charT, class traits> -bool basic_regex_parser<charT, traits>::parse_basic_escape() -{ -   ++m_position; -   bool result = true; -   switch(this->m_traits.escape_syntax_type(*m_position)) -   { -   case regex_constants::syntax_open_mark: -      return parse_open_paren(); -   case regex_constants::syntax_close_mark: -      return false; -   case regex_constants::syntax_plus: -      if(this->flags() & regex_constants::bk_plus_qm) -      { -         ++m_position; -         return parse_repeat(1); -      } -      else -         return parse_literal(); -   case regex_constants::syntax_question: -      if(this->flags() & regex_constants::bk_plus_qm) -      { -         ++m_position; -         return parse_repeat(0, 1); -      } -      else -         return parse_literal(); -   case regex_constants::syntax_open_brace: -      if(this->flags() & regbase::no_intervals) -         return parse_literal(); -      ++m_position; -      return parse_repeat_range(true); -   case regex_constants::syntax_close_brace: -      if(this->flags() & regbase::no_intervals) -         return parse_literal(); -      fail(regex_constants::error_brace, this->m_position - this->m_base); -      return false; -   case regex_constants::syntax_or: -      if(this->flags() & regbase::bk_vbar) -         return parse_alt(); -      else -         result = parse_literal(); -      break; -   case regex_constants::syntax_digit: -      return parse_backref(); -   case regex_constants::escape_type_start_buffer: -      if(this->flags() & regbase::emacs_ex) -      { -         ++m_position; -         this->append_state(syntax_element_buffer_start); -      } -      else -         result = parse_literal(); -      break; -   case regex_constants::escape_type_end_buffer: -      if(this->flags() & regbase::emacs_ex) -      { -         ++m_position; -         this->append_state(syntax_element_buffer_end); -      } -      else -         result = parse_literal(); -      break; -   case regex_constants::escape_type_word_assert: -      if(this->flags() & regbase::emacs_ex) -      { -         ++m_position; -         this->append_state(syntax_element_word_boundary); -      } -      else -         result = parse_literal(); -      break; -   case regex_constants::escape_type_not_word_assert: -      if(this->flags() & regbase::emacs_ex) -      { -         ++m_position; -         this->append_state(syntax_element_within_word); -      } -      else -         result = parse_literal(); -      break; -   case regex_constants::escape_type_left_word: -      if(this->flags() & regbase::emacs_ex) -      { -         ++m_position; -         this->append_state(syntax_element_word_start); -      } -      else -         result = parse_literal(); -      break; -   case regex_constants::escape_type_right_word: -      if(this->flags() & regbase::emacs_ex) -      { -         ++m_position; -         this->append_state(syntax_element_word_end); -      } -      else -         result = parse_literal(); -      break; -   default: -      if(this->flags() & regbase::emacs_ex) -      { -         bool negate = true; -         switch(*m_position) -         { -         case 'w': -            negate = false; -            // fall through: -         case 'W': -            { -            basic_char_set<charT, traits> char_set; -            if(negate) -               char_set.negate(); -            char_set.add_class(this->m_word_mask); -            if(0 == this->append_set(char_set)) -            { -               fail(regex_constants::error_ctype, m_position - m_base); -               return false; -            } -            ++m_position; -            return true; -            } -         case 's': -            negate = false; -            // fall through: -         case 'S': -            return add_emacs_code(negate); -         case 'c': -         case 'C': -            // not supported yet: -            fail(regex_constants::error_escape, m_position - m_base); -            return false; -         default: -            break; -         } -      } -      result = parse_literal(); -      break; -   } -   return result; -} - -template <class charT, class traits> -bool basic_regex_parser<charT, traits>::parse_extended_escape() -{ -   ++m_position; -   bool negate = false; // in case this is a character class escape: \w \d etc -   switch(this->m_traits.escape_syntax_type(*m_position)) -   { -   case regex_constants::escape_type_not_class: -      negate = true; -      // fall through: -   case regex_constants::escape_type_class: -      { -         typedef typename traits::char_class_type mask_type; -         mask_type m = this->m_traits.lookup_classname(m_position, m_position+1); -         if(m != 0) -         { -            basic_char_set<charT, traits> char_set; -            if(negate) -               char_set.negate(); -            char_set.add_class(m); -            if(0 == this->append_set(char_set)) -            { -               fail(regex_constants::error_ctype, m_position - m_base); -               return false; -            } -            ++m_position; -            return true; -         } -         // -         // not a class, just a regular unknown escape: -         // -         this->append_literal(unescape_character()); -         break; -      } -   case regex_constants::syntax_digit: -      return parse_backref(); -   case regex_constants::escape_type_left_word: -      ++m_position; -      this->append_state(syntax_element_word_start); -      break; -   case regex_constants::escape_type_right_word: -      ++m_position; -      this->append_state(syntax_element_word_end); -      break; -   case regex_constants::escape_type_start_buffer: -      ++m_position; -      this->append_state(syntax_element_buffer_start); -      break; -   case regex_constants::escape_type_end_buffer: -      ++m_position; -      this->append_state(syntax_element_buffer_end); -      break; -   case regex_constants::escape_type_word_assert: -      ++m_position; -      this->append_state(syntax_element_word_boundary); -      break; -   case regex_constants::escape_type_not_word_assert: -      ++m_position; -      this->append_state(syntax_element_within_word); -      break; -   case regex_constants::escape_type_Z: -      ++m_position; -      this->append_state(syntax_element_soft_buffer_end); -      break; -   case regex_constants::escape_type_Q: -      return parse_QE(); -   case regex_constants::escape_type_C: -      return parse_match_any(); -   case regex_constants::escape_type_X: -      ++m_position; -      this->append_state(syntax_element_combining); -      break; -   case regex_constants::escape_type_G: -      ++m_position; -      this->append_state(syntax_element_restart_continue); -      break; -   case regex_constants::escape_type_not_property: -      negate = true; -      // fall through: -   case regex_constants::escape_type_property: -      { -         ++m_position; -         char_class_type m; -         if(m_position == m_end) -         { -            fail(regex_constants::error_escape, m_position - m_base); -            return false; -         } -         // maybe have \p{ddd} -         if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_open_brace) -         { -            const charT* base = m_position; -            // skip forward until we find enclosing brace: -            while((m_position != m_end) && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_brace)) -               ++m_position; -            if(m_position == m_end) -            { -               fail(regex_constants::error_escape, m_position - m_base); -               return false; -            } -            m = this->m_traits.lookup_classname(++base, m_position++); -         } -         else -         { -            m = this->m_traits.lookup_classname(m_position, m_position+1); -            ++m_position; -         } -         if(m != 0) -         { -            basic_char_set<charT, traits> char_set; -            if(negate) -               char_set.negate(); -            char_set.add_class(m); -            if(0 == this->append_set(char_set)) -            { -               fail(regex_constants::error_ctype, m_position - m_base); -               return false; -            } -            return true; -         } -         fail(regex_constants::error_ctype, m_position - m_base); -      } -   default: -      this->append_literal(unescape_character()); -      break; -   } -   return true; -} - -template <class charT, class traits> -bool basic_regex_parser<charT, traits>::parse_match_any() -{ -   // -   // we have a '.' that can match any character: -   // -   ++m_position; -   static_cast<re_dot*>( -      this->append_state(syntax_element_wild, sizeof(re_dot)) -      )->mask = static_cast<unsigned char>(this->flags() & regbase::no_mod_s  -      ? re_detail::force_not_newline  -         : this->flags() & regbase::mod_s ? -            re_detail::force_newline : re_detail::dont_care); -   return true; -} - -template <class charT, class traits> -bool basic_regex_parser<charT, traits>::parse_repeat(std::size_t low, std::size_t high) -{ -   bool greedy = true; -   std::size_t insert_point; -   //  -   // when we get to here we may have a non-greedy ? mark still to come: -   // -   if((m_position != m_end)  -      && ( -            (0 == (this->flags() & (regbase::main_option_type | regbase::no_perl_ex))) -            || ((regbase::basic_syntax_group|regbase::emacs_ex) == (this->flags() & (regbase::main_option_type | regbase::emacs_ex))) -         ) -      ) -   { -      // OK we have a perl regex, check for a '?': -      if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_question) -      { -         greedy = false; -         ++m_position; -      } -   } -   if(0 == this->m_last_state) -   { -      fail(regex_constants::error_badrepeat, ::boost::re_detail::distance(m_base, m_position)); -      return false; -   } -   if(this->m_last_state->type == syntax_element_endmark) -   { -      // insert a repeat before the '(' matching the last ')': -      insert_point = this->m_paren_start; -   } -   else if((this->m_last_state->type == syntax_element_literal) && (static_cast<re_literal*>(this->m_last_state)->length > 1)) -   { -      // the last state was a literal with more than one character, split it in two: -      re_literal* lit = static_cast<re_literal*>(this->m_last_state); -      charT c = (static_cast<charT*>(static_cast<void*>(lit+1)))[lit->length - 1]; -      --(lit->length); -      // now append new state: -      lit = static_cast<re_literal*>(this->append_state(syntax_element_literal, sizeof(re_literal) + sizeof(charT))); -      lit->length = 1; -      (static_cast<charT*>(static_cast<void*>(lit+1)))[0] = c; -      insert_point = this->getoffset(this->m_last_state); -   } -   else -   { -      // repeat the last state whatever it was, need to add some error checking here: -      switch(this->m_last_state->type) -      { -      case syntax_element_start_line: -      case syntax_element_end_line: -      case syntax_element_word_boundary: -      case syntax_element_within_word: -      case syntax_element_word_start: -      case syntax_element_word_end: -      case syntax_element_buffer_start: -      case syntax_element_buffer_end: -      case syntax_element_alt: -      case syntax_element_soft_buffer_end: -      case syntax_element_restart_continue: -      case syntax_element_jump: -      case syntax_element_startmark: -      case syntax_element_backstep: -         // can't legally repeat any of the above: -         fail(regex_constants::error_badrepeat, m_position - m_base); -         return false; -      default: -         // do nothing... -         break; -      } -      insert_point = this->getoffset(this->m_last_state); -   } -   // -   // OK we now know what to repeat, so insert the repeat around it: -   // -   re_repeat* rep = static_cast<re_repeat*>(this->insert_state(insert_point, syntax_element_rep, re_repeater_size)); -   rep->min = low; -   rep->max = high; -   rep->greedy = greedy; -   rep->leading = false; -   // store our repeater position for later: -   std::ptrdiff_t rep_off = this->getoffset(rep); -   // and append a back jump to the repeat: -   re_jump* jmp = static_cast<re_jump*>(this->append_state(syntax_element_jump, sizeof(re_jump))); -   jmp->alt.i = rep_off - this->getoffset(jmp); -   this->m_pdata->m_data.align(); -   // now fill in the alt jump for the repeat: -   rep = static_cast<re_repeat*>(this->getaddress(rep_off)); -   rep->alt.i = this->m_pdata->m_data.size() - rep_off; -   return true; -} - -template <class charT, class traits> -bool basic_regex_parser<charT, traits>::parse_repeat_range(bool isbasic) -{ -   // -   // parse a repeat-range: -   // -   std::size_t min, max; -   int v; -   // skip whitespace: -   while((m_position != m_end) && this->m_traits.isctype(*m_position, this->m_mask_space)) -      ++m_position; -   // fail if at end: -   if(this->m_position == this->m_end) -   { -      fail(regex_constants::error_brace, this->m_position - this->m_base); -      return false; -   } -   // get min: -   v = this->m_traits.toi(m_position, m_end, 10); -   // skip whitespace: -   while((m_position != m_end) && this->m_traits.isctype(*m_position, this->m_mask_space)) -      ++m_position; -   if(v < 0) -   { -      fail(regex_constants::error_badbrace, this->m_position - this->m_base); -      return false; -   } -   else if(this->m_position == this->m_end) -   { -      fail(regex_constants::error_brace, this->m_position - this->m_base); -      return false; -   } -   min = v; -   // see if we have a comma: -   if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_comma) -   { -      // move on and error check: -      ++m_position; -      // skip whitespace: -      while((m_position != m_end) && this->m_traits.isctype(*m_position, this->m_mask_space)) -         ++m_position; -      if(this->m_position == this->m_end) -      { -         fail(regex_constants::error_brace, this->m_position - this->m_base); -         return false; -      } -      // get the value if any: -      v = this->m_traits.toi(m_position, m_end, 10); -      max = (v >= 0) ? v : (std::numeric_limits<std::size_t>::max)(); -   } -   else -   { -      // no comma, max = min: -      max = min; -   } -   // skip whitespace: -   while((m_position != m_end) && this->m_traits.isctype(*m_position, this->m_mask_space)) -      ++m_position; -   // OK now check trailing }: -   if(this->m_position == this->m_end) -   { -      fail(regex_constants::error_brace, this->m_position - this->m_base); -      return false; -   } -   if(isbasic) -   { -      if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_escape) -      { -         ++m_position; -         if(this->m_position == this->m_end) -         { -            fail(regex_constants::error_brace, this->m_position - this->m_base); -            return false; -         } -      } -      else -      { -         fail(regex_constants::error_badbrace, this->m_position - this->m_base); -         return false; -      } -   } -   if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_close_brace) -      ++m_position; -   else -   { -      fail(regex_constants::error_badbrace, this->m_position - this->m_base); -      return false; -   } -   // -   // finally go and add the repeat, unless error: -   // -   if(min > max) -   { -      fail(regex_constants::error_badbrace, this->m_position - this->m_base); -      return false; -   } -   return parse_repeat(min, max); -} - -template <class charT, class traits> -bool basic_regex_parser<charT, traits>::parse_alt() -{ -   // -   // error check: if there have been no previous states, -   // or if the last state was a '(' then error: -   // -   if( -      ((this->m_last_state == 0) || (this->m_last_state->type == syntax_element_startmark)) -      && -      !( -         ((this->flags() & regbase::main_option_type) == regbase::perl_syntax_group) -           && -         ((this->flags() & regbase::no_empty_expressions) == 0) -        ) -      ) -   { -      fail(regex_constants::error_empty, this->m_position - this->m_base); -      return false; -   } -   ++m_position; -   // -   // we need to append a trailing jump:  -   // -   re_syntax_base* pj = this->append_state(re_detail::syntax_element_jump, sizeof(re_jump)); -   std::ptrdiff_t jump_offset = this->getoffset(pj); -   // -   // now insert the alternative: -   // -   re_alt* palt = static_cast<re_alt*>(this->insert_state(this->m_alt_insert_point, syntax_element_alt, re_alt_size)); -   jump_offset += re_alt_size; -   this->m_pdata->m_data.align(); -   palt->alt.i = this->m_pdata->m_data.size() - this->getoffset(palt); -   // -   // update m_alt_insert_point so that the next alternate gets -   // inserted at the start of the second of the two we've just created: -   // -   this->m_alt_insert_point = this->m_pdata->m_data.size(); -   // -   // the start of this alternative must have a case changes state -   // if the current block has messed around with case changes: -   // -   if(m_has_case_change) -   { -      static_cast<re_case*>( -         this->append_state(syntax_element_toggle_case, sizeof(re_case)) -         )->icase = this->m_icase; -   } -   // -   // push the alternative onto our stack, a recursive -   // implementation here is easier to understand (and faster -   // as it happens), but causes all kinds of stack overflow problems -   // on programs with small stacks (COM+). -   // -   m_alt_jumps.push_back(jump_offset); -   return true; -} - -template <class charT, class traits> -bool basic_regex_parser<charT, traits>::parse_set() -{ -   ++m_position; -   if(m_position == m_end) -   { -      fail(regex_constants::error_brack, m_position - m_base); -      return false; -   } -   basic_char_set<charT, traits> char_set; - -   const charT* base = m_position;  // where the '[' was -   const charT* item_base = m_position;  // where the '[' or '^' was - -   while(m_position != m_end) -   { -      switch(this->m_traits.syntax_type(*m_position)) -      { -      case regex_constants::syntax_caret: -         if(m_position == base) -         { -            char_set.negate(); -            ++m_position; -            item_base = m_position; -         } -         else -            parse_set_literal(char_set); -         break; -      case regex_constants::syntax_close_set: -         if(m_position == item_base) -         { -            parse_set_literal(char_set); -            break; -         } -         else -         { -            ++m_position; -            if(0 == this->append_set(char_set)) -            { -               fail(regex_constants::error_range, m_position - m_base); -               return false; -            } -         } -         return true; -      case regex_constants::syntax_open_set: -         if(parse_inner_set(char_set)) -            break; -         return true; -      case regex_constants::syntax_escape: -         { -            //  -            // look ahead and see if this is a character class shortcut -            // \d \w \s etc... -            // -            ++m_position; -            if(this->m_traits.escape_syntax_type(*m_position) -               == regex_constants::escape_type_class) -            { -               char_class_type m = this->m_traits.lookup_classname(m_position, m_position+1); -               if(m != 0) -               { -                  char_set.add_class(m); -                  ++m_position; -                  break; -               } -            } -            else if(this->m_traits.escape_syntax_type(*m_position) -               == regex_constants::escape_type_not_class) -            { -               // negated character class: -               char_class_type m = this->m_traits.lookup_classname(m_position, m_position+1); -               if(m != 0) -               { -                  char_set.add_negated_class(m); -                  ++m_position; -                  break; -               } -            } -            // not a character class, just a regular escape: -            --m_position; -            parse_set_literal(char_set); -            break; -         } -      default: -         parse_set_literal(char_set); -         break; -      } -   } -   return m_position != m_end; -} - -template <class charT, class traits> -bool basic_regex_parser<charT, traits>::parse_inner_set(basic_char_set<charT, traits>& char_set) -{ -   // -   // we have either a character class [:name:] -   // a collating element [.name.] -   // or an equivalence class [=name=] -   // -   if(m_end == ++m_position) -   { -      fail(regex_constants::error_brack, m_position - m_base); -      return false; -   } -   switch(this->m_traits.syntax_type(*m_position)) -   { -   case regex_constants::syntax_dot: -      // -      // a collating element is treated as a literal: -      // -      --m_position; -      parse_set_literal(char_set); -      return true; -   case regex_constants::syntax_colon: -      { -      // check that character classes are actually enabled: -      if((this->flags() & (regbase::main_option_type | regbase::no_char_classes))  -         == (regbase::basic_syntax_group  | regbase::no_char_classes)) -      { -         --m_position; -         parse_set_literal(char_set); -         return true; -      } -      // skip the ':' -      if(m_end == ++m_position) -      { -         fail(regex_constants::error_brack, m_position - m_base); -         return false; -      } -      const charT* name_first = m_position; -      // skip at least one character, then find the matching ':]' -      if(m_end == ++m_position) -      { -         fail(regex_constants::error_brack, m_position - m_base); -         return false; -      } -      while((m_position != m_end)  -         && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_colon))  -         ++m_position; -      const charT* name_last = m_position; -      if(m_end == m_position) -      { -         fail(regex_constants::error_brack, m_position - m_base); -         return false; -      } -      if((m_end == ++m_position)  -         || (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_set)) -      { -         fail(regex_constants::error_brack, m_position - m_base); -         return false; -      } -      // -      // check for negated class: -      // -      bool negated = false; -      if(this->m_traits.syntax_type(*name_first) == regex_constants::syntax_caret) -      { -         ++name_first; -         negated = true; -      } -      typedef typename traits::char_class_type mask_type; -      mask_type m = this->m_traits.lookup_classname(name_first, name_last); -      if(m == 0) -      { -         if(char_set.empty() && (name_last - name_first == 1)) -         { -            // maybe a special case: -            ++m_position; -            if( (m_position != m_end)  -               && (this->m_traits.syntax_type(*m_position)  -                  == regex_constants::syntax_close_set)) -            { -               if(this->m_traits.escape_syntax_type(*name_first)  -                  == regex_constants::escape_type_left_word) -               { -                  ++m_position; -                  this->append_state(syntax_element_word_start); -                  return false; -               } -               if(this->m_traits.escape_syntax_type(*name_first)  -                  == regex_constants::escape_type_right_word) -               { -                  ++m_position; -                  this->append_state(syntax_element_word_end); -                  return false; -               } -            } -         } -         fail(regex_constants::error_ctype, name_first - m_base); -         return false; -      } -      if(negated == false) -         char_set.add_class(m); -      else -         char_set.add_negated_class(m); -      ++m_position; -      break; -   } -   case regex_constants::syntax_equal: -      { -      // skip the '=' -      if(m_end == ++m_position) -      { -         fail(regex_constants::error_brack, m_position - m_base); -         return false; -      } -      const charT* name_first = m_position; -      // skip at least one character, then find the matching '=]' -      if(m_end == ++m_position) -      { -         fail(regex_constants::error_brack, m_position - m_base); -         return false; -      } -      while((m_position != m_end)  -         && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_equal))  -         ++m_position; -      const charT* name_last = m_position; -      if(m_end == m_position) -      { -         fail(regex_constants::error_brack, m_position - m_base); -         return false; -      } -      if((m_end == ++m_position)  -         || (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_set)) -      { -         fail(regex_constants::error_brack, m_position - m_base); -         return false; -      } -      string_type m = this->m_traits.lookup_collatename(name_first, name_last); -      if((0 == m.size()) || (m.size() > 2)) -      { -         fail(regex_constants::error_collate, name_first - m_base); -         return false; -      } -      digraph<charT> d; -      d.first = m[0]; -      if(m.size() > 1) -         d.second = m[1]; -      else -         d.second = 0; -      char_set.add_equivalent(d); -      ++m_position; -      break; -   } -   default: -      --m_position; -      parse_set_literal(char_set); -      break; -   } -   return true; -} - -template <class charT, class traits> -void basic_regex_parser<charT, traits>::parse_set_literal(basic_char_set<charT, traits>& char_set) -{ -   digraph<charT> start_range(get_next_set_literal(char_set)); -   if(m_end == m_position) -   { -      fail(regex_constants::error_brack, m_position - m_base); -      return; -   } -   if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_dash) -   { -      // we have a range: -      if(m_end == ++m_position) -      { -         fail(regex_constants::error_brack, m_position - m_base); -         return; -      } -      if(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_set) -      { -         digraph<charT> end_range = get_next_set_literal(char_set); -         char_set.add_range(start_range, end_range); -         if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_dash) -         { -            if(m_end == ++m_position) -            { -               fail(regex_constants::error_brack, m_position - m_base); -               return; -            } -            if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_close_set) -            { -               // trailing - : -               --m_position; -               return; -            } -            fail(regex_constants::error_range, m_position - m_base); -            return; -         } -         return; -      } -      --m_position; -   } -   char_set.add_single(start_range); -} - -template <class charT, class traits> -digraph<charT> basic_regex_parser<charT, traits>::get_next_set_literal(basic_char_set<charT, traits>& char_set) -{ -   digraph<charT> result; -   switch(this->m_traits.syntax_type(*m_position)) -   { -   case regex_constants::syntax_dash: -      if(!char_set.empty()) -      { -         // see if we are at the end of the set: -         if((++m_position == m_end) || (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_set)) -         { -            fail(regex_constants::error_range, m_position - m_base); -            return result; -         } -         --m_position; -      } -      result.first = *m_position++; -      return result; -   case regex_constants::syntax_escape: -      // check to see if escapes are supported first: -      if(this->flags() & regex_constants::no_escape_in_lists) -      { -         result = *m_position++; -         break; -      } -      ++m_position; -      result = unescape_character(); -      break; -   case regex_constants::syntax_open_set: -   { -      if(m_end == ++m_position) -      { -         fail(regex_constants::error_collate, m_position - m_base); -         return result; -      } -      if(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_dot) -      { -         --m_position; -         result.first = *m_position; -         ++m_position; -         return result; -      } -      if(m_end == ++m_position) -      { -         fail(regex_constants::error_collate, m_position - m_base); -         return result; -      } -      const charT* name_first = m_position; -      // skip at least one character, then find the matching ':]' -      if(m_end == ++m_position) -      { -         fail(regex_constants::error_collate, name_first - m_base); -         return result; -      } -      while((m_position != m_end)  -         && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_dot))  -         ++m_position; -      const charT* name_last = m_position; -      if(m_end == m_position) -      { -         fail(regex_constants::error_collate, name_first - m_base); -         return result; -      } -      if((m_end == ++m_position)  -         || (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_set)) -      { -         fail(regex_constants::error_collate, name_first - m_base); -         return result; -      } -      ++m_position; -      string_type s = this->m_traits.lookup_collatename(name_first, name_last); -      if(s.empty() || (s.size() > 2)) -      { -         fail(regex_constants::error_collate, name_first - m_base); -         return result; -      } -      result.first = s[0]; -      if(s.size() > 1) -         result.second = s[1]; -      else -         result.second = 0; -      return result; -   } -   default: -      result = *m_position++; -   } -   return result; -} - -// -// does a value fit in the specified charT type? -// -template <class charT> -bool valid_value(charT, int v, const mpl::true_&) -{ -   return (v >> (sizeof(charT) * CHAR_BIT)) == 0; -} -template <class charT> -bool valid_value(charT, int, const mpl::false_&) -{ -   return true; // v will alsways fit in a charT -} -template <class charT> -bool valid_value(charT c, int v) -{ -   return valid_value(c, v, mpl::bool_<(sizeof(charT) < sizeof(int))>()); -} - -template <class charT, class traits> -charT basic_regex_parser<charT, traits>::unescape_character() -{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4127) -#endif -   charT result(0); -   if(m_position == m_end) -   { -      fail(regex_constants::error_escape, m_position - m_base); -      return false; -   } -   switch(this->m_traits.escape_syntax_type(*m_position)) -   { -   case regex_constants::escape_type_control_a: -      result = charT('\a'); -      break; -   case regex_constants::escape_type_e: -      result = charT(27); -      break; -   case regex_constants::escape_type_control_f: -      result = charT('\f'); -      break; -   case regex_constants::escape_type_control_n: -      result = charT('\n'); -      break; -   case regex_constants::escape_type_control_r: -      result = charT('\r'); -      break; -   case regex_constants::escape_type_control_t: -      result = charT('\t'); -      break; -   case regex_constants::escape_type_control_v: -      result = charT('\v'); -      break; -   case regex_constants::escape_type_word_assert: -      result = charT('\b'); -      break; -   case regex_constants::escape_type_ascii_control: -      ++m_position; -      if(m_position == m_end) -      { -         fail(regex_constants::error_escape, m_position - m_base); -         return result; -      } -      /* -      if((*m_position < charT('@')) -            || (*m_position > charT(125)) ) -      { -         fail(regex_constants::error_escape, m_position - m_base); -         return result; -      } -      */ -      result = static_cast<charT>(*m_position % 32); -      break; -   case regex_constants::escape_type_hex: -      ++m_position; -      if(m_position == m_end) -      { -         fail(regex_constants::error_escape, m_position - m_base); -         return result; -      } -      // maybe have \x{ddd} -      if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_open_brace) -      { -         ++m_position; -         if(m_position == m_end) -         { -            fail(regex_constants::error_escape, m_position - m_base); -            return result; -         } -         int i = this->m_traits.toi(m_position, m_end, 16); -         if((m_position == m_end) -            || (i < 0) -            || ((std::numeric_limits<charT>::is_specialized) && (charT(i) > (std::numeric_limits<charT>::max)())) -            || (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_brace)) -         { -            fail(regex_constants::error_badbrace, m_position - m_base); -            return result; -         } -         ++m_position; -         result = charT(i); -      } -      else -      { -         std::ptrdiff_t len = (std::min)(static_cast<std::ptrdiff_t>(2), m_end - m_position); -         int i = this->m_traits.toi(m_position, m_position + len, 16); -         if((i < 0) -            || !valid_value(charT(0), i)) -         { -            fail(regex_constants::error_escape, m_position - m_base); -            return result; -         } -         result = charT(i); -      } -      return result; -   case regex_constants::syntax_digit: -      { -      // an octal escape sequence, the first character must be a zero -      // followed by up to 3 octal digits: -      std::ptrdiff_t len = (std::min)(::boost::re_detail::distance(m_position, m_end), static_cast<std::ptrdiff_t>(4)); -      const charT* bp = m_position; -      int val = this->m_traits.toi(bp, bp + 1, 8); -      if(val != 0) -      { -         // Oops not an octal escape after all: -         fail(regex_constants::error_escape, m_position - m_base); -         return result; -      } -      val = this->m_traits.toi(m_position, m_position + len, 8); -      if(val < 0)  -      { -         fail(regex_constants::error_escape, m_position - m_base); -         return result; -      } -      return static_cast<charT>(val); -      } -   case regex_constants::escape_type_named_char: -      { -         ++m_position; -         if(m_position == m_end) -         { -            fail(regex_constants::error_escape, m_position - m_base); -            return false; -         } -         // maybe have \N{name} -         if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_open_brace) -         { -            const charT* base = m_position; -            // skip forward until we find enclosing brace: -            while((m_position != m_end) && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_brace)) -               ++m_position; -            if(m_position == m_end) -            { -               fail(regex_constants::error_escape, m_position - m_base); -               return false; -            } -            string_type s = this->m_traits.lookup_collatename(++base, m_position++); -            if(s.empty()) -            { -               fail(regex_constants::error_collate, m_position - m_base); -               return false; -            } -            if(s.size() == 1) -            { -               return s[0]; -            } -         } -         // fall through is a failure: -         fail(regex_constants::error_escape, m_position - m_base); -         return false; -      } -   default: -      result = *m_position; -      break; -   } -   ++m_position; -   return result; -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} - -template <class charT, class traits> -bool basic_regex_parser<charT, traits>::parse_backref() -{ -   BOOST_ASSERT(m_position != m_end); -   const charT* pc = m_position; -   int i = this->m_traits.toi(pc, pc + 1, 10); -   if((i == 0) || (((this->flags() & regbase::main_option_type) == regbase::perl_syntax_group) && (this->flags() & regbase::no_bk_refs))) -   { -      // not a backref at all but an octal escape sequence: -      charT c = unescape_character(); -      this->append_literal(c); -   } -   else if((i > 0) && (this->m_backrefs & (1u << (i-1)))) -   { -      m_position = pc; -      re_brace* pb = static_cast<re_brace*>(this->append_state(syntax_element_backref, sizeof(re_brace))); -      pb->index = i; -   } -   else -   { -      fail(regex_constants::error_backref, m_position - m_end); -      return false; -   } -   return true; -} - -template <class charT, class traits> -bool basic_regex_parser<charT, traits>::parse_QE() -{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4127) -#endif -   // -   // parse a \Q...\E sequence: -   // -   ++m_position; // skip the Q -   const charT* start = m_position; -   const charT* end; -   do -   { -      while((m_position != m_end)  -         && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_escape)) -         ++m_position; -      if(m_position == m_end) -      { -         //  a \Q...\E sequence may terminate with the end of the expression: -         end = m_position; -         break;   -      } -      if(++m_position == m_end) // skip the escape -      { -         fail(regex_constants::error_escape, m_position - m_base); -         return false; -      } -      // check to see if it's a \E: -      if(this->m_traits.escape_syntax_type(*m_position) == regex_constants::escape_type_E) -      { -         ++m_position; -         end = m_position - 2; -         break; -      } -      // otherwise go round again: -   }while(true); -   // -   // now add all the character between the two escapes as literals: -   // -   while(start != end) -   { -      this->append_literal(*start); -      ++start; -   } -   return true; -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} - -template <class charT, class traits> -bool basic_regex_parser<charT, traits>::parse_perl_extension() -{ -   if(++m_position == m_end) -   { -      fail(regex_constants::error_badrepeat, m_position - m_base); -      return false; -   } -   // -   // treat comments as a special case, as these -   // are the only ones that don't start with a leading -   // startmark state: -   // -   if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_hash) -   { -      while((m_position != m_end)  -         && (this->m_traits.syntax_type(*m_position++) != regex_constants::syntax_close_mark)) -      {}       -      return true; -   } -   // -   // backup some state, and prepare the way: -   // -   int markid = 0; -   std::ptrdiff_t jump_offset = 0; -   re_brace* pb = static_cast<re_brace*>(this->append_state(syntax_element_startmark, sizeof(re_brace))); -   std::ptrdiff_t last_paren_start = this->getoffset(pb); -   // back up insertion point for alternations, and set new point: -   std::ptrdiff_t last_alt_point = m_alt_insert_point; -   this->m_pdata->m_data.align(); -   m_alt_insert_point = this->m_pdata->m_data.size(); -   std::ptrdiff_t expected_alt_point = m_alt_insert_point; -   bool restore_flags = true; -   regex_constants::syntax_option_type old_flags = this->flags(); -   bool old_case_change = m_has_case_change; -   m_has_case_change = false; -   // -   // select the actual extension used: -   // -   switch(this->m_traits.syntax_type(*m_position)) -   { -   case regex_constants::syntax_colon: -      // -      // a non-capturing mark: -      // -      pb->index = markid = 0; -      ++m_position; -      break; -   case regex_constants::syntax_equal: -      pb->index = markid = -1; -      ++m_position; -      jump_offset = this->getoffset(this->append_state(syntax_element_jump, sizeof(re_jump))); -      this->m_pdata->m_data.align(); -      m_alt_insert_point = this->m_pdata->m_data.size(); -      break; -   case regex_constants::syntax_not: -      pb->index = markid = -2; -      ++m_position; -      jump_offset = this->getoffset(this->append_state(syntax_element_jump, sizeof(re_jump))); -      this->m_pdata->m_data.align(); -      m_alt_insert_point = this->m_pdata->m_data.size(); -      break; -   case regex_constants::escape_type_left_word: -      { -         // a lookbehind assertion: -         if(++m_position == m_end) -         { -            fail(regex_constants::error_badrepeat, m_position - m_base); -            return false; -         } -         regex_constants::syntax_type t = this->m_traits.syntax_type(*m_position); -         if(t == regex_constants::syntax_not) -            pb->index = markid = -2; -         else if(t == regex_constants::syntax_equal) -            pb->index = markid = -1; -         else -         { -            fail(regex_constants::error_badrepeat, m_position - m_base); -            return false; -         } -         ++m_position; -         jump_offset = this->getoffset(this->append_state(syntax_element_jump, sizeof(re_jump))); -         this->append_state(syntax_element_backstep, sizeof(re_brace)); -         this->m_pdata->m_data.align(); -         m_alt_insert_point = this->m_pdata->m_data.size(); -         break; -      } -   case regex_constants::escape_type_right_word: -      // -      // an independent sub-expression: -      // -      pb->index = markid = -3; -      ++m_position; -      jump_offset = this->getoffset(this->append_state(syntax_element_jump, sizeof(re_jump))); -      this->m_pdata->m_data.align(); -      m_alt_insert_point = this->m_pdata->m_data.size(); -      break; -   case regex_constants::syntax_open_mark: -      { -      // a conditional expression: -      pb->index = markid = -4; -      if(++m_position == m_end) -      { -         fail(regex_constants::error_badrepeat, m_position - m_base); -         return false; -      } -      int v = this->m_traits.toi(m_position, m_end, 10); -      if(v > 0) -      { -         re_brace* br = static_cast<re_brace*>(this->append_state(syntax_element_assert_backref, sizeof(re_brace))); -         br->index = v; -         if(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_mark) -         { -            fail(regex_constants::error_badrepeat, m_position - m_base); -            return false; -         } -         if(++m_position == m_end) -         { -            fail(regex_constants::error_badrepeat, m_position - m_base); -            return false; -         } -      } -      else -      { -         // verify that we have a lookahead or lookbehind assert: -         if(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_question) -         { -            fail(regex_constants::error_badrepeat, m_position - m_base); -            return false; -         } -         if(++m_position == m_end) -         { -            fail(regex_constants::error_badrepeat, m_position - m_base); -            return false; -         } -         if(this->m_traits.syntax_type(*m_position) == regex_constants::escape_type_left_word) -         { -            if(++m_position == m_end) -            { -               fail(regex_constants::error_badrepeat, m_position - m_base); -               return false; -            } -            if((this->m_traits.syntax_type(*m_position) != regex_constants::syntax_equal) -               && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_not)) -            { -               fail(regex_constants::error_badrepeat, m_position - m_base); -               return false; -            } -            m_position -= 3; -         } -         else -         { -            if((this->m_traits.syntax_type(*m_position) != regex_constants::syntax_equal) -               && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_not)) -            { -               fail(regex_constants::error_badrepeat, m_position - m_base); -               return false; -            } -            m_position -= 2; -         } -      } -      break; -      } -   case regex_constants::syntax_close_mark: -      fail(regex_constants::error_badrepeat, m_position - m_base); -      return false; -   default: -      // -      // lets assume that we have a (?imsx) group and try and parse it: -      // -      regex_constants::syntax_option_type opts = parse_options(); -      if(m_position == m_end) -         return false; -      // make a note of whether we have a case change: -      m_has_case_change = ((opts & regbase::icase) != (this->flags() & regbase::icase)); -      pb->index = markid = 0; -      if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_close_mark) -      { -         // update flags and carry on as normal: -         this->flags(opts); -         restore_flags = false; -         old_case_change |= m_has_case_change; // defer end of scope by one ')' -      } -      else if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_colon) -      { -         // update flags and carry on until the matching ')' is found: -         this->flags(opts); -         ++m_position; -      } -      else -      { -         fail(regex_constants::error_badrepeat, m_position - m_base); -         return false; -      } - -      // finally append a case change state if we need it: -      if(m_has_case_change) -      { -         static_cast<re_case*>( -            this->append_state(syntax_element_toggle_case, sizeof(re_case)) -            )->icase = opts & regbase::icase; -      } - -   } -   // -   // now recursively add more states, this will terminate when we get to a -   // matching ')' : -   // -   parse_all(); -   // -   // Unwind alternatives: -   // -   if(0 == unwind_alts(last_paren_start)) -      return false; -   // -   // we either have a ')' or we have run out of characters prematurely: -   // -   if(m_position == m_end) -   { -      this->fail(regex_constants::error_paren, ::boost::re_detail::distance(m_base, m_end)); -      return false; -   } -   BOOST_ASSERT(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_close_mark); -   ++m_position; -   // -   // restore the flags: -   // -   if(restore_flags) -   { -      // append a case change state if we need it: -      if(m_has_case_change) -      { -         static_cast<re_case*>( -            this->append_state(syntax_element_toggle_case, sizeof(re_case)) -            )->icase = old_flags & regbase::icase; -      } -      this->flags(old_flags); -   } -   // -   // set up the jump pointer if we have one: -   // -   if(jump_offset) -   { -      this->m_pdata->m_data.align(); -      re_jump* jmp = static_cast<re_jump*>(this->getaddress(jump_offset)); -      jmp->alt.i = this->m_pdata->m_data.size() - this->getoffset(jmp); -      if(this->m_last_state == jmp) -      { -         // Oops... we didn't have anything inside the assertion: -         fail(regex_constants::error_empty, m_position - m_base); -         return false; -      } -   } -   // -   // verify that if this is conditional expression, that we do have -   // an alternative, if not add one: -   // -   if(markid == -4) -   { -      re_syntax_base* b = this->getaddress(expected_alt_point); -      // Make sure we have exactly one alternative following this state: -      if(b->type != syntax_element_alt) -      { -         re_alt* alt = static_cast<re_alt*>(this->insert_state(expected_alt_point, syntax_element_alt, sizeof(re_alt))); -         alt->alt.i = this->m_pdata->m_data.size() - this->getoffset(alt); -      } -      else if(this->getaddress(static_cast<re_alt*>(b)->alt.i, b)->type == syntax_element_alt) -      { -         fail(regex_constants::error_bad_pattern, m_position - m_base); -         return false; -      } -      // check for invalid repetition of next state: -      b = this->getaddress(expected_alt_point); -      b = this->getaddress(static_cast<re_alt*>(b)->next.i, b); -      if((b->type != syntax_element_assert_backref) -         && (b->type != syntax_element_startmark)) -      { -         fail(regex_constants::error_badrepeat, m_position - m_base); -         return false; -      } -   } -   // -   // append closing parenthesis state: -   // -   pb = static_cast<re_brace*>(this->append_state(syntax_element_endmark, sizeof(re_brace))); -   pb->index = markid; -   this->m_paren_start = last_paren_start; -   // -   // restore the alternate insertion point: -   // -   this->m_alt_insert_point = last_alt_point; -   // -   // and the case change data: -   // -   m_has_case_change = old_case_change; -   return true; -} - -template <class charT, class traits> -bool basic_regex_parser<charT, traits>::add_emacs_code(bool negate) -{ -   // -   // parses an emacs style \sx or \Sx construct. -   // -   if(++m_position == m_end) -   { -      fail(regex_constants::error_escape, m_position - m_base); -      return false; -   } -   basic_char_set<charT, traits> char_set; -   if(negate) -      char_set.negate(); - -   static const charT s_punct[5] = { 'p', 'u', 'n', 'c', 't', }; - -   switch(*m_position) -   { -   case 's': -   case ' ': -      char_set.add_class(this->m_mask_space); -      break; -   case 'w': -      char_set.add_class(this->m_word_mask); -      break; -   case '_': -      char_set.add_single(digraph<charT>(charT('$')));  -      char_set.add_single(digraph<charT>(charT('&')));  -      char_set.add_single(digraph<charT>(charT('*')));  -      char_set.add_single(digraph<charT>(charT('+')));  -      char_set.add_single(digraph<charT>(charT('-')));  -      char_set.add_single(digraph<charT>(charT('_')));  -      char_set.add_single(digraph<charT>(charT('<')));  -      char_set.add_single(digraph<charT>(charT('>')));  -      break; -   case '.': -      char_set.add_class(this->m_traits.lookup_classname(s_punct, s_punct+5)); -      break; -   case '(': -      char_set.add_single(digraph<charT>(charT('(')));  -      char_set.add_single(digraph<charT>(charT('[')));  -      char_set.add_single(digraph<charT>(charT('{')));  -      break; -   case ')': -      char_set.add_single(digraph<charT>(charT(')')));  -      char_set.add_single(digraph<charT>(charT(']')));  -      char_set.add_single(digraph<charT>(charT('}')));  -      break; -   case '"': -      char_set.add_single(digraph<charT>(charT('"')));  -      char_set.add_single(digraph<charT>(charT('\'')));  -      char_set.add_single(digraph<charT>(charT('`')));  -      break; -   case '\'': -      char_set.add_single(digraph<charT>(charT('\'')));  -      char_set.add_single(digraph<charT>(charT(',')));  -      char_set.add_single(digraph<charT>(charT('#')));  -      break; -   case '<': -      char_set.add_single(digraph<charT>(charT(';')));  -      break; -   case '>': -      char_set.add_single(digraph<charT>(charT('\n')));  -      char_set.add_single(digraph<charT>(charT('\f')));  -      break; -   default: -      fail(regex_constants::error_ctype, m_position - m_base); -      return false; -   } -   if(0 == this->append_set(char_set)) -   { -      fail(regex_constants::error_ctype, m_position - m_base); -      return false; -   } -   ++m_position; -   return true; -} - -template <class charT, class traits> -regex_constants::syntax_option_type basic_regex_parser<charT, traits>::parse_options() -{ -   // we have a (?imsx-imsx) group, convert it into a set of flags: -   regex_constants::syntax_option_type f = this->flags(); -   bool breakout = false; -   do -   { -      switch(*m_position) -      { -      case 's': -         f |= regex_constants::mod_s; -         f &= ~regex_constants::no_mod_s; -         break; -      case 'm': -         f &= ~regex_constants::no_mod_m; -         break; -      case 'i': -         f |= regex_constants::icase; -         break; -      case 'x': -         f |= regex_constants::mod_x; -         break; -      default: -         breakout = true; -         continue; -      } -      if(++m_position == m_end) -      { -         fail(regex_constants::error_paren, m_position - m_base); -         return false; -      } -   } -   while(!breakout); - -   if(*m_position == static_cast<charT>('-')) -   { -      if(++m_position == m_end) -      { -         fail(regex_constants::error_paren, m_position - m_base); -         return false; -      } -      do -      { -         switch(*m_position) -         { -         case 's': -            f &= ~regex_constants::mod_s; -            f |= regex_constants::no_mod_s; -            break; -         case 'm': -            f |= regex_constants::no_mod_m; -            break; -         case 'i': -            f &= ~regex_constants::icase; -            break; -         case 'x': -            f &= ~regex_constants::mod_x; -            break; -         default: -            breakout = true; -            continue; -         } -         if(++m_position == m_end) -         { -            fail(regex_constants::error_paren, m_position - m_base); -            return false; -         } -      } -      while(!breakout); -   } -   return f; -} - -template <class charT, class traits> -bool basic_regex_parser<charT, traits>::unwind_alts(std::ptrdiff_t last_paren_start) -{ -   // -   // If we didn't actually add any states after the last  -   // alternative then that's an error: -   // -   if((this->m_alt_insert_point == static_cast<std::ptrdiff_t>(this->m_pdata->m_data.size())) -      && m_alt_jumps.size() && (m_alt_jumps.back() > last_paren_start) -      && -      !( -         ((this->flags() & regbase::main_option_type) == regbase::perl_syntax_group) -           && -         ((this->flags() & regbase::no_empty_expressions) == 0) -        ) -      ) -   { -      fail(regex_constants::error_empty, this->m_position - this->m_base); -      return false; -   } -   //  -   // Fix up our alternatives: -   // -   while(m_alt_jumps.size() && (m_alt_jumps.back() > last_paren_start)) -   { -      // -      // fix up the jump to point to the end of the states -      // that we've just added: -      // -      std::ptrdiff_t jump_offset = m_alt_jumps.back(); -      m_alt_jumps.pop_back(); -      this->m_pdata->m_data.align(); -      re_jump* jmp = static_cast<re_jump*>(this->getaddress(jump_offset)); -      BOOST_ASSERT(jmp->type == syntax_element_jump); -      jmp->alt.i = this->m_pdata->m_data.size() - jump_offset; -   } -   return true; -} - -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -} // namespace re_detail -} // namespace boost - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif diff --git a/3rdParty/Boost/boost/regex/v4/c_regex_traits.hpp b/3rdParty/Boost/boost/regex/v4/c_regex_traits.hpp deleted file mode 100644 index d99b0f3..0000000 --- a/3rdParty/Boost/boost/regex/v4/c_regex_traits.hpp +++ /dev/null @@ -1,211 +0,0 @@ -/* - * - * Copyright (c) 2004 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ -  - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         c_regex_traits.hpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Declares regular expression traits class that wraps the global C locale. -  */ - -#ifndef BOOST_C_REGEX_TRAITS_HPP_INCLUDED -#define BOOST_C_REGEX_TRAITS_HPP_INCLUDED - -#ifndef BOOST_REGEX_CONFIG_HPP -#include <boost/regex/config.hpp> -#endif -#ifndef BOOST_REGEX_WORKAROUND_HPP -#include <boost/regex/v4/regex_workaround.hpp> -#endif - -#include <cctype> - -#ifdef BOOST_NO_STDC_NAMESPACE -namespace std{ -   using ::strlen; using ::tolower; -} -#endif - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -namespace boost{ - -template <class charT> -struct c_regex_traits; - -template<> -struct BOOST_REGEX_DECL c_regex_traits<char> -{ -   c_regex_traits(){} -   typedef char char_type; -   typedef std::size_t size_type; -   typedef std::string string_type; -   struct locale_type{}; -   typedef boost::uint32_t char_class_type; - -   static size_type length(const char_type* p)  -   {  -      return (std::strlen)(p);  -   } - -   char translate(char c) const  -   {  -      return c;  -   } -   char translate_nocase(char c) const  -   {  -      return static_cast<char>((std::tolower)(static_cast<unsigned char>(c)));  -   } - -   static string_type BOOST_REGEX_CALL transform(const char* p1, const char* p2); -   static string_type BOOST_REGEX_CALL transform_primary(const char* p1, const char* p2); - -   static char_class_type BOOST_REGEX_CALL lookup_classname(const char* p1, const char* p2); -   static string_type BOOST_REGEX_CALL lookup_collatename(const char* p1, const char* p2); - -   static bool BOOST_REGEX_CALL isctype(char, char_class_type); -   static int BOOST_REGEX_CALL value(char, int); - -   locale_type imbue(locale_type l) -   { return l; } -   locale_type getloc()const -   { return locale_type(); } - -private: -   // this type is not copyable: -   c_regex_traits(const c_regex_traits&); -   c_regex_traits& operator=(const c_regex_traits&); -}; - -#ifndef BOOST_NO_WREGEX -template<> -struct BOOST_REGEX_DECL c_regex_traits<wchar_t> -{ -   c_regex_traits(){} -   typedef wchar_t char_type; -   typedef std::size_t size_type; -   typedef std::wstring string_type; -   struct locale_type{}; -   typedef boost::uint32_t char_class_type; - -   static size_type length(const char_type* p)  -   {  -      return (std::wcslen)(p);  -   } - -   wchar_t translate(wchar_t c) const  -   {  -      return c;  -   } -   wchar_t translate_nocase(wchar_t c) const  -   {  -      return (std::towlower)(c);  -   } - -   static string_type BOOST_REGEX_CALL transform(const wchar_t* p1, const wchar_t* p2); -   static string_type BOOST_REGEX_CALL transform_primary(const wchar_t* p1, const wchar_t* p2); - -   static char_class_type BOOST_REGEX_CALL lookup_classname(const wchar_t* p1, const wchar_t* p2); -   static string_type BOOST_REGEX_CALL lookup_collatename(const wchar_t* p1, const wchar_t* p2); - -   static bool BOOST_REGEX_CALL isctype(wchar_t, char_class_type); -   static int BOOST_REGEX_CALL value(wchar_t, int); - -   locale_type imbue(locale_type l) -   { return l; } -   locale_type getloc()const -   { return locale_type(); } - -private: -   // this type is not copyable: -   c_regex_traits(const c_regex_traits&); -   c_regex_traits& operator=(const c_regex_traits&); -}; - -#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T -// -// Provide an unsigned short version as well, so the user can link to this -// no matter whether they build with /Zc:wchar_t or not (MSVC specific). -// -template<> -struct BOOST_REGEX_DECL c_regex_traits<unsigned short> -{ -   c_regex_traits(){} -   typedef unsigned short char_type; -   typedef std::size_t size_type; -   typedef std::basic_string<unsigned short> string_type; -   struct locale_type{}; -   typedef boost::uint32_t char_class_type; - -   static size_type length(const char_type* p)  -   {  -      return (std::wcslen)((const wchar_t*)p);  -   } - -   unsigned short translate(unsigned short c) const  -   {  -      return c;  -   } -   unsigned short translate_nocase(unsigned short c) const  -   {  -      return (std::towlower)((wchar_t)c);  -   } - -   static string_type BOOST_REGEX_CALL transform(const unsigned short* p1, const unsigned short* p2); -   static string_type BOOST_REGEX_CALL transform_primary(const unsigned short* p1, const unsigned short* p2); - -   static char_class_type BOOST_REGEX_CALL lookup_classname(const unsigned short* p1, const unsigned short* p2); -   static string_type BOOST_REGEX_CALL lookup_collatename(const unsigned short* p1, const unsigned short* p2); - -   static bool BOOST_REGEX_CALL isctype(unsigned short, char_class_type); -   static int BOOST_REGEX_CALL value(unsigned short, int); - -   locale_type imbue(locale_type l) -   { return l; } -   locale_type getloc()const -   { return locale_type(); } - -private: -   // this type is not copyable: -   c_regex_traits(const c_regex_traits&); -   c_regex_traits& operator=(const c_regex_traits&); -}; - -#endif - -#endif // BOOST_NO_WREGEX - -} - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif - - - diff --git a/3rdParty/Boost/boost/regex/v4/char_regex_traits.hpp b/3rdParty/Boost/boost/regex/v4/char_regex_traits.hpp deleted file mode 100644 index e8a501c..0000000 --- a/3rdParty/Boost/boost/regex/v4/char_regex_traits.hpp +++ /dev/null @@ -1,81 +0,0 @@ -/* - * - * Copyright (c) 2002 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ - - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         char_regex_traits.cpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Declares deprecated traits classes char_regex_traits<>. -  */ - - -#ifndef BOOST_REGEX_V4_CHAR_REGEX_TRAITS_HPP -#define BOOST_REGEX_V4_CHAR_REGEX_TRAITS_HPP - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -namespace boost{ - -namespace deprecated{ -// -// class char_regex_traits_i -// provides case insensitive traits classes (deprecated): -template <class charT> -class char_regex_traits_i : public regex_traits<charT> {}; - -template<> -class char_regex_traits_i<char> : public regex_traits<char> -{ -public: -   typedef char char_type; -   typedef unsigned char uchar_type; -   typedef unsigned int size_type; -   typedef regex_traits<char> base_type; - -}; - -#ifndef BOOST_NO_WREGEX -template<> -class char_regex_traits_i<wchar_t> : public regex_traits<wchar_t> -{ -public: -   typedef wchar_t char_type; -   typedef unsigned short uchar_type; -   typedef unsigned int size_type; -   typedef regex_traits<wchar_t> base_type; - -}; -#endif -} // namespace deprecated -} // namespace boost - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif // include - diff --git a/3rdParty/Boost/boost/regex/v4/cpp_regex_traits.hpp b/3rdParty/Boost/boost/regex/v4/cpp_regex_traits.hpp deleted file mode 100644 index 89fe49d..0000000 --- a/3rdParty/Boost/boost/regex/v4/cpp_regex_traits.hpp +++ /dev/null @@ -1,1062 +0,0 @@ -/* - * - * Copyright (c) 2004 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ -  - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         cpp_regex_traits.hpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Declares regular expression traits class cpp_regex_traits. -  */ - -#ifndef BOOST_CPP_REGEX_TRAITS_HPP_INCLUDED -#define BOOST_CPP_REGEX_TRAITS_HPP_INCLUDED - -#include <boost/config.hpp> - -#ifndef BOOST_NO_STD_LOCALE - -#ifndef BOOST_RE_PAT_EXCEPT_HPP -#include <boost/regex/pattern_except.hpp> -#endif -#ifndef BOOST_REGEX_TRAITS_DEFAULTS_HPP_INCLUDED -#include <boost/regex/v4/regex_traits_defaults.hpp> -#endif -#ifdef BOOST_HAS_THREADS -#include <boost/regex/pending/static_mutex.hpp> -#endif -#ifndef BOOST_REGEX_PRIMARY_TRANSFORM -#include <boost/regex/v4/primary_transform.hpp> -#endif -#ifndef BOOST_REGEX_OBJECT_CACHE_HPP -#include <boost/regex/pending/object_cache.hpp> -#endif - -#include <istream> -#include <ios> -#include <climits> - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4786) -#endif - -namespace boost{  - -// -// forward declaration is needed by some compilers: -// -template <class charT> -class cpp_regex_traits; -    -namespace re_detail{ - -// -// class parser_buf: -// acts as a stream buffer which wraps around a pair of pointers: -// -template <class charT, -          class traits = ::std::char_traits<charT> > -class parser_buf : public ::std::basic_streambuf<charT, traits> -{ -   typedef ::std::basic_streambuf<charT, traits> base_type; -   typedef typename base_type::int_type int_type; -   typedef typename base_type::char_type char_type; -   typedef typename base_type::pos_type pos_type; -   typedef ::std::streamsize streamsize; -   typedef typename base_type::off_type off_type; -public: -   parser_buf() : base_type() { setbuf(0, 0); } -   const charT* getnext() { return this->gptr(); } -protected: -   std::basic_streambuf<charT, traits>* setbuf(char_type* s, streamsize n); -   typename parser_buf<charT, traits>::pos_type seekpos(pos_type sp, ::std::ios_base::openmode which); -   typename parser_buf<charT, traits>::pos_type seekoff(off_type off, ::std::ios_base::seekdir way, ::std::ios_base::openmode which); -private: -   parser_buf& operator=(const parser_buf&); -   parser_buf(const parser_buf&); -}; - -template<class charT, class traits> -std::basic_streambuf<charT, traits>* -parser_buf<charT, traits>::setbuf(char_type* s, streamsize n) -{ -   this->setg(s, s, s + n); -   return this; -} - -template<class charT, class traits> -typename parser_buf<charT, traits>::pos_type -parser_buf<charT, traits>::seekoff(off_type off, ::std::ios_base::seekdir way, ::std::ios_base::openmode which) -{ -   if(which & ::std::ios_base::out) -      return pos_type(off_type(-1)); -   std::ptrdiff_t size = this->egptr() - this->eback(); -   std::ptrdiff_t pos = this->gptr() - this->eback(); -   charT* g = this->eback(); -   switch(way) -   { -   case ::std::ios_base::beg: -      if((off < 0) || (off > size)) -         return pos_type(off_type(-1)); -      else -         this->setg(g, g + off, g + size); -      break; -   case ::std::ios_base::end: -      if((off < 0) || (off > size)) -         return pos_type(off_type(-1)); -      else -         this->setg(g, g + size - off, g + size); -      break; -   case ::std::ios_base::cur: -   { -      std::ptrdiff_t newpos = static_cast<std::ptrdiff_t>(pos + off); -      if((newpos < 0) || (newpos > size)) -         return pos_type(off_type(-1)); -      else -         this->setg(g, g + newpos, g + size); -      break; -   } -   default: ; -   } -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4244) -#endif -   return static_cast<pos_type>(this->gptr() - this->eback()); -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} - -template<class charT, class traits> -typename parser_buf<charT, traits>::pos_type -parser_buf<charT, traits>::seekpos(pos_type sp, ::std::ios_base::openmode which) -{ -   if(which & ::std::ios_base::out) -      return pos_type(off_type(-1)); -   off_type size = static_cast<off_type>(this->egptr() - this->eback()); -   charT* g = this->eback(); -   if(off_type(sp) <= size) -   { -      this->setg(g, g + off_type(sp), g + size); -   } -   return pos_type(off_type(-1)); -} - -// -// class cpp_regex_traits_base: -// acts as a container for locale and the facets we are using. -// -template <class charT> -struct cpp_regex_traits_base -{ -   cpp_regex_traits_base(const std::locale& l) -   { imbue(l); } -   std::locale imbue(const std::locale& l); - -   std::locale m_locale; -   std::ctype<charT> const* m_pctype; -#ifndef BOOST_NO_STD_MESSAGES -   std::messages<charT> const* m_pmessages; -#endif -   std::collate<charT> const* m_pcollate; - -   bool operator<(const cpp_regex_traits_base& b)const -   { -      if(m_pctype == b.m_pctype) -      { -#ifndef BOOST_NO_STD_MESSAGES -         if(m_pmessages == b.m_pmessages) -         { -         } -         return m_pmessages < b.m_pmessages; -#else -         return m_pcollate < b.m_pcollate; -#endif -      } -      return m_pctype < b.m_pctype; -   } -   bool operator==(const cpp_regex_traits_base& b)const -   { -      return (m_pctype == b.m_pctype)  -#ifndef BOOST_NO_STD_MESSAGES -         && (m_pmessages == b.m_pmessages)  -#endif -         && (m_pcollate == b.m_pcollate); -   } -}; - -template <class charT> -std::locale cpp_regex_traits_base<charT>::imbue(const std::locale& l) -{ -   std::locale result(m_locale); -   m_locale = l; -   m_pctype = &BOOST_USE_FACET(std::ctype<charT>, l); -#ifndef BOOST_NO_STD_MESSAGES -   m_pmessages = &BOOST_USE_FACET(std::messages<charT>, l); -#endif -   m_pcollate = &BOOST_USE_FACET(std::collate<charT>, l); -   return result; -} - -// -// class cpp_regex_traits_char_layer: -// implements methods that require specialisation for narrow characters: -// -template <class charT> -class cpp_regex_traits_char_layer : public cpp_regex_traits_base<charT> -{ -   typedef std::basic_string<charT> string_type; -   typedef std::map<charT, regex_constants::syntax_type> map_type; -   typedef typename map_type::const_iterator map_iterator_type; -public: -   cpp_regex_traits_char_layer(const std::locale& l) -      : cpp_regex_traits_base<charT>(l) -   { -      init(); -   } -   cpp_regex_traits_char_layer(const cpp_regex_traits_base<charT>& b) -      : cpp_regex_traits_base<charT>(b) -   { -      init(); -   } -   void init(); - -   regex_constants::syntax_type syntax_type(charT c)const -   { -      map_iterator_type i = m_char_map.find(c); -      return ((i == m_char_map.end()) ? 0 : i->second); -   } -   regex_constants::escape_syntax_type escape_syntax_type(charT c) const -   { -      map_iterator_type i = m_char_map.find(c); -      if(i == m_char_map.end()) -      { -         if(this->m_pctype->is(std::ctype_base::lower, c)) return regex_constants::escape_type_class; -         if(this->m_pctype->is(std::ctype_base::upper, c)) return regex_constants::escape_type_not_class; -         return 0; -      } -      return i->second; -   } - -private: -   string_type get_default_message(regex_constants::syntax_type); -   // TODO: use a hash table when available! -   map_type m_char_map; -}; - -template <class charT> -void cpp_regex_traits_char_layer<charT>::init() -{ -   // we need to start by initialising our syntax map so we know which -   // character is used for which purpose: -#ifndef BOOST_NO_STD_MESSAGES -#ifndef __IBMCPP__ -   typename std::messages<charT>::catalog cat = static_cast<std::messages<char>::catalog>(-1); -#else -   typename std::messages<charT>::catalog cat = reinterpret_cast<std::messages<char>::catalog>(-1); -#endif -   std::string cat_name(cpp_regex_traits<charT>::get_catalog_name()); -   if(cat_name.size()) -   { -      cat = this->m_pmessages->open( -         cat_name,  -         this->m_locale); -      if((int)cat < 0) -      { -         std::string m("Unable to open message catalog: "); -         std::runtime_error err(m + cat_name); -         boost::re_detail::raise_runtime_error(err); -      } -   } -   // -   // if we have a valid catalog then load our messages: -   // -   if((int)cat >= 0) -   { -#ifndef BOOST_NO_EXCEPTIONS -      try{ -#endif -         for(regex_constants::syntax_type i = 1; i < regex_constants::syntax_max; ++i) -         { -            string_type mss = this->m_pmessages->get(cat, 0, i, get_default_message(i)); -            for(typename string_type::size_type j = 0; j < mss.size(); ++j) -            { -               m_char_map[mss[j]] = i; -            } -         } -         this->m_pmessages->close(cat); -#ifndef BOOST_NO_EXCEPTIONS -      } -      catch(...) -      { -         this->m_pmessages->close(cat); -         throw; -      } -#endif -   } -   else -   { -#endif -      for(regex_constants::syntax_type i = 1; i < regex_constants::syntax_max; ++i) -      { -         const char* ptr = get_default_syntax(i); -         while(ptr && *ptr) -         { -            m_char_map[this->m_pctype->widen(*ptr)] = i; -            ++ptr; -         } -      } -#ifndef BOOST_NO_STD_MESSAGES -   } -#endif -} - -template <class charT> -typename cpp_regex_traits_char_layer<charT>::string_type  -   cpp_regex_traits_char_layer<charT>::get_default_message(regex_constants::syntax_type i) -{ -   const char* ptr = get_default_syntax(i); -   string_type result; -   while(ptr && *ptr) -   { -      result.append(1, this->m_pctype->widen(*ptr)); -      ++ptr; -   } -   return result; -} - -// -// specialised version for narrow characters: -// -template <> -class BOOST_REGEX_DECL cpp_regex_traits_char_layer<char> : public cpp_regex_traits_base<char> -{ -   typedef std::string string_type; -public: -   cpp_regex_traits_char_layer(const std::locale& l) -   : cpp_regex_traits_base<char>(l) -   { -      init(); -   } -   cpp_regex_traits_char_layer(const cpp_regex_traits_base<char>& l) -   : cpp_regex_traits_base<char>(l) -   { -      init(); -   } - -   regex_constants::syntax_type syntax_type(char c)const -   { -      return m_char_map[static_cast<unsigned char>(c)]; -   } -   regex_constants::escape_syntax_type escape_syntax_type(char c) const -   { -      return m_char_map[static_cast<unsigned char>(c)]; -   } - -private: -   regex_constants::syntax_type m_char_map[1u << CHAR_BIT]; -   void init(); -}; - -#ifdef BOOST_REGEX_BUGGY_CTYPE_FACET -enum -{ -   char_class_space=1<<0,  -   char_class_print=1<<1,  -   char_class_cntrl=1<<2,  -   char_class_upper=1<<3,  -   char_class_lower=1<<4, -   char_class_alpha=1<<5,  -   char_class_digit=1<<6,  -   char_class_punct=1<<7,  -   char_class_xdigit=1<<8, -   char_class_alnum=char_class_alpha|char_class_digit,  -   char_class_graph=char_class_alnum|char_class_punct, -   char_class_blank=1<<9, -   char_class_word=1<<10, -   char_class_unicode=1<<11 -}; - -#endif - -// -// class cpp_regex_traits_implementation: -// provides pimpl implementation for cpp_regex_traits. -// -template <class charT> -class cpp_regex_traits_implementation : public cpp_regex_traits_char_layer<charT> -{ -public: -   typedef typename cpp_regex_traits<charT>::char_class_type char_class_type; -   typedef typename std::ctype<charT>::mask                  native_mask_type; -#ifndef BOOST_REGEX_BUGGY_CTYPE_FACET -   BOOST_STATIC_CONSTANT(char_class_type, mask_blank = 1u << 24); -   BOOST_STATIC_CONSTANT(char_class_type, mask_word = 1u << 25); -   BOOST_STATIC_CONSTANT(char_class_type, mask_unicode = 1u << 26); -#endif - -   typedef std::basic_string<charT> string_type; -   typedef charT char_type; -   //cpp_regex_traits_implementation(); -   cpp_regex_traits_implementation(const std::locale& l) -      : cpp_regex_traits_char_layer<charT>(l) -   { -      init(); -   } -   cpp_regex_traits_implementation(const cpp_regex_traits_base<charT>& l) -      : cpp_regex_traits_char_layer<charT>(l) -   { -      init(); -   } -   std::string error_string(regex_constants::error_type n) const -   { -      if(!m_error_strings.empty()) -      { -         std::map<int, std::string>::const_iterator p = m_error_strings.find(n); -         return (p == m_error_strings.end()) ? std::string(get_default_error_string(n)) : p->second; -      } -      return get_default_error_string(n); -   } -   char_class_type lookup_classname(const charT* p1, const charT* p2) const -   { -      char_class_type result = lookup_classname_imp(p1, p2); -      if(result == 0) -      { -         string_type temp(p1, p2); -         this->m_pctype->tolower(&*temp.begin(), &*temp.begin() + temp.size()); -         result = lookup_classname_imp(&*temp.begin(), &*temp.begin() + temp.size()); -      } -      return result; -   } -   string_type lookup_collatename(const charT* p1, const charT* p2) const; -   string_type transform_primary(const charT* p1, const charT* p2) const; -   string_type transform(const charT* p1, const charT* p2) const; -private: -   std::map<int, std::string>     m_error_strings;   // error messages indexed by numberic ID -   std::map<string_type, char_class_type>  m_custom_class_names; // character class names -   std::map<string_type, string_type>      m_custom_collate_names; // collating element names -   unsigned                       m_collate_type;    // the form of the collation string -   charT                          m_collate_delim;   // the collation group delimiter -   // -   // helpers: -   // -   char_class_type lookup_classname_imp(const charT* p1, const charT* p2) const; -   void init(); -#ifdef BOOST_REGEX_BUGGY_CTYPE_FACET -public: -   bool isctype(charT c, char_class_type m)const; -#endif -}; - -#ifndef BOOST_REGEX_BUGGY_CTYPE_FACET -#if !defined(BOOST_NO_INCLASS_MEMBER_INITIALIZATION) - -template <class charT> -typename cpp_regex_traits_implementation<charT>::char_class_type const cpp_regex_traits_implementation<charT>::mask_blank; -template <class charT> -typename cpp_regex_traits_implementation<charT>::char_class_type const cpp_regex_traits_implementation<charT>::mask_word; -template <class charT> -typename cpp_regex_traits_implementation<charT>::char_class_type const cpp_regex_traits_implementation<charT>::mask_unicode; - -#endif -#endif - -template <class charT> -typename cpp_regex_traits_implementation<charT>::string_type  -   cpp_regex_traits_implementation<charT>::transform_primary(const charT* p1, const charT* p2) const -{ -   // -   // PRECONDITIONS: -   // -   // A bug in gcc 3.2 (and maybe other versions as well) treats -   // p1 as a null terminated string, for efficiency reasons  -   // we work around this elsewhere, but just assert here that -   // we adhere to gcc's (buggy) preconditions... -   // -   BOOST_ASSERT(*p2 == 0); - -   string_type result; -   // -   // swallowing all exceptions here is a bad idea -   // however at least one std lib will always throw -   // std::bad_alloc for certain arguments... -   // -   try{ -      // -      // What we do here depends upon the format of the sort key returned by -      // sort key returned by this->transform: -      // -      switch(m_collate_type) -      { -      case sort_C: -      case sort_unknown: -         // the best we can do is translate to lower case, then get a regular sort key: -         { -            result.assign(p1, p2); -            this->m_pctype->tolower(&*result.begin(), &*result.begin() + result.size()); -            result = this->m_pcollate->transform(&*result.begin(), &*result.begin() + result.size()); -            break; -         } -      case sort_fixed: -         { -            // get a regular sort key, and then truncate it: -            result.assign(this->m_pcollate->transform(p1, p2)); -            result.erase(this->m_collate_delim); -            break; -         } -      case sort_delim: -            // get a regular sort key, and then truncate everything after the delim: -            result.assign(this->m_pcollate->transform(p1, p2)); -            std::size_t i; -            for(i = 0; i < result.size(); ++i) -            { -               if(result[i] == m_collate_delim) -                  break; -            } -            result.erase(i); -            break; -      } -   }catch(...){} -   while(result.size() && (charT(0) == *result.rbegin())) -      result.erase(result.size() - 1); -   if(result.empty()) -   { -      // character is ignorable at the primary level: -      result = string_type(1, charT(0)); -   } -   return result; -} - -template <class charT> -typename cpp_regex_traits_implementation<charT>::string_type  -   cpp_regex_traits_implementation<charT>::transform(const charT* p1, const charT* p2) const -{ -   // -   // PRECONDITIONS: -   // -   // A bug in gcc 3.2 (and maybe other versions as well) treats -   // p1 as a null terminated string, for efficiency reasons  -   // we work around this elsewhere, but just assert here that -   // we adhere to gcc's (buggy) preconditions... -   // -   BOOST_ASSERT(*p2 == 0); -   // -   // swallowing all exceptions here is a bad idea -   // however at least one std lib will always throw -   // std::bad_alloc for certain arguments... -   // -   string_type result; -   try{ -      result = this->m_pcollate->transform(p1, p2); -      // -      // Borland's STLPort version returns a NULL-terminated -      // string that has garbage at the end - each call to -      // std::collate<wchar_t>::transform returns a different string! -      // So as a workaround, we'll truncate the string at the first NULL -      // which _seems_ to work.... -#if BOOST_WORKAROUND(__BORLANDC__, < 0x580) -      result.erase(result.find(charT(0))); -#else -      // -      // some implementations (Dinkumware) append unnecessary trailing \0's: -      while(result.size() && (charT(0) == *result.rbegin())) -         result.erase(result.size() - 1); -#endif -      BOOST_ASSERT(std::find(result.begin(), result.end(), charT(0)) == result.end()); -   } -   catch(...) -   { -   } -   return result; -} - - -template <class charT> -typename cpp_regex_traits_implementation<charT>::string_type  -   cpp_regex_traits_implementation<charT>::lookup_collatename(const charT* p1, const charT* p2) const -{ -   typedef typename std::map<string_type, string_type>::const_iterator iter_type; -   if(m_custom_collate_names.size()) -   { -      iter_type pos = m_custom_collate_names.find(string_type(p1, p2)); -      if(pos != m_custom_collate_names.end()) -         return pos->second; -   } -#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\ -               && !BOOST_WORKAROUND(BOOST_MSVC, < 1300)\ -               && !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551) -   std::string name(p1, p2); -#else -   std::string name; -   const charT* p0 = p1; -   while(p0 != p2) -      name.append(1, char(*p0++)); -#endif -   name = lookup_default_collate_name(name); -#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\ -               && !BOOST_WORKAROUND(BOOST_MSVC, < 1300)\ -               && !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551) -   if(name.size()) -      return string_type(name.begin(), name.end()); -#else -   if(name.size()) -   { -      string_type result; -      typedef std::string::const_iterator iter; -      iter b = name.begin(); -      iter e = name.end(); -      while(b != e) -         result.append(1, charT(*b++)); -      return result; -   } -#endif -   if(p2 - p1 == 1) -      return string_type(1, *p1); -   return string_type(); -} - -template <class charT> -void cpp_regex_traits_implementation<charT>::init() -{ -#ifndef BOOST_NO_STD_MESSAGES -#ifndef __IBMCPP__ -   typename std::messages<charT>::catalog cat = static_cast<std::messages<char>::catalog>(-1); -#else -   typename std::messages<charT>::catalog cat = reinterpret_cast<std::messages<char>::catalog>(-1); -#endif -   std::string cat_name(cpp_regex_traits<charT>::get_catalog_name()); -   if(cat_name.size()) -   { -      cat = this->m_pmessages->open( -         cat_name,  -         this->m_locale); -      if((int)cat < 0) -      { -         std::string m("Unable to open message catalog: "); -         std::runtime_error err(m + cat_name); -         boost::re_detail::raise_runtime_error(err); -      } -   } -   // -   // if we have a valid catalog then load our messages: -   // -   if((int)cat >= 0) -   { -      // -      // Error messages: -      // -      for(boost::regex_constants::error_type i = static_cast<boost::regex_constants::error_type>(0);  -         i <= boost::regex_constants::error_unknown;  -         i = static_cast<boost::regex_constants::error_type>(i + 1)) -      { -         const char* p = get_default_error_string(i); -         string_type default_message; -         while(*p) -         { -            default_message.append(1, this->m_pctype->widen(*p)); -            ++p; -         } -         string_type s = this->m_pmessages->get(cat, 0, i+200, default_message); -         std::string result; -         for(std::string::size_type j = 0; j < s.size(); ++j) -         { -            result.append(1, this->m_pctype->narrow(s[j], 0)); -         } -         m_error_strings[i] = result; -      } -      // -      // Custom class names: -      // -#ifndef BOOST_REGEX_BUGGY_CTYPE_FACET -      static const char_class_type masks[14] =  -      { -         std::ctype<charT>::alnum, -         std::ctype<charT>::alpha, -         std::ctype<charT>::cntrl, -         std::ctype<charT>::digit, -         std::ctype<charT>::graph, -         std::ctype<charT>::lower, -         std::ctype<charT>::print, -         std::ctype<charT>::punct, -         std::ctype<charT>::space, -         std::ctype<charT>::upper, -         std::ctype<charT>::xdigit, -         cpp_regex_traits_implementation<charT>::mask_blank, -         cpp_regex_traits_implementation<charT>::mask_word, -         cpp_regex_traits_implementation<charT>::mask_unicode, -      }; -#else -      static const char_class_type masks[14] =  -      { -         ::boost::re_detail::char_class_alnum, -         ::boost::re_detail::char_class_alpha, -         ::boost::re_detail::char_class_cntrl, -         ::boost::re_detail::char_class_digit, -         ::boost::re_detail::char_class_graph, -         ::boost::re_detail::char_class_lower, -         ::boost::re_detail::char_class_print, -         ::boost::re_detail::char_class_punct, -         ::boost::re_detail::char_class_space, -         ::boost::re_detail::char_class_upper, -         ::boost::re_detail::char_class_xdigit, -         ::boost::re_detail::char_class_blank, -         ::boost::re_detail::char_class_word, -         ::boost::re_detail::char_class_unicode, -      }; -#endif -      static const string_type null_string; -      for(unsigned int j = 0; j <= 13; ++j) -      { -         string_type s(this->m_pmessages->get(cat, 0, j+300, null_string)); -         if(s.size()) -            this->m_custom_class_names[s] = masks[j]; -      } -   } -#endif -   // -   // get the collation format used by m_pcollate: -   // -   m_collate_type = re_detail::find_sort_syntax(this, &m_collate_delim); -} - -template <class charT> -typename cpp_regex_traits_implementation<charT>::char_class_type  -   cpp_regex_traits_implementation<charT>::lookup_classname_imp(const charT* p1, const charT* p2) const -{ -#ifndef BOOST_REGEX_BUGGY_CTYPE_FACET -   static const char_class_type masks[20] =  -   { -      0, -      std::ctype<char>::alnum,  -      std::ctype<char>::alpha, -      cpp_regex_traits_implementation<charT>::mask_blank, -      std::ctype<char>::cntrl, -      std::ctype<char>::digit, -      std::ctype<char>::digit, -      std::ctype<char>::graph, -      std::ctype<char>::lower, -      std::ctype<char>::lower, -      std::ctype<char>::print, -      std::ctype<char>::punct, -      std::ctype<char>::space, -      std::ctype<char>::space, -      std::ctype<char>::upper, -      cpp_regex_traits_implementation<charT>::mask_unicode, -      std::ctype<char>::upper, -      std::ctype<char>::alnum | cpp_regex_traits_implementation<charT>::mask_word,  -      std::ctype<char>::alnum | cpp_regex_traits_implementation<charT>::mask_word,  -      std::ctype<char>::xdigit, -   }; -#else -   static const char_class_type masks[20] =  -   { -      0, -      ::boost::re_detail::char_class_alnum,  -      ::boost::re_detail::char_class_alpha, -      ::boost::re_detail::char_class_blank, -      ::boost::re_detail::char_class_cntrl, -      ::boost::re_detail::char_class_digit, -      ::boost::re_detail::char_class_digit, -      ::boost::re_detail::char_class_graph, -      ::boost::re_detail::char_class_lower, -      ::boost::re_detail::char_class_lower, -      ::boost::re_detail::char_class_print, -      ::boost::re_detail::char_class_punct, -      ::boost::re_detail::char_class_space, -      ::boost::re_detail::char_class_space, -      ::boost::re_detail::char_class_upper, -      ::boost::re_detail::char_class_unicode, -      ::boost::re_detail::char_class_upper, -      ::boost::re_detail::char_class_alnum | ::boost::re_detail::char_class_word,  -      ::boost::re_detail::char_class_alnum | ::boost::re_detail::char_class_word,  -      ::boost::re_detail::char_class_xdigit, -   }; -#endif -   if(m_custom_class_names.size()) -   { -      typedef typename std::map<std::basic_string<charT>, char_class_type>::const_iterator map_iter; -      map_iter pos = m_custom_class_names.find(string_type(p1, p2)); -      if(pos != m_custom_class_names.end()) -         return pos->second; -   } -   std::size_t state_id = 1 + re_detail::get_default_class_id(p1, p2); -   BOOST_ASSERT(state_id < sizeof(masks) / sizeof(masks[0])); -   return masks[state_id]; -} - -#ifdef BOOST_REGEX_BUGGY_CTYPE_FACET -template <class charT> -bool cpp_regex_traits_implementation<charT>::isctype(const charT c, char_class_type mask) const -{ -   return -      ((mask & ::boost::re_detail::char_class_space) && (m_pctype->is(std::ctype<charT>::space, c))) -      || ((mask & ::boost::re_detail::char_class_print) && (m_pctype->is(std::ctype<charT>::print, c))) -      || ((mask & ::boost::re_detail::char_class_cntrl) && (m_pctype->is(std::ctype<charT>::cntrl, c))) -      || ((mask & ::boost::re_detail::char_class_upper) && (m_pctype->is(std::ctype<charT>::upper, c))) -      || ((mask & ::boost::re_detail::char_class_lower) && (m_pctype->is(std::ctype<charT>::lower, c))) -      || ((mask & ::boost::re_detail::char_class_alpha) && (m_pctype->is(std::ctype<charT>::alpha, c))) -      || ((mask & ::boost::re_detail::char_class_digit) && (m_pctype->is(std::ctype<charT>::digit, c))) -      || ((mask & ::boost::re_detail::char_class_punct) && (m_pctype->is(std::ctype<charT>::punct, c))) -      || ((mask & ::boost::re_detail::char_class_xdigit) && (m_pctype->is(std::ctype<charT>::xdigit, c))) -      || ((mask & ::boost::re_detail::char_class_blank) && (m_pctype->is(std::ctype<charT>::space, c)) && !::boost::re_detail::is_separator(c)) -      || ((mask & ::boost::re_detail::char_class_word) && (c == '_')) -      || ((mask & ::boost::re_detail::char_class_unicode) && ::boost::re_detail::is_extended(c)); -} -#endif - - -template <class charT> -inline boost::shared_ptr<const cpp_regex_traits_implementation<charT> > create_cpp_regex_traits(const std::locale& l BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(charT)) -{ -   cpp_regex_traits_base<charT> key(l); -   return ::boost::object_cache<cpp_regex_traits_base<charT>, cpp_regex_traits_implementation<charT> >::get(key, 5); -} - -} // re_detail - -template <class charT> -class cpp_regex_traits -{ -private: -   typedef std::ctype<charT>            ctype_type; -public: -   typedef charT                        char_type; -   typedef std::size_t                  size_type; -   typedef std::basic_string<char_type> string_type; -   typedef std::locale                  locale_type; -   typedef boost::uint_least32_t        char_class_type; - -   struct boost_extensions_tag{}; - -   cpp_regex_traits() -      : m_pimpl(re_detail::create_cpp_regex_traits<charT>(std::locale())) -   { } -   static size_type length(const char_type* p) -   { -      return std::char_traits<charT>::length(p); -   } -   regex_constants::syntax_type syntax_type(charT c)const -   { -      return m_pimpl->syntax_type(c); -   } -   regex_constants::escape_syntax_type escape_syntax_type(charT c) const -   { -      return m_pimpl->escape_syntax_type(c); -   } -   charT translate(charT c) const -   { -      return c; -   } -   charT translate_nocase(charT c) const -   { -      return m_pimpl->m_pctype->tolower(c); -   } -   charT translate(charT c, bool icase) const -   { -      return icase ? m_pimpl->m_pctype->tolower(c) : c; -   } -   charT tolower(charT c) const -   { -      return m_pimpl->m_pctype->tolower(c); -   } -   charT toupper(charT c) const -   { -      return m_pimpl->m_pctype->toupper(c); -   } -   string_type transform(const charT* p1, const charT* p2) const -   { -      return m_pimpl->transform(p1, p2); -   } -   string_type transform_primary(const charT* p1, const charT* p2) const -   { -      return m_pimpl->transform_primary(p1, p2); -   } -   char_class_type lookup_classname(const charT* p1, const charT* p2) const -   { -      return m_pimpl->lookup_classname(p1, p2); -   } -   string_type lookup_collatename(const charT* p1, const charT* p2) const -   { -      return m_pimpl->lookup_collatename(p1, p2); -   } -   bool isctype(charT c, char_class_type f) const -   { -#ifndef BOOST_REGEX_BUGGY_CTYPE_FACET -      typedef typename std::ctype<charT>::mask ctype_mask; - -      static const ctype_mask mask_base =  -         static_cast<ctype_mask>( -            std::ctype<charT>::alnum  -            | std::ctype<charT>::alpha -            | std::ctype<charT>::cntrl -            | std::ctype<charT>::digit -            | std::ctype<charT>::graph -            | std::ctype<charT>::lower -            | std::ctype<charT>::print -            | std::ctype<charT>::punct -            | std::ctype<charT>::space -            | std::ctype<charT>::upper -            | std::ctype<charT>::xdigit); - -      if((f & mask_base)  -         && (m_pimpl->m_pctype->is( -            static_cast<ctype_mask>(f & mask_base), c))) -         return true; -      else if((f & re_detail::cpp_regex_traits_implementation<charT>::mask_unicode) && re_detail::is_extended(c)) -         return true; -      else if((f & re_detail::cpp_regex_traits_implementation<charT>::mask_word) && (c == '_')) -         return true; -      else if((f & re_detail::cpp_regex_traits_implementation<charT>::mask_blank)  -         && m_pimpl->m_pctype->is(std::ctype<charT>::space, c) -         && !re_detail::is_separator(c)) -         return true; -      return false; -#else -      return m_pimpl->isctype(c, f); -#endif -   } -   int toi(const charT*& p1, const charT* p2, int radix)const; -   int value(charT c, int radix)const -   { -      const charT* pc = &c; -      return toi(pc, pc + 1, radix); -   } -   locale_type imbue(locale_type l) -   { -      std::locale result(getloc()); -      m_pimpl = re_detail::create_cpp_regex_traits<charT>(l); -      return result; -   } -   locale_type getloc()const -   { -      return m_pimpl->m_locale; -   } -   std::string error_string(regex_constants::error_type n) const -   { -      return m_pimpl->error_string(n); -   } - -   // -   // extension: -   // set the name of the message catalog in use (defaults to "boost_regex"). -   // -   static std::string catalog_name(const std::string& name); -   static std::string get_catalog_name(); - -private: -   boost::shared_ptr<const re_detail::cpp_regex_traits_implementation<charT> > m_pimpl; -   // -   // catalog name handler: -   // -   static std::string& get_catalog_name_inst(); - -#ifdef BOOST_HAS_THREADS -   static static_mutex& get_mutex_inst(); -#endif -}; - - -template <class charT> -int cpp_regex_traits<charT>::toi(const charT*& first, const charT* last, int radix)const -{ -   re_detail::parser_buf<charT>   sbuf;            // buffer for parsing numbers. -   std::basic_istream<charT>      is(&sbuf);       // stream for parsing numbers. - -   // we do NOT want to parse any thousands separators inside the stream: -   last = std::find(first, last, BOOST_USE_FACET(std::numpunct<charT>, is.getloc()).thousands_sep()); - -   sbuf.pubsetbuf(const_cast<charT*>(static_cast<const charT*>(first)), static_cast<std::streamsize>(last-first)); -   is.clear(); -   if(std::abs(radix) == 16) is >> std::hex; -   else if(std::abs(radix) == 8) is >> std::oct; -   else is >> std::dec; -   int val; -   if(is >> val) -   { -      first = first + ((last - first) - sbuf.in_avail()); -      return val; -   } -   else -      return -1; -} - -template <class charT> -std::string cpp_regex_traits<charT>::catalog_name(const std::string& name) -{ -#ifdef BOOST_HAS_THREADS -   static_mutex::scoped_lock lk(get_mutex_inst()); -#endif -   std::string result(get_catalog_name_inst()); -   get_catalog_name_inst() = name; -   return result; -} - -template <class charT> -std::string& cpp_regex_traits<charT>::get_catalog_name_inst() -{ -   static std::string s_name; -   return s_name; -} - -template <class charT> -std::string cpp_regex_traits<charT>::get_catalog_name() -{ -#ifdef BOOST_HAS_THREADS -   static_mutex::scoped_lock lk(get_mutex_inst()); -#endif -   std::string result(get_catalog_name_inst()); -   return result; -} - -#ifdef BOOST_HAS_THREADS -template <class charT> -static_mutex& cpp_regex_traits<charT>::get_mutex_inst() -{ -   static static_mutex s_mutex = BOOST_STATIC_MUTEX_INIT; -   return s_mutex; -} -#endif - - -} // boost - -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif - -#endif - - diff --git a/3rdParty/Boost/boost/regex/v4/cregex.hpp b/3rdParty/Boost/boost/regex/v4/cregex.hpp deleted file mode 100644 index cafe396..0000000 --- a/3rdParty/Boost/boost/regex/v4/cregex.hpp +++ /dev/null @@ -1,329 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ - - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         cregex.cpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Declares POSIX API functions -  *                + boost::RegEx high level wrapper. -  */ - -#ifndef BOOST_RE_CREGEX_HPP_INCLUDED -#define BOOST_RE_CREGEX_HPP_INCLUDED - -#ifndef BOOST_REGEX_CONFIG_HPP -#include <boost/regex/config.hpp> -#endif -#include <boost/regex/v4/match_flags.hpp> -#include <boost/regex/v4/error_type.hpp> - -#ifdef __cplusplus -#include <cstddef> -#else -#include <stddef.h> -#endif - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -/* include these defs only for POSIX compatablity */ -#ifdef __cplusplus -namespace boost{ -extern "C" { -#endif - -#if defined(__cplusplus) && !defined(BOOST_NO_STDC_NAMESPACE) -typedef std::ptrdiff_t regoff_t; -typedef std::size_t regsize_t; -#else -typedef ptrdiff_t regoff_t; -typedef size_t regsize_t; -#endif - -typedef struct -{ -   unsigned int re_magic; -#ifdef __cplusplus -   std::size_t  re_nsub;      /* number of parenthesized subexpressions */ -#else -   size_t re_nsub;  -#endif -   const char*  re_endp;       /* end pointer for REG_PEND */ -   void* guts;                /* none of your business :-) */ -   match_flag_type eflags;        /* none of your business :-) */ -} regex_tA; - -#ifndef BOOST_NO_WREGEX -typedef struct -{ -   unsigned int re_magic; -#ifdef __cplusplus -   std::size_t  re_nsub;         /* number of parenthesized subexpressions */ -#else -   size_t re_nsub; -#endif -   const wchar_t* re_endp;       /* end pointer for REG_PEND */ -   void* guts;                   /* none of your business :-) */ -   match_flag_type eflags;           /* none of your business :-) */ -} regex_tW; -#endif - -typedef struct -{ -   regoff_t rm_so;      /* start of match */ -   regoff_t rm_eo;      /* end of match */ -} regmatch_t; - -/* regcomp() flags */ -typedef enum{ -   REG_BASIC = 0000, -   REG_EXTENDED = 0001, -   REG_ICASE = 0002, -   REG_NOSUB = 0004, -   REG_NEWLINE = 0010, -   REG_NOSPEC = 0020, -   REG_PEND = 0040, -   REG_DUMP = 0200, -   REG_NOCOLLATE = 0400, -   REG_ESCAPE_IN_LISTS = 01000, -   REG_NEWLINE_ALT = 02000, -   REG_PERLEX = 04000, - -   REG_PERL = REG_EXTENDED | REG_NOCOLLATE | REG_ESCAPE_IN_LISTS | REG_PERLEX, -   REG_AWK = REG_EXTENDED | REG_ESCAPE_IN_LISTS, -   REG_GREP = REG_BASIC | REG_NEWLINE_ALT, -   REG_EGREP = REG_EXTENDED | REG_NEWLINE_ALT, - -   REG_ASSERT = 15, -   REG_INVARG = 16, -   REG_ATOI = 255,   /* convert name to number (!) */ -   REG_ITOA = 0400   /* convert number to name (!) */ -} reg_comp_flags; - -/* regexec() flags */ -typedef enum{ -   REG_NOTBOL =    00001, -   REG_NOTEOL =    00002, -   REG_STARTEND =  00004 -} reg_exec_flags; - -// -// POSIX error codes: -// -typedef unsigned reg_error_t; -typedef reg_error_t reg_errcode_t;  // backwards compatibility - -static const reg_error_t REG_NOERROR = 0;   /* Success.  */ -static const reg_error_t REG_NOMATCH = 1;   /* Didn't find a match (for regexec).  */ - -  /* POSIX regcomp return error codes.  (In the order listed in the -     standard.)  */ -static const reg_error_t REG_BADPAT = 2;    /* Invalid pattern.  */ -static const reg_error_t REG_ECOLLATE = 3;  /* Undefined collating element.  */ -static const reg_error_t REG_ECTYPE = 4;    /* Invalid character class name.  */ -static const reg_error_t REG_EESCAPE = 5;   /* Trailing backslash.  */ -static const reg_error_t REG_ESUBREG = 6;   /* Invalid back reference.  */ -static const reg_error_t REG_EBRACK = 7;    /* Unmatched left bracket.  */ -static const reg_error_t REG_EPAREN = 8;    /* Parenthesis imbalance.  */ -static const reg_error_t REG_EBRACE = 9;    /* Unmatched \{.  */ -static const reg_error_t REG_BADBR = 10;    /* Invalid contents of \{\}.  */ -static const reg_error_t REG_ERANGE = 11;   /* Invalid range end.  */ -static const reg_error_t REG_ESPACE = 12;   /* Ran out of memory.  */ -static const reg_error_t REG_BADRPT = 13;   /* No preceding re for repetition op.  */ -static const reg_error_t REG_EEND = 14;     /* unexpected end of expression */ -static const reg_error_t REG_ESIZE = 15;    /* expression too big */ -static const reg_error_t REG_ERPAREN = 8;   /* = REG_EPAREN : unmatched right parenthesis */ -static const reg_error_t REG_EMPTY = 17;    /* empty expression */ -static const reg_error_t REG_E_MEMORY = 15; /* = REG_ESIZE : out of memory */ -static const reg_error_t REG_ECOMPLEXITY = 18; /* complexity too high */ -static const reg_error_t REG_ESTACK = 19;   /* out of stack space */ -static const reg_error_t REG_E_UNKNOWN = 20; /* unknown error */ -static const reg_error_t REG_ENOSYS = 20;   /* = REG_E_UNKNOWN : Reserved. */ - -BOOST_REGEX_DECL int BOOST_REGEX_CCALL regcompA(regex_tA*, const char*, int); -BOOST_REGEX_DECL regsize_t BOOST_REGEX_CCALL regerrorA(int, const regex_tA*, char*, regsize_t); -BOOST_REGEX_DECL int BOOST_REGEX_CCALL regexecA(const regex_tA*, const char*, regsize_t, regmatch_t*, int); -BOOST_REGEX_DECL void BOOST_REGEX_CCALL regfreeA(regex_tA*); - -#ifndef BOOST_NO_WREGEX -BOOST_REGEX_DECL int BOOST_REGEX_CCALL regcompW(regex_tW*, const wchar_t*, int); -BOOST_REGEX_DECL regsize_t BOOST_REGEX_CCALL regerrorW(int, const regex_tW*, wchar_t*, regsize_t); -BOOST_REGEX_DECL int BOOST_REGEX_CCALL regexecW(const regex_tW*, const wchar_t*, regsize_t, regmatch_t*, int); -BOOST_REGEX_DECL void BOOST_REGEX_CCALL regfreeW(regex_tW*); -#endif - -#ifdef UNICODE -#define regcomp regcompW -#define regerror regerrorW -#define regexec regexecW -#define regfree regfreeW -#define regex_t regex_tW -#else -#define regcomp regcompA -#define regerror regerrorA -#define regexec regexecA -#define regfree regfreeA -#define regex_t regex_tA -#endif - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#ifdef __cplusplus -} // extern "C" -} // namespace -#endif - -// -// C++ high level wrapper goes here: -// -#if defined(__cplusplus) -#include <string> -#include <vector> -namespace boost{ - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -class RegEx; - -namespace re_detail{ - -class RegExData; -struct pred1; -struct pred2; -struct pred3; -struct pred4; - -}  // namespace re_detail - -#if (defined(BOOST_MSVC) || defined(__BORLANDC__)) && !defined(BOOST_DISABLE_WIN32) -typedef bool (__cdecl *GrepCallback)(const RegEx& expression); -typedef bool (__cdecl *GrepFileCallback)(const char* file, const RegEx& expression); -typedef bool (__cdecl *FindFilesCallback)(const char* file); -#else -typedef bool (*GrepCallback)(const RegEx& expression); -typedef bool (*GrepFileCallback)(const char* file, const RegEx& expression); -typedef bool (*FindFilesCallback)(const char* file); -#endif - -class BOOST_REGEX_DECL RegEx -{ -private: -   re_detail::RegExData* pdata; -public: -   RegEx(); -   RegEx(const RegEx& o); -   ~RegEx(); -   explicit RegEx(const char* c, bool icase = false); -   explicit RegEx(const std::string& s, bool icase = false); -   RegEx& operator=(const RegEx& o); -   RegEx& operator=(const char* p); -   RegEx& operator=(const std::string& s){ return this->operator=(s.c_str()); } -   unsigned int SetExpression(const char* p, bool icase = false); -   unsigned int SetExpression(const std::string& s, bool icase = false){ return SetExpression(s.c_str(), icase); } -   std::string Expression()const; -   unsigned int error_code()const; -   // -   // now matching operators: -   // -   bool Match(const char* p, match_flag_type flags = match_default); -   bool Match(const std::string& s, match_flag_type flags = match_default) { return Match(s.c_str(), flags); } -   bool Search(const char* p, match_flag_type flags = match_default); -   bool Search(const std::string& s, match_flag_type flags = match_default) { return Search(s.c_str(), flags); } -   unsigned int Grep(GrepCallback cb, const char* p, match_flag_type flags = match_default); -   unsigned int Grep(GrepCallback cb, const std::string& s, match_flag_type flags = match_default) { return Grep(cb, s.c_str(), flags); } -   unsigned int Grep(std::vector<std::string>& v, const char* p, match_flag_type flags = match_default); -   unsigned int Grep(std::vector<std::string>& v, const std::string& s, match_flag_type flags = match_default) { return Grep(v, s.c_str(), flags); } -   unsigned int Grep(std::vector<std::size_t>& v, const char* p, match_flag_type flags = match_default); -   unsigned int Grep(std::vector<std::size_t>& v, const std::string& s, match_flag_type flags = match_default) { return Grep(v, s.c_str(), flags); } -#ifndef BOOST_REGEX_NO_FILEITER -   unsigned int GrepFiles(GrepFileCallback cb, const char* files, bool recurse = false, match_flag_type flags = match_default); -   unsigned int GrepFiles(GrepFileCallback cb, const std::string& files, bool recurse = false, match_flag_type flags = match_default) { return GrepFiles(cb, files.c_str(), recurse, flags); } -   unsigned int FindFiles(FindFilesCallback cb, const char* files, bool recurse = false, match_flag_type flags = match_default); -   unsigned int FindFiles(FindFilesCallback cb, const std::string& files, bool recurse = false, match_flag_type flags = match_default) { return FindFiles(cb, files.c_str(), recurse, flags); } -#endif - -   std::string Merge(const std::string& in, const std::string& fmt, -                       bool copy = true, match_flag_type flags = match_default); -   std::string Merge(const char* in, const char* fmt, -                       bool copy = true, match_flag_type flags = match_default); - -   std::size_t Split(std::vector<std::string>& v, std::string& s, match_flag_type flags = match_default, unsigned max_count = ~0); -   // -   // now operators for returning what matched in more detail: -   // -   std::size_t Position(int i = 0)const; -   std::size_t Length(int i = 0)const; -   bool Matched(int i = 0)const; -   std::size_t Marks()const; -   std::string What(int i = 0)const; -   std::string operator[](int i)const { return What(i); } - -   static const std::size_t npos; - -   friend struct re_detail::pred1; -   friend struct re_detail::pred2; -   friend struct re_detail::pred3; -   friend struct re_detail::pred4; -}; - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -} // namespace boost - -#endif - -#endif // include guard - - - - - - - - - - diff --git a/3rdParty/Boost/boost/regex/v4/error_type.hpp b/3rdParty/Boost/boost/regex/v4/error_type.hpp deleted file mode 100644 index b6633a0..0000000 --- a/3rdParty/Boost/boost/regex/v4/error_type.hpp +++ /dev/null @@ -1,58 +0,0 @@ -/* - * - * Copyright (c) 2003-2005 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ -  - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         error_type.hpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Declares regular expression error type enumerator. -  */ - -#ifndef BOOST_REGEX_ERROR_TYPE_HPP -#define BOOST_REGEX_ERROR_TYPE_HPP - -#ifdef __cplusplus -namespace boost{ -#endif - -#ifdef __cplusplus -namespace regex_constants{ - -enum error_type{ - -   error_ok = 0,         // not used -   error_no_match = 1,   // not used -   error_bad_pattern = 2, -   error_collate = 3, -   error_ctype = 4, -   error_escape = 5, -   error_backref = 6, -   error_brack = 7, -   error_paren = 8, -   error_brace = 9, -   error_badbrace = 10, -   error_range = 11, -   error_space = 12, -   error_badrepeat = 13, -   error_end = 14,    // not used -   error_size = 15, -   error_right_paren = 16,  // not used -   error_empty = 17, -   error_complexity = 18, -   error_stack = 19, -   error_unknown = 20 -}; - -} -} -#endif // __cplusplus - -#endif diff --git a/3rdParty/Boost/boost/regex/v4/fileiter.hpp b/3rdParty/Boost/boost/regex/v4/fileiter.hpp deleted file mode 100644 index f13c4b2..0000000 --- a/3rdParty/Boost/boost/regex/v4/fileiter.hpp +++ /dev/null @@ -1,455 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ -  - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         fileiter.hpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Declares various platform independent file and -  *                directory iterators, plus binary file input in -  *                the form of class map_file. -  */ - -#ifndef BOOST_RE_FILEITER_HPP_INCLUDED -#define BOOST_RE_FILEITER_HPP_INCLUDED - -#ifndef BOOST_REGEX_CONFIG_HPP -#include <boost/regex/config.hpp> -#endif -#include <boost/assert.hpp> - -#ifndef BOOST_REGEX_NO_FILEITER - -#if (defined(__CYGWIN__) || defined(__CYGWIN32__)) && !defined(BOOST_REGEX_NO_W32) -#error "Sorry, can't mix <windows.h> with STL code and gcc compiler: if you ran configure, try again with configure --disable-ms-windows" -#define BOOST_REGEX_FI_WIN32_MAP -#define BOOST_REGEX_FI_POSIX_DIR -#elif (defined(__WIN32__) || defined(_WIN32) || defined(WIN32)) && !defined(BOOST_REGEX_NO_W32) -#define BOOST_REGEX_FI_WIN32_MAP -#define BOOST_REGEX_FI_WIN32_DIR -#else -#define BOOST_REGEX_FI_POSIX_MAP -#define BOOST_REGEX_FI_POSIX_DIR -#endif - -#if defined(BOOST_REGEX_FI_WIN32_MAP)||defined(BOOST_REGEX_FI_WIN32_DIR) -#include <windows.h> -#endif - -#if defined(BOOST_REGEX_FI_WIN32_DIR) - -#include <cstddef> - -namespace boost{ -   namespace re_detail{ - -#ifndef BOOST_NO_ANSI_APIS -typedef WIN32_FIND_DATAA _fi_find_data; -#else -typedef WIN32_FIND_DATAW _fi_find_data; -#endif -typedef HANDLE _fi_find_handle; - -   } // namespace re_detail - -} // namespace boost - -#define _fi_invalid_handle INVALID_HANDLE_VALUE -#define _fi_dir FILE_ATTRIBUTE_DIRECTORY - -#elif defined(BOOST_REGEX_FI_POSIX_DIR) - -#include <cstddef> -#include <cstdio> -#include <cctype> -#include <iterator> -#include <list> -#include <cassert> -#include <dirent.h> - -#if defined(__SUNPRO_CC) -using std::list; -#endif - -#ifndef MAX_PATH -#define MAX_PATH 256 -#endif - -namespace boost{ -   namespace re_detail{ - -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif - -struct _fi_find_data -{ -   unsigned dwFileAttributes; -   char cFileName[MAX_PATH]; -}; - -struct _fi_priv_data; - -typedef _fi_priv_data* _fi_find_handle; -#define _fi_invalid_handle 0 -#define _fi_dir 1 - -_fi_find_handle _fi_FindFirstFile(const char* lpFileName, _fi_find_data* lpFindFileData); -bool _fi_FindNextFile(_fi_find_handle hFindFile,   _fi_find_data* lpFindFileData); -bool _fi_FindClose(_fi_find_handle hFindFile); - -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif - -   } // namespace re_detail -} // namespace boost - -#ifdef FindFirstFile - #undef FindFirstFile -#endif -#ifdef FindNextFile - #undef FindNextFile -#endif -#ifdef FindClose - #undef FindClose -#endif - -#define FindFirstFileA _fi_FindFirstFile -#define FindNextFileA _fi_FindNextFile -#define FindClose _fi_FindClose - -#endif - -namespace boost{ -   namespace re_detail{ - -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif - -#ifdef BOOST_REGEX_FI_WIN32_MAP // win32 mapfile - -class BOOST_REGEX_DECL mapfile -{ -   HANDLE hfile; -   HANDLE hmap; -   const char* _first; -   const char* _last; -public: - -   typedef const char* iterator; - -   mapfile(){ hfile = hmap = 0; _first = _last = 0; } -   mapfile(const char* file){ hfile = hmap = 0; _first = _last = 0; open(file); } -   ~mapfile(){ close(); } -   void open(const char* file); -   void close(); -   const char* begin(){ return _first; } -   const char* end(){ return _last; } -   size_t size(){ return _last - _first; } -   bool valid(){ return (hfile != 0) && (hfile != INVALID_HANDLE_VALUE); } -}; - - -#else - -class BOOST_REGEX_DECL mapfile_iterator; - -class BOOST_REGEX_DECL mapfile -{ -   typedef char* pointer; -   std::FILE* hfile; -   long int _size; -   pointer* _first; -   pointer* _last; -   mutable std::list<pointer*> condemed; -   enum sizes -   { -      buf_size = 4096 -   }; -   void lock(pointer* node)const; -   void unlock(pointer* node)const; -public: - -   typedef mapfile_iterator iterator; - -   mapfile(){ hfile = 0; _size = 0; _first = _last = 0; } -   mapfile(const char* file){ hfile = 0; _size = 0; _first = _last = 0; open(file); } -   ~mapfile(){ close(); } -   void open(const char* file); -   void close(); -   iterator begin()const; -   iterator end()const; -   unsigned long size()const{ return _size; } -   bool valid()const{ return hfile != 0; } -   friend class mapfile_iterator; -}; - -class BOOST_REGEX_DECL mapfile_iterator -#if !defined(BOOST_NO_STD_ITERATOR) || defined(BOOST_MSVC_STD_ITERATOR) -: public std::iterator<std::random_access_iterator_tag, char> -#endif -{ -   typedef mapfile::pointer internal_pointer; -   internal_pointer* node; -   const mapfile* file; -   unsigned long offset; -   long position()const -   { -      return file ? ((node - file->_first) * mapfile::buf_size + offset) : 0; -   } -   void position(long pos) -   { -      if(file) -      { -         node = file->_first + (pos / mapfile::buf_size); -         offset = pos % mapfile::buf_size; -      } -   } -public: -   typedef std::ptrdiff_t                  difference_type; -   typedef char                            value_type; -   typedef const char*                     pointer; -   typedef const char&                     reference; -   typedef std::random_access_iterator_tag iterator_category; - -   mapfile_iterator() { node = 0; file = 0; offset = 0; } -   mapfile_iterator(const mapfile* f, long arg_position) -   { -      file = f; -      node = f->_first + arg_position / mapfile::buf_size; -      offset = arg_position % mapfile::buf_size; -      if(file) -         file->lock(node); -   } -   mapfile_iterator(const mapfile_iterator& i) -   { -      file = i.file; -      node = i.node; -      offset = i.offset; -      if(file) -         file->lock(node); -   } -   ~mapfile_iterator() -   { -      if(file && node) -         file->unlock(node); -   } -   mapfile_iterator& operator = (const mapfile_iterator& i); -   char operator* ()const -   { -      BOOST_ASSERT(node >= file->_first); -      BOOST_ASSERT(node < file->_last); -      return file ? *(*node + sizeof(int) + offset) : char(0); -   } -   char operator[] (long off)const -   { -      mapfile_iterator tmp(*this); -      tmp += off; -      return *tmp; -   } -   mapfile_iterator& operator++ (); -   mapfile_iterator operator++ (int); -   mapfile_iterator& operator-- (); -   mapfile_iterator operator-- (int); - -   mapfile_iterator& operator += (long off) -   { -      position(position() + off); -      return *this; -   } -   mapfile_iterator& operator -= (long off) -   { -      position(position() - off); -      return *this; -   } - -   friend inline bool operator==(const mapfile_iterator& i, const mapfile_iterator& j) -   { -      return (i.file == j.file) && (i.node == j.node) && (i.offset == j.offset); -   } - -   friend inline bool operator!=(const mapfile_iterator& i, const mapfile_iterator& j) -   { -      return !(i == j); -   } - -   friend inline bool operator<(const mapfile_iterator& i, const mapfile_iterator& j) -   { -      return i.position() < j.position(); -   } -   friend inline bool operator>(const mapfile_iterator& i, const mapfile_iterator& j) -   { -      return i.position() > j.position(); -   } -   friend inline bool operator<=(const mapfile_iterator& i, const mapfile_iterator& j) -   { -      return i.position() <= j.position(); -   } -   friend inline bool operator>=(const mapfile_iterator& i, const mapfile_iterator& j) -   { -      return i.position() >= j.position(); -   } - -   friend mapfile_iterator operator + (const mapfile_iterator& i, long off); -   friend mapfile_iterator operator + (long off, const mapfile_iterator& i) -   { -      mapfile_iterator tmp(i); -      return tmp += off; -   } -   friend mapfile_iterator operator - (const mapfile_iterator& i, long off); -   friend inline long operator - (const mapfile_iterator& i, const mapfile_iterator& j) -   { -      return i.position() - j.position(); -   } -}; - -#endif - -// _fi_sep determines the directory separator, either '\\' or '/' -BOOST_REGEX_DECL extern const char* _fi_sep; - -struct file_iterator_ref -{ -   _fi_find_handle hf; -   _fi_find_data _data; -   long count; -}; - - -class BOOST_REGEX_DECL file_iterator  -{ -   char* _root; -   char* _path; -   char* ptr; -   file_iterator_ref* ref; - -public: -   typedef std::ptrdiff_t            difference_type; -   typedef const char*               value_type; -   typedef const char**              pointer; -   typedef const char*&              reference; -   typedef std::input_iterator_tag   iterator_category; - -   file_iterator(); -   file_iterator(const char* wild); -   ~file_iterator(); -   file_iterator(const file_iterator&); -   file_iterator& operator=(const file_iterator&); -   const char* root()const { return _root; } -   const char* path()const { return _path; } -   const char* name()const { return ptr; } -   _fi_find_data* data() { return &(ref->_data); } -   void next(); -   file_iterator& operator++() { next(); return *this; } -   file_iterator operator++(int); -   const char* operator*() { return path(); } - -   friend inline bool operator == (const file_iterator& f1, const file_iterator& f2) -   { -      return ((f1.ref->hf == _fi_invalid_handle) && (f2.ref->hf == _fi_invalid_handle)); -   } - -   friend inline bool operator != (const file_iterator& f1, const file_iterator& f2) -   { -      return !(f1 == f2); -   } - -}; - -// dwa 9/13/00 - suppress unused parameter warning -inline bool operator < (const file_iterator&, const file_iterator&) -{ -   return false; -} - - -class BOOST_REGEX_DECL directory_iterator -{ -   char* _root; -   char* _path; -   char* ptr; -   file_iterator_ref* ref; - -public: -   typedef std::ptrdiff_t            difference_type; -   typedef const char*               value_type; -   typedef const char**              pointer; -   typedef const char*&              reference; -   typedef std::input_iterator_tag   iterator_category; - -   directory_iterator(); -   directory_iterator(const char* wild); -   ~directory_iterator(); -   directory_iterator(const directory_iterator& other); -   directory_iterator& operator=(const directory_iterator& other); - -   const char* root()const { return _root; } -   const char* path()const { return _path; } -   const char* name()const { return ptr; } -   _fi_find_data* data() { return &(ref->_data); } -   void next(); -   directory_iterator& operator++() { next(); return *this; } -   directory_iterator operator++(int); -   const char* operator*() { return path(); } - -   static const char* separator() { return _fi_sep; } - -   friend inline bool operator == (const directory_iterator& f1, const directory_iterator& f2) -   { -      return ((f1.ref->hf == _fi_invalid_handle) && (f2.ref->hf == _fi_invalid_handle)); -   } - - -   friend inline bool operator != (const directory_iterator& f1, const directory_iterator& f2) -   { -      return !(f1 == f2); -   } - -   }; - -inline bool operator < (const directory_iterator&, const directory_iterator&) -{ -   return false; -} - -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif - - -} // namespace re_detail -using boost::re_detail::directory_iterator; -using boost::re_detail::file_iterator; -using boost::re_detail::mapfile; -} // namespace boost - -#endif     // BOOST_REGEX_NO_FILEITER -#endif     // BOOST_RE_FILEITER_HPP - - - - - - - - - - - - - - - - - - diff --git a/3rdParty/Boost/boost/regex/v4/instances.hpp b/3rdParty/Boost/boost/regex/v4/instances.hpp deleted file mode 100644 index d12dc6b..0000000 --- a/3rdParty/Boost/boost/regex/v4/instances.hpp +++ /dev/null @@ -1,215 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ - - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         instances.cpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Defines those template instances that are placed in the -  *                library rather than in the users object files. -  */ - -// -// note no include guard, we may include this multiple times: -// -#ifndef BOOST_REGEX_NO_EXTERNAL_TEMPLATES - -namespace boost{ - -// -// this header can be included multiple times, each time with -// a different character type, BOOST_REGEX_CHAR_T must be defined -// first: -// -#ifndef BOOST_REGEX_CHAR_T -#  error "BOOST_REGEX_CHAR_T not defined" -#endif - -#ifndef BOOST_REGEX_TRAITS_T -#  define BOOST_REGEX_TRAITS_T , boost::regex_traits<BOOST_REGEX_CHAR_T > -#endif - -// -// what follows is compiler specific: -// - -#if  defined(__BORLANDC__) && (__BORLANDC__ < 0x600) - -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif - -#  ifndef BOOST_REGEX_INSTANTIATE -#     pragma option push -Jgx -#  endif - -template class BOOST_REGEX_DECL basic_regex< BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >; -template class BOOST_REGEX_DECL match_results< const BOOST_REGEX_CHAR_T* >; -#ifndef BOOST_NO_STD_ALLOCATOR -template class BOOST_REGEX_DECL ::boost::re_detail::perl_matcher<BOOST_REGEX_CHAR_T const *, match_results< const BOOST_REGEX_CHAR_T* >::allocator_type BOOST_REGEX_TRAITS_T >; -#endif - -#  ifndef BOOST_REGEX_INSTANTIATE -#     pragma option pop -#  endif - -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif - -#elif defined(BOOST_MSVC) || defined(__ICL) - -#  ifndef BOOST_REGEX_INSTANTIATE -#     ifdef __GNUC__ -#        define template __extension__ extern template -#     else -#        if BOOST_MSVC > 1310 -#           define BOOST_REGEX_TEMPLATE_DECL -#        endif -#        define template extern template -#     endif -#  endif - -#ifndef BOOST_REGEX_TEMPLATE_DECL -#  define BOOST_REGEX_TEMPLATE_DECL BOOST_REGEX_DECL -#endif - -#  ifdef BOOST_MSVC -#     pragma warning(push) -#     pragma warning(disable : 4251 4231 4660) -#  endif - -template class BOOST_REGEX_TEMPLATE_DECL basic_regex< BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >; - -#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300) -template class BOOST_REGEX_TEMPLATE_DECL match_results< const BOOST_REGEX_CHAR_T* >; -#endif -#ifndef BOOST_NO_STD_ALLOCATOR -template class BOOST_REGEX_TEMPLATE_DECL ::boost::re_detail::perl_matcher<BOOST_REGEX_CHAR_T const *, match_results< const BOOST_REGEX_CHAR_T* >::allocator_type BOOST_REGEX_TRAITS_T >; -#endif -#if !(defined(BOOST_DINKUMWARE_STDLIB) && (BOOST_DINKUMWARE_STDLIB <= 1))\ -   && !(defined(BOOST_INTEL_CXX_VERSION) && (BOOST_INTEL_CXX_VERSION <= 800))\ -   && !(defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION))\ -   && !defined(BOOST_REGEX_ICU_INSTANCES) -#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300) -template class BOOST_REGEX_TEMPLATE_DECL match_results< std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator >; -#endif -#ifndef BOOST_NO_STD_ALLOCATOR -template class BOOST_REGEX_TEMPLATE_DECL ::boost::re_detail::perl_matcher< std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator, match_results< std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator >::allocator_type, boost::regex_traits<BOOST_REGEX_CHAR_T > >; -#endif -#endif - - -#  ifdef BOOST_MSVC -#     pragma warning(pop) -#  endif - -#  ifdef template -#     undef template -#  endif - -#undef BOOST_REGEX_TEMPLATE_DECL - -#elif (defined(__GNUC__) && (__GNUC__ >= 3)) - -#  ifndef BOOST_REGEX_INSTANTIATE -#     define template __extension__ extern template -#  endif - -#if !defined(BOOST_NO_STD_LOCALE) && !defined(BOOST_REGEX_ICU_INSTANCES) -namespace re_detail{ -template BOOST_REGEX_DECL -std::locale cpp_regex_traits_base<BOOST_REGEX_CHAR_T>::imbue(const std::locale& l); - -template BOOST_REGEX_DECL -cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::string_type  -   cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::transform_primary(const BOOST_REGEX_CHAR_T* p1, const BOOST_REGEX_CHAR_T* p2) const; -template BOOST_REGEX_DECL -cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::string_type  -   cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::transform(const BOOST_REGEX_CHAR_T* p1, const BOOST_REGEX_CHAR_T* p2) const; -template BOOST_REGEX_DECL -cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::string_type  -   cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::lookup_collatename(const BOOST_REGEX_CHAR_T* p1, const BOOST_REGEX_CHAR_T* p2) const; -template BOOST_REGEX_DECL -void cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::init(); -template BOOST_REGEX_DECL -cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::char_class_type  -   cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::lookup_classname_imp(const BOOST_REGEX_CHAR_T* p1, const BOOST_REGEX_CHAR_T* p2) const; -#ifdef BOOST_REGEX_BUGGY_CTYPE_FACET -template BOOST_REGEX_DECL -bool cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::isctype(const BOOST_REGEX_CHAR_T c, char_class_type mask) const; -#endif -} // namespace -template BOOST_REGEX_DECL -int cpp_regex_traits<BOOST_REGEX_CHAR_T>::toi(const BOOST_REGEX_CHAR_T*& first, const BOOST_REGEX_CHAR_T* last, int radix)const; -template BOOST_REGEX_DECL -std::string cpp_regex_traits<BOOST_REGEX_CHAR_T>::catalog_name(const std::string& name); -template BOOST_REGEX_DECL -std::string& cpp_regex_traits<BOOST_REGEX_CHAR_T>::get_catalog_name_inst(); -template BOOST_REGEX_DECL -std::string cpp_regex_traits<BOOST_REGEX_CHAR_T>::get_catalog_name(); -#ifdef BOOST_HAS_THREADS -template BOOST_REGEX_DECL -static_mutex& cpp_regex_traits<BOOST_REGEX_CHAR_T>::get_mutex_inst(); -#endif -#endif - -template BOOST_REGEX_DECL basic_regex<BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >&  -   basic_regex<BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >::do_assign( -      const BOOST_REGEX_CHAR_T* p1,  -      const BOOST_REGEX_CHAR_T* p2,  -      flag_type f); -template BOOST_REGEX_DECL basic_regex<BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >::locale_type BOOST_REGEX_CALL  -   basic_regex<BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >::imbue(locale_type l); - -template BOOST_REGEX_DECL void BOOST_REGEX_CALL  -   match_results<const BOOST_REGEX_CHAR_T*>::maybe_assign( -      const match_results<const BOOST_REGEX_CHAR_T*>& m); - -namespace re_detail{ -template BOOST_REGEX_DECL void perl_matcher<BOOST_REGEX_CHAR_T const *, match_results< const BOOST_REGEX_CHAR_T* >::allocator_type BOOST_REGEX_TRAITS_T >::construct_init( -      const basic_regex<BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >& e, match_flag_type f); -template BOOST_REGEX_DECL bool perl_matcher<BOOST_REGEX_CHAR_T const *, match_results< const BOOST_REGEX_CHAR_T* >::allocator_type BOOST_REGEX_TRAITS_T >::match(); -template BOOST_REGEX_DECL bool perl_matcher<BOOST_REGEX_CHAR_T const *, match_results< const BOOST_REGEX_CHAR_T* >::allocator_type BOOST_REGEX_TRAITS_T >::find(); -} // namespace - -#if (defined(__GLIBCPP__) || defined(__GLIBCXX__)) \ -   && !defined(BOOST_REGEX_ICU_INSTANCES)\ -   && !defined(__SGI_STL_PORT)\ -   && !defined(_STLPORT_VERSION) -// std:basic_string<>::const_iterator instances as well: -template BOOST_REGEX_DECL void BOOST_REGEX_CALL  -   match_results<std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator>::maybe_assign( -      const match_results<std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator>& m); - -namespace re_detail{ -template BOOST_REGEX_DECL void perl_matcher<std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator, match_results< std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator >::allocator_type, boost::regex_traits<BOOST_REGEX_CHAR_T > >::construct_init( -      const basic_regex<BOOST_REGEX_CHAR_T>& e, match_flag_type f); -template BOOST_REGEX_DECL bool perl_matcher<std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator, match_results< std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator >::allocator_type, boost::regex_traits<BOOST_REGEX_CHAR_T > >::match(); -template BOOST_REGEX_DECL bool perl_matcher<std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator, match_results< std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator >::allocator_type, boost::regex_traits<BOOST_REGEX_CHAR_T > >::find(); -} // namespace -#endif - -#  ifdef template -#     undef template -#  endif - - -#endif - -} // namespace boost - -#endif // BOOST_REGEX_NO_EXTERNAL_TEMPLATES - - - - - diff --git a/3rdParty/Boost/boost/regex/v4/iterator_category.hpp b/3rdParty/Boost/boost/regex/v4/iterator_category.hpp deleted file mode 100644 index 20870a0..0000000 --- a/3rdParty/Boost/boost/regex/v4/iterator_category.hpp +++ /dev/null @@ -1,87 +0,0 @@ -/* - * - * Copyright (c) 2002 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ - - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         regex_match.hpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Iterator traits for selecting an iterator type as -  *                an integral constant expression. -  */ - - -#ifndef BOOST_REGEX_ITERATOR_CATEGORY_HPP -#define BOOST_REGEX_ITERATOR_CATEGORY_HPP - -#include <iterator> -#include <boost/type_traits/is_convertible.hpp> -#include <boost/type_traits/is_pointer.hpp> - -namespace boost{ -namespace detail{ - -template <class I> -struct is_random_imp -{ -private: -   typedef typename std::iterator_traits<I>::iterator_category cat; -public: -   BOOST_STATIC_CONSTANT(bool, value = (::boost::is_convertible<cat*, std::random_access_iterator_tag*>::value)); -}; - -template <class I> -struct is_random_pointer_imp -{ -   BOOST_STATIC_CONSTANT(bool, value = true); -}; - -template <bool is_pointer_type> -struct is_random_imp_selector -{ -   template <class I> -   struct rebind -   { -      typedef is_random_imp<I> type; -   }; -}; - -template <> -struct is_random_imp_selector<true> -{ -   template <class I> -   struct rebind -   { -      typedef is_random_pointer_imp<I> type; -   }; -}; - -} - -template <class I> -struct is_random_access_iterator -{ -private: -   typedef detail::is_random_imp_selector< ::boost::is_pointer<I>::value> selector; -   typedef typename selector::template rebind<I> bound_type; -   typedef typename bound_type::type answer; -public: -   BOOST_STATIC_CONSTANT(bool, value = answer::value); -}; - -#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION -template <class I> -const bool is_random_access_iterator<I>::value; -#endif - -} - -#endif - diff --git a/3rdParty/Boost/boost/regex/v4/iterator_traits.hpp b/3rdParty/Boost/boost/regex/v4/iterator_traits.hpp deleted file mode 100644 index f7afacb..0000000 --- a/3rdParty/Boost/boost/regex/v4/iterator_traits.hpp +++ /dev/null @@ -1,135 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ - - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         iterator_traits.cpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Declares iterator traits workarounds. -  */ - -#ifndef BOOST_REGEX_V4_ITERATOR_TRAITS_HPP -#define BOOST_REGEX_V4_ITERATOR_TRAITS_HPP - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -namespace boost{ -namespace re_detail{ - -#if defined(BOOST_NO_STD_ITERATOR_TRAITS) || defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) - -template <class T> -struct regex_iterator_traits  -{ -  typedef typename T::iterator_category iterator_category; -  typedef typename T::value_type        value_type; -#if !defined(BOOST_NO_STD_ITERATOR) -  typedef typename T::difference_type   difference_type; -  typedef typename T::pointer           pointer; -  typedef typename T::reference         reference; -#else -  typedef std::ptrdiff_t                difference_type; -  typedef value_type*                   pointer; -  typedef value_type&                   reference; -#endif -}; - -template <class T> -struct pointer_iterator_traits -{ -   typedef std::ptrdiff_t difference_type; -   typedef T value_type; -   typedef T* pointer; -   typedef T& reference; -   typedef std::random_access_iterator_tag iterator_category; -}; -template <class T> -struct const_pointer_iterator_traits -{ -   typedef std::ptrdiff_t difference_type; -   typedef T value_type; -   typedef const T* pointer; -   typedef const T& reference; -   typedef std::random_access_iterator_tag iterator_category; -}; - -template<> -struct regex_iterator_traits<char*> : pointer_iterator_traits<char>{}; -template<> -struct regex_iterator_traits<const char*> : const_pointer_iterator_traits<char>{}; -template<> -struct regex_iterator_traits<wchar_t*> : pointer_iterator_traits<wchar_t>{}; -template<> -struct regex_iterator_traits<const wchar_t*> : const_pointer_iterator_traits<wchar_t>{}; -// -// the follwoing are needed for ICU support: -// -template<> -struct regex_iterator_traits<unsigned char*> : pointer_iterator_traits<char>{}; -template<> -struct regex_iterator_traits<const unsigned char*> : const_pointer_iterator_traits<char>{}; -template<> -struct regex_iterator_traits<int*> : pointer_iterator_traits<int>{}; -template<> -struct regex_iterator_traits<const int*> : const_pointer_iterator_traits<int>{}; - -#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T -template<> -struct regex_iterator_traits<unsigned short*> : pointer_iterator_traits<unsigned short>{}; -template<> -struct regex_iterator_traits<const unsigned short*> : const_pointer_iterator_traits<unsigned short>{}; -#endif - -#if defined(__SGI_STL_PORT) && defined(__STL_DEBUG) -template<> -struct regex_iterator_traits<std::string::iterator> : pointer_iterator_traits<char>{}; -template<> -struct regex_iterator_traits<std::string::const_iterator> : const_pointer_iterator_traits<char>{}; -#ifndef BOOST_NO_STD_WSTRING -template<> -struct regex_iterator_traits<std::wstring::iterator> : pointer_iterator_traits<wchar_t>{}; -template<> -struct regex_iterator_traits<std::wstring::const_iterator> : const_pointer_iterator_traits<wchar_t>{}; -#endif // BOOST_NO_WSTRING -#endif // stport - -#else - -template <class T> -struct regex_iterator_traits : public std::iterator_traits<T> {}; - -#endif - -} // namespace re_detail -} // namespace boost - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif - diff --git a/3rdParty/Boost/boost/regex/v4/match_flags.hpp b/3rdParty/Boost/boost/regex/v4/match_flags.hpp deleted file mode 100644 index 9585aca..0000000 --- a/3rdParty/Boost/boost/regex/v4/match_flags.hpp +++ /dev/null @@ -1,138 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ -  - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         match_flags.hpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Declares match_flags type. -  */ - -#ifndef BOOST_REGEX_V4_MATCH_FLAGS -#define BOOST_REGEX_V4_MATCH_FLAGS - -#ifdef __cplusplus -#  include <boost/cstdint.hpp> -#endif - -#ifdef __cplusplus -namespace boost{ -   namespace regex_constants{ -#endif - -typedef enum _match_flags -{ -   match_default = 0, -   match_not_bol = 1,                                // first is not start of line -   match_not_eol = match_not_bol << 1,               // last is not end of line -   match_not_bob = match_not_eol << 1,               // first is not start of buffer -   match_not_eob = match_not_bob << 1,               // last is not end of buffer -   match_not_bow = match_not_eob << 1,               // first is not start of word -   match_not_eow = match_not_bow << 1,               // last is not end of word -   match_not_dot_newline = match_not_eow << 1,       // \n is not matched by '.' -   match_not_dot_null = match_not_dot_newline << 1,  // '\0' is not matched by '.' -   match_prev_avail = match_not_dot_null << 1,       // *--first is a valid expression -   match_init = match_prev_avail << 1,               // internal use -   match_any = match_init << 1,                      // don't care what we match -   match_not_null = match_any << 1,                  // string can't be null -   match_continuous = match_not_null << 1,           // each grep match must continue from -                                                     // uninterupted from the previous one -   match_partial = match_continuous << 1,            // find partial matches -    -   match_stop = match_partial << 1,                  // stop after first match (grep) V3 only -   match_not_initial_null = match_stop,              // don't match initial null, V4 only -   match_all = match_stop << 1,                      // must find the whole of input even if match_any is set -   match_perl = match_all << 1,                      // Use perl matching rules -   match_posix = match_perl << 1,                    // Use POSIX matching rules -   match_nosubs = match_posix << 1,                  // don't trap marked subs -   match_extra = match_nosubs << 1,                  // include full capture information for repeated captures -   match_single_line = match_extra << 1,             // treat text as single line and ignor any \n's when matching ^ and $. -   match_unused1 = match_single_line << 1,           // unused -   match_unused2 = match_unused1 << 1,               // unused -   match_unused3 = match_unused2 << 1,               // unused -   match_max = match_unused3, - -   format_perl = 0,                                  // perl style replacement -   format_default = 0,                               // ditto. -   format_sed = match_max << 1,                      // sed style replacement. -   format_all = format_sed << 1,                     // enable all extentions to sytax. -   format_no_copy = format_all << 1,                 // don't copy non-matching segments. -   format_first_only = format_no_copy << 1,          // Only replace first occurance. -   format_is_if = format_first_only << 1,            // internal use only. -   format_literal = format_is_if << 1                // treat string as a literal - -} match_flags; - -#if (defined(_MSC_VER) && (_MSC_VER < 1300)) || defined(__BORLANDC__) -typedef unsigned long match_flag_type; -#else -typedef match_flags match_flag_type; - - -#ifdef __cplusplus -inline match_flags operator&(match_flags m1, match_flags m2) -{ return static_cast<match_flags>(static_cast<boost::int32_t>(m1) & static_cast<boost::int32_t>(m2)); } -inline match_flags operator|(match_flags m1, match_flags m2) -{ return static_cast<match_flags>(static_cast<boost::int32_t>(m1) | static_cast<boost::int32_t>(m2)); } -inline match_flags operator^(match_flags m1, match_flags m2) -{ return static_cast<match_flags>(static_cast<boost::int32_t>(m1) ^ static_cast<boost::int32_t>(m2)); } -inline match_flags operator~(match_flags m1) -{ return static_cast<match_flags>(~static_cast<boost::int32_t>(m1)); } -inline match_flags& operator&=(match_flags& m1, match_flags m2) -{ m1 = m1&m2; return m1; } -inline match_flags& operator|=(match_flags& m1, match_flags m2) -{ m1 = m1|m2; return m1; } -inline match_flags& operator^=(match_flags& m1, match_flags m2) -{ m1 = m1^m2; return m1; } -#endif -#endif - -#ifdef __cplusplus -} // namespace regex_constants -// -// import names into boost for backwards compatiblity: -// -using regex_constants::match_flag_type; -using regex_constants::match_default; -using regex_constants::match_not_bol; -using regex_constants::match_not_eol; -using regex_constants::match_not_bob; -using regex_constants::match_not_eob; -using regex_constants::match_not_bow; -using regex_constants::match_not_eow; -using regex_constants::match_not_dot_newline; -using regex_constants::match_not_dot_null; -using regex_constants::match_prev_avail; -//using regex_constants::match_init; -using regex_constants::match_any; -using regex_constants::match_not_null; -using regex_constants::match_continuous; -using regex_constants::match_partial; -//using regex_constants::match_stop; -using regex_constants::match_all; -using regex_constants::match_perl; -using regex_constants::match_posix; -using regex_constants::match_nosubs; -using regex_constants::match_extra; -using regex_constants::match_single_line; -//using regex_constants::match_max; -using regex_constants::format_all; -using regex_constants::format_sed; -using regex_constants::format_perl; -using regex_constants::format_default; -using regex_constants::format_no_copy; -using regex_constants::format_first_only; -//using regex_constants::format_is_if; - -} // namespace boost -#endif // __cplusplus -#endif // include guard - diff --git a/3rdParty/Boost/boost/regex/v4/match_results.hpp b/3rdParty/Boost/boost/regex/v4/match_results.hpp deleted file mode 100644 index acf509f..0000000 --- a/3rdParty/Boost/boost/regex/v4/match_results.hpp +++ /dev/null @@ -1,427 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ - - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         match_results.cpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Declares template class match_results. -  */ - -#ifndef BOOST_REGEX_V4_MATCH_RESULTS_HPP -#define BOOST_REGEX_V4_MATCH_RESULTS_HPP - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -namespace boost{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable : 4251 4231 4660) -#endif - -template <class BidiIterator, class Allocator> -class match_results -{  -private: -#ifndef BOOST_NO_STD_ALLOCATOR -   typedef          std::vector<sub_match<BidiIterator>, Allocator> vector_type; -#else -   typedef          std::vector<sub_match<BidiIterator> >           vector_type; -#endif -public:  -   typedef          sub_match<BidiIterator>                         value_type; -#if  !defined(BOOST_NO_STD_ALLOCATOR) && !(defined(BOOST_MSVC) && defined(_STLPORT_VERSION)) -   typedef typename Allocator::const_reference                              const_reference; -#else -   typedef          const value_type&                                       const_reference; -#endif -   typedef          const_reference                                         reference; -   typedef typename vector_type::const_iterator                             const_iterator; -   typedef          const_iterator                                          iterator; -   typedef typename re_detail::regex_iterator_traits< -                                    BidiIterator>::difference_type          difference_type; -   typedef typename Allocator::size_type                                    size_type; -   typedef          Allocator                                               allocator_type; -   typedef typename re_detail::regex_iterator_traits< -                                    BidiIterator>::value_type               char_type; -   typedef          std::basic_string<char_type>                            string_type; - -   // construct/copy/destroy: -   explicit match_results(const Allocator& a = Allocator()) -#ifndef BOOST_NO_STD_ALLOCATOR -      : m_subs(a), m_base() {} -#else -      : m_subs(), m_base() { (void)a; } -#endif -   match_results(const match_results& m) -      : m_subs(m.m_subs), m_base(m.m_base) {} -   match_results& operator=(const match_results& m) -   { -      m_subs = m.m_subs; -      m_base = m.m_base; -      return *this; -   } -   ~match_results(){} - -   // size: -   size_type size() const -   { return empty() ? 0 : m_subs.size() - 2; } -   size_type max_size() const -   { return m_subs.max_size(); } -   bool empty() const -   { return m_subs.size() < 2; } -   // element access: -   difference_type length(int sub = 0) const -   { -      sub += 2; -      if((sub < (int)m_subs.size()) && (sub > 0)) -         return m_subs[sub].length(); -      return 0; -   } -   difference_type position(size_type sub = 0) const -   { -      sub += 2; -      if(sub < m_subs.size()) -      { -         const sub_match<BidiIterator>& s = m_subs[sub]; -         if(s.matched || (sub == 2)) -         { -            return ::boost::re_detail::distance((BidiIterator)(m_base), (BidiIterator)(s.first)); -         } -      } -      return ~static_cast<difference_type>(0); -   } -   string_type str(int sub = 0) const -   { -      sub += 2; -      string_type result; -      if(sub < (int)m_subs.size() && (sub > 0)) -      { -         const sub_match<BidiIterator>& s = m_subs[sub]; -         if(s.matched) -         { -            result = s.str(); -         } -      } -      return result; -   } -   const_reference operator[](int sub) const -   { -      sub += 2; -      if(sub < (int)m_subs.size() && (sub >= 0)) -      { -         return m_subs[sub]; -      } -      return m_null; -   } - -   const_reference prefix() const -   { -      return (*this)[-1]; -   } - -   const_reference suffix() const -   { -      return (*this)[-2]; -   } -   const_iterator begin() const -   { -      return (m_subs.size() > 2) ? (m_subs.begin() + 2) : m_subs.end(); -   } -   const_iterator end() const -   { -      return m_subs.end(); -   } -   // format: -   template <class OutputIterator> -   OutputIterator format(OutputIterator out, -                         const string_type& fmt, -                         match_flag_type flags = format_default) const -   { -      re_detail::trivial_format_traits<char_type> traits; -      return re_detail::regex_format_imp(out, *this, fmt.data(), fmt.data() + fmt.size(), flags, traits); -   } -   string_type format(const string_type& fmt, -                      match_flag_type flags = format_default) const -   { -      string_type result; -      re_detail::string_out_iterator<string_type> i(result); -      re_detail::trivial_format_traits<char_type> traits; -      re_detail::regex_format_imp(i, *this, fmt.data(), fmt.data() + fmt.size(), flags, traits); -      return result; -   } -   // format with locale: -   template <class OutputIterator, class RegexT> -   OutputIterator format(OutputIterator out, -                         const string_type& fmt, -                         match_flag_type flags, -                         const RegexT& re) const -   { -      return ::boost::re_detail::regex_format_imp(out, *this, fmt.data(), fmt.data() + fmt.size(), flags, re.get_traits()); -   } -   template <class RegexT> -   string_type format(const string_type& fmt, -                      match_flag_type flags, -                      const RegexT& re) const -   { -      string_type result; -      re_detail::string_out_iterator<string_type> i(result); -      ::boost::re_detail::regex_format_imp(i, *this, fmt.data(), fmt.data() + fmt.size(), flags, re.get_traits()); -      return result; -   } - -   allocator_type get_allocator() const -   { -#ifndef BOOST_NO_STD_ALLOCATOR -      return m_subs.get_allocator(); -#else -     return allocator_type(); -#endif -   } -   void swap(match_results& that) -   { -      std::swap(m_subs, that.m_subs); -      std::swap(m_base, that.m_base); -   } -   bool operator==(const match_results& that)const -   { -      return (m_subs == that.m_subs) && (m_base == that.m_base); -   } -   bool operator!=(const match_results& that)const -   { return !(*this == that); } - -#ifdef BOOST_REGEX_MATCH_EXTRA -   typedef typename sub_match<BidiIterator>::capture_sequence_type capture_sequence_type; - -   const capture_sequence_type& captures(int i)const -   { -      return (*this)[i].captures(); -   } -#endif - -   // -   // private access functions: -   void BOOST_REGEX_CALL set_second(BidiIterator i) -   { -      BOOST_ASSERT(m_subs.size() > 2); -      m_subs[2].second = i; -      m_subs[2].matched = true; -      m_subs[0].first = i; -      m_subs[0].matched = (m_subs[0].first != m_subs[0].second); -      m_null.first = i; -      m_null.second = i; -      m_null.matched = false; -   } - -   void BOOST_REGEX_CALL set_second(BidiIterator i, size_type pos, bool m = true) -   { -      pos += 2; -      BOOST_ASSERT(m_subs.size() > pos); -      m_subs[pos].second = i; -      m_subs[pos].matched = m; -      if(pos == 2) -      { -         m_subs[0].first = i; -         m_subs[0].matched = (m_subs[0].first != m_subs[0].second); -         m_null.first = i; -         m_null.second = i; -         m_null.matched = false; -      } -   } -   void BOOST_REGEX_CALL set_size(size_type n, BidiIterator i, BidiIterator j) -   { -      value_type v(j); -      size_type len = m_subs.size(); -      if(len > n + 2) -      { -         m_subs.erase(m_subs.begin()+n+2, m_subs.end()); -         std::fill(m_subs.begin(), m_subs.end(), v); -      } -      else -      { -         std::fill(m_subs.begin(), m_subs.end(), v); -         if(n+2 != len) -            m_subs.insert(m_subs.end(), n+2-len, v); -      } -      m_subs[1].first = i; -   } -   void BOOST_REGEX_CALL set_base(BidiIterator pos) -   { -      m_base = pos; -   } -   BidiIterator base()const -   { -      return m_base; -   } -   void BOOST_REGEX_CALL set_first(BidiIterator i) -   { -      // set up prefix: -      m_subs[1].second = i; -      m_subs[1].matched = (m_subs[1].first != i); -      // set up $0: -      m_subs[2].first = i; -      // zero out everything else: -      for(size_type n = 3; n < m_subs.size(); ++n) -      { -         m_subs[n].first = m_subs[n].second = m_subs[0].second; -         m_subs[n].matched = false; -      } -   } -   void BOOST_REGEX_CALL set_first(BidiIterator i, size_type pos) -   { -      BOOST_ASSERT(pos+2 < m_subs.size()); -      if(pos) -         m_subs[pos+2].first = i; -      else -         set_first(i); -   } -   void BOOST_REGEX_CALL maybe_assign(const match_results<BidiIterator, Allocator>& m); - - -private: -   vector_type            m_subs; // subexpressions -   BidiIterator   m_base; // where the search started from -   sub_match<BidiIterator> m_null; // a null match -}; - -template <class BidiIterator, class Allocator> -void BOOST_REGEX_CALL match_results<BidiIterator, Allocator>::maybe_assign(const match_results<BidiIterator, Allocator>& m) -{ -   const_iterator p1, p2; -   p1 = begin(); -   p2 = m.begin(); -   // -   // Distances are measured from the start of *this* match, unless this isn't -   // a valid match in which case we use the start of the whole sequence.  Note that -   // no subsequent match-candidate can ever be to the left of the first match found. -   // This ensures that when we are using bidirectional iterators, that distances  -   // measured are as short as possible, and therefore as efficient as possible -   // to compute.  Finally note that we don't use the "matched" data member to test -   // whether a sub-expression is a valid match, because partial matches set this -   // to false for sub-expression 0. -   // -   BidiIterator l_end = this->suffix().second; -   BidiIterator l_base = (p1->first == l_end) ? this->prefix().first : (*this)[0].first; -   difference_type len1 = 0; -   difference_type len2 = 0; -   difference_type base1 = 0; -   difference_type base2 = 0; -   std::size_t i; -   for(i = 0; i < size(); ++i, ++p1, ++p2) -   { -      // -      // Leftmost takes priority over longest; handle special cases -      // where distances need not be computed first (an optimisation -      // for bidirectional iterators: ensure that we don't accidently -      // compute the length of the whole sequence, as this can be really -      // expensive). -      // -      if(p1->first == l_end) -      { -         if(p2->first != l_end) -         { -            // p2 must be better than p1, and no need to calculate -            // actual distances: -            base1 = 1; -            base2 = 0; -            break; -         } -         else -         { -            // *p1 and *p2 are either unmatched or match end-of sequence, -            // either way no need to calculate distances: -            if((p1->matched == false) && (p2->matched == true)) -               break; -            if((p1->matched == true) && (p2->matched == false)) -               return; -            continue; -         } -      } -      else if(p2->first == l_end) -      { -         // p1 better than p2, and no need to calculate distances: -         return; -      } -      base1 = ::boost::re_detail::distance(l_base, p1->first); -      base2 = ::boost::re_detail::distance(l_base, p2->first); -      BOOST_ASSERT(base1 >= 0); -      BOOST_ASSERT(base2 >= 0); -      if(base1 < base2) return; -      if(base2 < base1) break; - -      len1 = ::boost::re_detail::distance((BidiIterator)p1->first, (BidiIterator)p1->second); -      len2 = ::boost::re_detail::distance((BidiIterator)p2->first, (BidiIterator)p2->second); -      BOOST_ASSERT(len1 >= 0); -      BOOST_ASSERT(len2 >= 0); -      if((len1 != len2) || ((p1->matched == false) && (p2->matched == true))) -         break; -      if((p1->matched == true) && (p2->matched == false)) -         return; -   } -   if(i == size()) -      return; -   if(base2 < base1) -      *this = m; -   else if((len2 > len1) || ((p1->matched == false) && (p2->matched == true)) ) -      *this = m; -} - -template <class BidiIterator, class Allocator> -void swap(match_results<BidiIterator, Allocator>& a, match_results<BidiIterator, Allocator>& b) -{ -   a.swap(b); -} - -#ifndef BOOST_NO_STD_LOCALE -template <class charT, class traits, class BidiIterator, class Allocator> -std::basic_ostream<charT, traits>& -   operator << (std::basic_ostream<charT, traits>& os, -                const match_results<BidiIterator, Allocator>& s) -{ -   return (os << s.str()); -} -#else -template <class BidiIterator, class Allocator> -std::ostream& operator << (std::ostream& os, -                           const match_results<BidiIterator, Allocator>& s) -{ -   return (os << s.str()); -} -#endif - -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} // namespace boost - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif - - diff --git a/3rdParty/Boost/boost/regex/v4/mem_block_cache.hpp b/3rdParty/Boost/boost/regex/v4/mem_block_cache.hpp deleted file mode 100644 index 222142d..0000000 --- a/3rdParty/Boost/boost/regex/v4/mem_block_cache.hpp +++ /dev/null @@ -1,99 +0,0 @@ - /* - * Copyright (c) 2002 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ - - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         mem_block_cache.hpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: memory block cache used by the non-recursive matcher. -  */ - -#ifndef BOOST_REGEX_V4_MEM_BLOCK_CACHE_HPP -#define BOOST_REGEX_V4_MEM_BLOCK_CACHE_HPP - -#include <new> -#ifdef BOOST_HAS_THREADS -#include <boost/regex/pending/static_mutex.hpp> -#endif - -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif - -namespace boost{ -namespace re_detail{ - -struct mem_block_node -{ -   mem_block_node* next; -}; - -struct mem_block_cache -{ -   // this member has to be statically initialsed: -   mem_block_node* next; -   unsigned cached_blocks; -#ifdef BOOST_HAS_THREADS -   boost::static_mutex mut; -#endif - -   ~mem_block_cache() -   { -      while(next) -      { -         mem_block_node* old = next; -         next = next->next; -         ::operator delete(old); -      } -   } -   void* get() -   { -#ifdef BOOST_HAS_THREADS -      boost::static_mutex::scoped_lock g(mut); -#endif -     if(next) -      { -         mem_block_node* result = next; -         next = next->next; -         --cached_blocks; -         return result; -      } -      return ::operator new(BOOST_REGEX_BLOCKSIZE); -   } -   void put(void* p) -   { -#ifdef BOOST_HAS_THREADS -      boost::static_mutex::scoped_lock g(mut); -#endif -      if(cached_blocks >= BOOST_REGEX_MAX_CACHE_BLOCKS) -      { -         ::operator delete(p); -      } -      else -      { -         mem_block_node* old = static_cast<mem_block_node*>(p); -         old->next = next; -         next = old; -         ++cached_blocks; -      } -   } -}; - -extern mem_block_cache block_cache; - -} -} // namespace boost - -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif - -#endif - diff --git a/3rdParty/Boost/boost/regex/v4/perl_matcher.hpp b/3rdParty/Boost/boost/regex/v4/perl_matcher.hpp deleted file mode 100644 index 33afe6e..0000000 --- a/3rdParty/Boost/boost/regex/v4/perl_matcher.hpp +++ /dev/null @@ -1,556 +0,0 @@ -/* - * - * Copyright (c) 2002 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ - -#ifndef BOOST_REGEX_MATCHER_HPP -#define BOOST_REGEX_MATCHER_HPP - -#include <boost/regex/v4/iterator_category.hpp> - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#ifdef BOOST_MSVC -#  pragma warning(push) -#  pragma warning(disable: 4800) -#endif - -namespace boost{ -namespace re_detail{ - -// -// error checking API: -// -BOOST_REGEX_DECL void BOOST_REGEX_CALL verify_options(boost::regex_constants::syntax_option_type ef, match_flag_type mf); -// -// function can_start: -// -template <class charT> -inline bool can_start(charT c, const unsigned char* map, unsigned char mask) -{ -   return ((c < static_cast<charT>(0)) ? true : ((c >= static_cast<charT>(1 << CHAR_BIT)) ? true : map[c] & mask)); -} -inline bool can_start(char c, const unsigned char* map, unsigned char mask) -{ -   return map[(unsigned char)c] & mask; -} -inline bool can_start(signed char c, const unsigned char* map, unsigned char mask) -{ -   return map[(unsigned char)c] & mask; -} -inline bool can_start(unsigned char c, const unsigned char* map, unsigned char mask) -{ -   return map[c] & mask; -} -inline bool can_start(unsigned short c, const unsigned char* map, unsigned char mask) -{ -   return ((c >= (1 << CHAR_BIT)) ? true : map[c] & mask); -} -#if !defined(__hpux) // WCHAR_MIN not usable in pp-directives. -#if defined(WCHAR_MIN) && (WCHAR_MIN == 0) && !defined(BOOST_NO_INTRINSIC_WCHAR_T) -inline bool can_start(wchar_t c, const unsigned char* map, unsigned char mask) -{ -   return ((c >= static_cast<wchar_t>(1u << CHAR_BIT)) ? true : map[c] & mask); -} -#endif -#endif -#if !defined(BOOST_NO_INTRINSIC_WCHAR_T) -inline bool can_start(unsigned int c, const unsigned char* map, unsigned char mask) -{ -   return (((c >= static_cast<unsigned int>(1u << CHAR_BIT)) ? true : map[c] & mask)); -} -#endif - - -// -// Unfortunately Rogue Waves standard library appears to have a bug -// in std::basic_string::compare that results in eroneous answers -// in some cases (tested with Borland C++ 5.1, Rogue Wave lib version -// 0x020101) the test case was: -// {39135,0} < {0xff,0} -// which succeeds when it should not. -// -#ifndef _RWSTD_VER -#if !BOOST_WORKAROUND(BOOST_MSVC, < 1310) -template <class C, class T, class A> -inline int string_compare(const std::basic_string<C,T,A>& s, const C* p) -{  -   if(0 == *p) -   { -      if(s.empty() || ((s.size() == 1) && (s[0] == 0))) -         return 0; -   } -   return s.compare(p);  -} -#endif -#else -#if !BOOST_WORKAROUND(BOOST_MSVC, < 1310) -template <class C, class T, class A> -inline int string_compare(const std::basic_string<C,T,A>& s, const C* p) -{  -   if(0 == *p) -   { -      if(s.empty() || ((s.size() == 1) && (s[0] == 0))) -         return 0; -   } -   return s.compare(p);  -} -#endif -inline int string_compare(const std::string& s, const char* p) -{ return std::strcmp(s.c_str(), p); } -# ifndef BOOST_NO_WREGEX -inline int string_compare(const std::wstring& s, const wchar_t* p) -{ return std::wcscmp(s.c_str(), p); } -#endif -#endif -template <class Seq, class C> -inline int string_compare(const Seq& s, const C* p) -{ -   std::size_t i = 0; -   while((i < s.size()) && (p[i] == s[i])) -   { -      ++i; -   } -   return (i == s.size()) ? -p[i] : s[i] - p[i]; -} -# define STR_COMP(s,p) string_compare(s,p) - -template<class charT> -inline const charT* re_skip_past_null(const charT* p) -{ -  while (*p != static_cast<charT>(0)) ++p; -  return ++p; -} - -template <class iterator, class charT, class traits_type, class char_classT> -iterator BOOST_REGEX_CALL re_is_set_member(iterator next,  -                          iterator last,  -                          const re_set_long<char_classT>* set_,  -                          const regex_data<charT, traits_type>& e, bool icase) -{    -   const charT* p = reinterpret_cast<const charT*>(set_+1); -   iterator ptr; -   unsigned int i; -   //bool icase = e.m_flags & regex_constants::icase; - -   if(next == last) return next; - -   typedef typename traits_type::string_type traits_string_type; -   const ::boost::regex_traits_wrapper<traits_type>& traits_inst = *(e.m_ptraits); -    -   // dwa 9/13/00 suppress incorrect MSVC warning - it claims this is never -   // referenced -   (void)traits_inst; - -   // try and match a single character, could be a multi-character -   // collating element... -   for(i = 0; i < set_->csingles; ++i) -   { -      ptr = next; -      if(*p == static_cast<charT>(0)) -      { -         // treat null string as special case: -         if(traits_inst.translate(*ptr, icase) != *p) -         { -            while(*p == static_cast<charT>(0))++p; -            continue; -         } -         return set_->isnot ? next : (ptr == next) ? ++next : ptr; -      } -      else -      { -         while(*p && (ptr != last)) -         { -            if(traits_inst.translate(*ptr, icase) != *p) -               break; -            ++p; -            ++ptr; -         } - -         if(*p == static_cast<charT>(0)) // if null we've matched -            return set_->isnot ? next : (ptr == next) ? ++next : ptr; - -         p = re_skip_past_null(p);     // skip null -      } -   } - -   charT col = traits_inst.translate(*next, icase); - - -   if(set_->cranges || set_->cequivalents) -   { -      traits_string_type s1; -      // -      // try and match a range, NB only a single character can match -      if(set_->cranges) -      { -         if((e.m_flags & regex_constants::collate) == 0) -            s1.assign(1, col); -         else -         { -            charT a[2] = { col, charT(0), }; -            s1 = traits_inst.transform(a, a + 1); -         } -         for(i = 0; i < set_->cranges; ++i) -         { -            if(STR_COMP(s1, p) >= 0) -            { -               do{ ++p; }while(*p); -               ++p; -               if(STR_COMP(s1, p) <= 0) -                  return set_->isnot ? next : ++next; -            } -            else -            { -               // skip first string -               do{ ++p; }while(*p); -               ++p; -            } -            // skip second string -            do{ ++p; }while(*p); -            ++p; -         } -      } -      // -      // try and match an equivalence class, NB only a single character can match -      if(set_->cequivalents) -      { -         charT a[2] = { col, charT(0), }; -         s1 = traits_inst.transform_primary(a, a +1); -         for(i = 0; i < set_->cequivalents; ++i) -         { -            if(STR_COMP(s1, p) == 0) -               return set_->isnot ? next : ++next; -            // skip string -            do{ ++p; }while(*p); -            ++p; -         } -      } -   } -   if(traits_inst.isctype(col, set_->cclasses) == true) -      return set_->isnot ? next : ++next; -   if((set_->cnclasses != 0) && (traits_inst.isctype(col, set_->cnclasses) == false)) -      return set_->isnot ? next : ++next; -   return set_->isnot ? ++next : next; -} - -template <class BidiIterator> -class repeater_count -{ -   repeater_count** stack; -   repeater_count* next; -   int state_id; -   std::size_t count;        // the number of iterations so far -   BidiIterator start_pos;   // where the last repeat started -public: -   repeater_count(repeater_count** s) -   { -      stack = s; -      next = 0; -      state_id = -1; -      count = 0; -   } -   repeater_count(int i, repeater_count** s, BidiIterator start) -      : start_pos(start) -   { -      state_id = i; -      stack = s; -      next = *stack; -      *stack = this; -      if(state_id > next->state_id) -         count = 0; -      else -      { -         repeater_count* p = next; -         while(p->state_id != state_id) -            p = p->next; -         count = p->count; -         start_pos = p->start_pos; -      } -   } -   ~repeater_count() -   { -      *stack = next; -   } -   std::size_t get_count() { return count; } -   int get_id() { return state_id; } -   std::size_t operator++() { return ++count; } -   bool check_null_repeat(const BidiIterator& pos, std::size_t max) -   { -      // this is called when we are about to start a new repeat, -      // if the last one was NULL move our count to max, -      // otherwise save the current position. -      bool result = (count == 0) ? false : (pos == start_pos); -      if(result) -         count = max; -      else -         start_pos = pos; -      return result; -   } -}; - -struct saved_state; - -enum saved_state_type -{ -   saved_type_end = 0, -   saved_type_paren = 1, -   saved_type_recurse = 2, -   saved_type_assertion = 3, -   saved_state_alt = 4, -   saved_state_repeater_count = 5, -   saved_state_extra_block = 6, -   saved_state_greedy_single_repeat = 7, -   saved_state_rep_slow_dot = 8, -   saved_state_rep_fast_dot = 9, -   saved_state_rep_char = 10, -   saved_state_rep_short_set = 11, -   saved_state_rep_long_set = 12, -   saved_state_non_greedy_long_repeat = 13,  -   saved_state_count = 14 -}; - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable : 4251 4231 4660) -#endif - -template <class BidiIterator, class Allocator, class traits> -class perl_matcher -{ -public: -   typedef typename traits::char_type char_type; -   typedef perl_matcher<BidiIterator, Allocator, traits> self_type; -   typedef bool (self_type::*matcher_proc_type)(void); -   typedef std::size_t traits_size_type; -   typedef typename is_byte<char_type>::width_type width_type; -   typedef typename regex_iterator_traits<BidiIterator>::difference_type difference_type; - -   perl_matcher(BidiIterator first, BidiIterator end,  -      match_results<BidiIterator, Allocator>& what,  -      const basic_regex<char_type, traits>& e, -      match_flag_type f, -      BidiIterator l_base) -      :  m_result(what), base(first), last(end),  -         position(first), backstop(l_base), re(e), traits_inst(e.get_traits()),  -         m_independent(false), next_count(&rep_obj), rep_obj(&next_count) -   { -      construct_init(e, f); -   } - -   bool match(); -   bool find(); - -   void setf(match_flag_type f) -   { m_match_flags |= f; } -   void unsetf(match_flag_type f) -   { m_match_flags &= ~f; } - -private: -   void construct_init(const basic_regex<char_type, traits>& e, match_flag_type f); - -   bool find_imp(); -   bool match_imp(); -#ifdef BOOST_REGEX_HAS_MS_STACK_GUARD -   typedef bool (perl_matcher::*protected_proc_type)(); -   bool protected_call(protected_proc_type); -#endif -   void estimate_max_state_count(std::random_access_iterator_tag*); -   void estimate_max_state_count(void*); -   bool match_prefix(); -   bool match_all_states(); - -   // match procs, stored in s_match_vtable: -   bool match_startmark(); -   bool match_endmark(); -   bool match_literal(); -   bool match_start_line(); -   bool match_end_line(); -   bool match_wild(); -   bool match_match(); -   bool match_word_boundary(); -   bool match_within_word(); -   bool match_word_start(); -   bool match_word_end(); -   bool match_buffer_start(); -   bool match_buffer_end(); -   bool match_backref(); -   bool match_long_set(); -   bool match_set(); -   bool match_jump(); -   bool match_alt(); -   bool match_rep(); -   bool match_combining(); -   bool match_soft_buffer_end(); -   bool match_restart_continue(); -   bool match_long_set_repeat(); -   bool match_set_repeat(); -   bool match_char_repeat(); -   bool match_dot_repeat_fast(); -   bool match_dot_repeat_slow(); -   bool match_backstep(); -   bool match_assert_backref(); -   bool match_toggle_case(); -#ifdef BOOST_REGEX_RECURSIVE -   bool backtrack_till_match(std::size_t count); -#endif - -   // find procs stored in s_find_vtable: -   bool find_restart_any(); -   bool find_restart_word(); -   bool find_restart_line(); -   bool find_restart_buf(); -   bool find_restart_lit(); - -private: -   // final result structure to be filled in: -   match_results<BidiIterator, Allocator>& m_result; -   // temporary result for POSIX matches: -   scoped_ptr<match_results<BidiIterator, Allocator> > m_temp_match; -   // pointer to actual result structure to fill in: -   match_results<BidiIterator, Allocator>* m_presult; -   // start of sequence being searched: -   BidiIterator base; -   // end of sequence being searched: -   BidiIterator last;  -   // current character being examined: -   BidiIterator position; -   // where to restart next search after failed match attempt: -   BidiIterator restart; -   // where the current search started from, acts as base for $` during grep: -   BidiIterator search_base; -   // how far we can go back when matching lookbehind: -   BidiIterator backstop; -   // the expression being examined: -   const basic_regex<char_type, traits>& re; -   // the expression's traits class: -   const ::boost::regex_traits_wrapper<traits>& traits_inst; -   // the next state in the machine being matched: -   const re_syntax_base* pstate; -   // matching flags in use: -   match_flag_type m_match_flags; -   // how many states we have examined so far: -   boost::uintmax_t state_count; -   // max number of states to examine before giving up: -   boost::uintmax_t max_state_count; -   // whether we should ignore case or not: -   bool icase; -   // set to true when (position == last), indicates that we may have a partial match: -   bool m_has_partial_match; -   // set to true whenever we get a match: -   bool m_has_found_match; -   // set to true whenever we're inside an independent sub-expression: -   bool m_independent; -   // the current repeat being examined: -   repeater_count<BidiIterator>* next_count; -   // the first repeat being examined (top of linked list): -   repeater_count<BidiIterator> rep_obj; -   // the mask to pass when matching word boundaries: -   typename traits::char_class_type m_word_mask; -   // the bitmask to use when determining whether a match_any matches a newline or not: -   unsigned char match_any_mask; - -#ifdef BOOST_REGEX_NON_RECURSIVE -   // -   // additional members for non-recursive version: -   // -   typedef bool (self_type::*unwind_proc_type)(bool); - -   void extend_stack(); -   bool unwind(bool); -   bool unwind_end(bool); -   bool unwind_paren(bool); -   bool unwind_recursion_stopper(bool); -   bool unwind_assertion(bool); -   bool unwind_alt(bool); -   bool unwind_repeater_counter(bool); -   bool unwind_extra_block(bool); -   bool unwind_greedy_single_repeat(bool); -   bool unwind_slow_dot_repeat(bool); -   bool unwind_fast_dot_repeat(bool); -   bool unwind_char_repeat(bool); -   bool unwind_short_set_repeat(bool); -   bool unwind_long_set_repeat(bool); -   bool unwind_non_greedy_repeat(bool); -   void destroy_single_repeat(); -   void push_matched_paren(int index, const sub_match<BidiIterator>& sub); -   void push_recursion_stopper(); -   void push_assertion(const re_syntax_base* ps, bool positive); -   void push_alt(const re_syntax_base* ps); -   void push_repeater_count(int i, repeater_count<BidiIterator>** s); -   void push_single_repeat(std::size_t c, const re_repeat* r, BidiIterator last_position, int state_id); -   void push_non_greedy_repeat(const re_syntax_base* ps); - - -   // pointer to base of stack: -   saved_state* m_stack_base; -   // pointer to current stack position: -   saved_state* m_backup_state; -   // determines what value to return when unwinding from recursion, -   // allows for mixed recursive/non-recursive algorithm: -   bool m_recursive_result; -   // how many memory blocks have we used up?: -   unsigned used_block_count; -#endif - -   // these operations aren't allowed, so are declared private, -   // bodies are provided to keep explicit-instantiation requests happy: -   perl_matcher& operator=(const perl_matcher&) -   { -      return *this; -   } -   perl_matcher(const perl_matcher& that) -      : m_result(that.m_result), re(that.re), traits_inst(that.traits_inst), rep_obj(0) {} -}; - -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -} // namespace re_detail - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -} // namespace boost - -#ifdef BOOST_MSVC -#  pragma warning(pop) -#endif - -// -// include the implementation of perl_matcher: -// -#ifdef BOOST_REGEX_RECURSIVE -#include <boost/regex/v4/perl_matcher_recursive.hpp> -#else -#include <boost/regex/v4/perl_matcher_non_recursive.hpp> -#endif -// this one has to be last: -#include <boost/regex/v4/perl_matcher_common.hpp> - -#endif - diff --git a/3rdParty/Boost/boost/regex/v4/perl_matcher_common.hpp b/3rdParty/Boost/boost/regex/v4/perl_matcher_common.hpp deleted file mode 100644 index 399caa3..0000000 --- a/3rdParty/Boost/boost/regex/v4/perl_matcher_common.hpp +++ /dev/null @@ -1,971 +0,0 @@ -/* - * - * Copyright (c) 2002 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ - - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         perl_matcher_common.cpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Definitions of perl_matcher member functions that are  -  *                common to both the recursive and non-recursive versions. -  */ - -#ifndef BOOST_REGEX_V4_PERL_MATCHER_COMMON_HPP -#define BOOST_REGEX_V4_PERL_MATCHER_COMMON_HPP - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#ifdef __BORLANDC__ -#  pragma option push -w-8008 -w-8066 -#endif -#ifdef BOOST_MSVC -#  pragma warning(push) -#  pragma warning(disable: 4800) -#endif - -namespace boost{ -namespace re_detail{ - -template <class BidiIterator, class Allocator, class traits> -void perl_matcher<BidiIterator, Allocator, traits>::construct_init(const basic_regex<char_type, traits>& e, match_flag_type f) -{  -   typedef typename regex_iterator_traits<BidiIterator>::iterator_category category; -   typedef typename basic_regex<char_type, traits>::flag_type expression_flag_type; -    -   if(e.empty()) -   { -      // precondition failure: e is not a valid regex. -      std::invalid_argument ex("Invalid regular expression object"); -      boost::throw_exception(ex); -   } -   pstate = 0; -   m_match_flags = f; -   estimate_max_state_count(static_cast<category*>(0)); -   expression_flag_type re_f = re.flags(); -   icase = re_f & regex_constants::icase; -   if(!(m_match_flags & (match_perl|match_posix))) -   { -      if((re_f & (regbase::main_option_type|regbase::no_perl_ex)) == 0) -         m_match_flags |= match_perl; -      else if((re_f & (regbase::main_option_type|regbase::emacs_ex)) == (regbase::basic_syntax_group|regbase::emacs_ex)) -         m_match_flags |= match_perl; -      else -         m_match_flags |= match_posix; -   } -   if(m_match_flags & match_posix) -   { -      m_temp_match.reset(new match_results<BidiIterator, Allocator>()); -      m_presult = m_temp_match.get(); -   } -   else -      m_presult = &m_result; -#ifdef BOOST_REGEX_NON_RECURSIVE -   m_stack_base = 0; -   m_backup_state = 0; -#endif -   // find the value to use for matching word boundaries: -   m_word_mask = re.get_data().m_word_mask;  -   // find bitmask to use for matching '.': -   match_any_mask = static_cast<unsigned char>((f & match_not_dot_newline) ? re_detail::test_not_newline : re_detail::test_newline); -} - -template <class BidiIterator, class Allocator, class traits> -void perl_matcher<BidiIterator, Allocator, traits>::estimate_max_state_count(std::random_access_iterator_tag*) -{ -   // -   // How many states should we allow our machine to visit before giving up? -   // This is a heuristic: it takes the greater of O(N^2) and O(NS^2) -   // where N is the length of the string, and S is the number of states -   // in the machine.  It's tempting to up this to O(N^2S) or even O(N^2S^2) -   // but these take unreasonably amounts of time to bale out in pathological -   // cases. -   // -   // Calculate NS^2 first: -   // -   static const boost::uintmax_t k = 100000; -   boost::uintmax_t dist = boost::re_detail::distance(base, last); -   if(dist == 0) -      dist = 1; -   boost::uintmax_t states = re.size(); -   if(states == 0) -      states = 1; -   states *= states; -   if((std::numeric_limits<boost::uintmax_t>::max)() / dist < states) -   { -      max_state_count = (std::numeric_limits<boost::uintmax_t>::max)() - 2; -      return; -   } -   states *= dist; -   if((std::numeric_limits<boost::uintmax_t>::max)() - k < states) -   { -      max_state_count = (std::numeric_limits<boost::uintmax_t>::max)() - 2; -      return; -   } -   states += k; - -   max_state_count = states; - -   // -   // Now calculate N^2: -   // -   states = dist; -   if((std::numeric_limits<boost::uintmax_t>::max)() / dist < states) -   { -      max_state_count = (std::numeric_limits<boost::uintmax_t>::max)() - 2; -      return; -   } -   states *= dist; -   if((std::numeric_limits<boost::uintmax_t>::max)() - k < states) -   { -      max_state_count = (std::numeric_limits<boost::uintmax_t>::max)() - 2; -      return; -   } -   states += k; -   // -   // N^2 can be a very large number indeed, to prevent things getting out -   // of control, cap the max states: -   // -   if(states > BOOST_REGEX_MAX_STATE_COUNT) -      states = BOOST_REGEX_MAX_STATE_COUNT; -   // -   // If (the possibly capped) N^2 is larger than our first estimate, -   // use this instead: -   // -   if(states > max_state_count) -      max_state_count = states; -} - -template <class BidiIterator, class Allocator, class traits> -inline void perl_matcher<BidiIterator, Allocator, traits>::estimate_max_state_count(void*) -{ -   // we don't know how long the sequence is: -   max_state_count = BOOST_REGEX_MAX_STATE_COUNT; -} - -#ifdef BOOST_REGEX_HAS_MS_STACK_GUARD -template <class BidiIterator, class Allocator, class traits> -inline bool perl_matcher<BidiIterator, Allocator, traits>::protected_call( -   protected_proc_type proc) -{ -   ::boost::re_detail::concrete_protected_call -      <perl_matcher<BidiIterator, Allocator, traits> > -      obj(this, proc); -   return obj.execute(); - -} -#endif - -template <class BidiIterator, class Allocator, class traits> -inline bool perl_matcher<BidiIterator, Allocator, traits>::match() -{ -#ifdef BOOST_REGEX_HAS_MS_STACK_GUARD -   return protected_call(&perl_matcher<BidiIterator, Allocator, traits>::match_imp); -#else -   return match_imp(); -#endif -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_imp() -{ -   // initialise our stack if we are non-recursive: -#ifdef BOOST_REGEX_NON_RECURSIVE -   save_state_init init(&m_stack_base, &m_backup_state); -   used_block_count = BOOST_REGEX_MAX_BLOCKS; -#if !defined(BOOST_NO_EXCEPTIONS) -   try{ -#endif -#endif - -   // reset our state machine: -   position = base; -   search_base = base; -   state_count = 0; -   m_match_flags |= regex_constants::match_all; -   m_presult->set_size((m_match_flags & match_nosubs) ? 1 : re.mark_count(), search_base, last); -   m_presult->set_base(base); -   if(m_match_flags & match_posix) -      m_result = *m_presult; -   verify_options(re.flags(), m_match_flags); -   if(0 == match_prefix()) -      return false; -   return m_result[0].second == last; - -#if defined(BOOST_REGEX_NON_RECURSIVE) && !defined(BOOST_NO_EXCEPTIONS) -   } -   catch(...) -   { -      // unwind all pushed states, apart from anything else this -      // ensures that all the states are correctly destructed -      // not just the memory freed. -      while(unwind(true)){} -      throw; -   } -#endif -} - -template <class BidiIterator, class Allocator, class traits> -inline bool perl_matcher<BidiIterator, Allocator, traits>::find() -{ -#ifdef BOOST_REGEX_HAS_MS_STACK_GUARD -   return protected_call(&perl_matcher<BidiIterator, Allocator, traits>::find_imp); -#else -   return find_imp(); -#endif -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::find_imp() -{ -   static matcher_proc_type const s_find_vtable[7] =  -   { -      &perl_matcher<BidiIterator, Allocator, traits>::find_restart_any, -      &perl_matcher<BidiIterator, Allocator, traits>::find_restart_word, -      &perl_matcher<BidiIterator, Allocator, traits>::find_restart_line, -      &perl_matcher<BidiIterator, Allocator, traits>::find_restart_buf, -      &perl_matcher<BidiIterator, Allocator, traits>::match_prefix, -      &perl_matcher<BidiIterator, Allocator, traits>::find_restart_lit, -      &perl_matcher<BidiIterator, Allocator, traits>::find_restart_lit, -   }; - -   // initialise our stack if we are non-recursive: -#ifdef BOOST_REGEX_NON_RECURSIVE -   save_state_init init(&m_stack_base, &m_backup_state); -   used_block_count = BOOST_REGEX_MAX_BLOCKS; -#if !defined(BOOST_NO_EXCEPTIONS) -   try{ -#endif -#endif - -   state_count = 0; -   if((m_match_flags & regex_constants::match_init) == 0) -   { -      // reset our state machine: -      search_base = position = base; -      pstate = re.get_first_state(); -      m_presult->set_size((m_match_flags & match_nosubs) ? 1 : re.mark_count(), base, last); -      m_presult->set_base(base); -      m_match_flags |= regex_constants::match_init; -   } -   else -   { -      // start again: -      search_base = position = m_result[0].second; -      // If last match was null and match_not_null was not set then increment -      // our start position, otherwise we go into an infinite loop: -      if(((m_match_flags & match_not_null) == 0) && (m_result.length() == 0)) -      { -         if(position == last) -            return false; -         else  -            ++position; -      } -      // reset $` start: -      m_presult->set_size((m_match_flags & match_nosubs) ? 1 : re.mark_count(), search_base, last); -      //if((base != search_base) && (base == backstop)) -      //   m_match_flags |= match_prev_avail; -   } -   if(m_match_flags & match_posix) -   { -      m_result.set_size(re.mark_count(), base, last); -      m_result.set_base(base); -   } - -   verify_options(re.flags(), m_match_flags); -   // find out what kind of expression we have: -   unsigned type = (m_match_flags & match_continuous) ?  -      static_cast<unsigned int>(regbase::restart_continue)  -         : static_cast<unsigned int>(re.get_restart_type()); - -   // call the appropriate search routine: -   matcher_proc_type proc = s_find_vtable[type]; -   return (this->*proc)(); - -#if defined(BOOST_REGEX_NON_RECURSIVE) && !defined(BOOST_NO_EXCEPTIONS) -   } -   catch(...) -   { -      // unwind all pushed states, apart from anything else this -      // ensures that all the states are correctly destructed -      // not just the memory freed. -      while(unwind(true)){} -      throw; -   } -#endif -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_prefix() -{ -   m_has_partial_match = false; -   m_has_found_match = false; -   pstate = re.get_first_state(); -   m_presult->set_first(position); -   restart = position; -   match_all_states(); -   if(!m_has_found_match && m_has_partial_match && (m_match_flags & match_partial)) -   { -      m_has_found_match = true; -      m_presult->set_second(last, 0, false); -      position = last; -   } -#ifdef BOOST_REGEX_MATCH_EXTRA -   if(m_has_found_match && (match_extra & m_match_flags)) -   { -      // -      // we have a match, reverse the capture information: -      // -      for(unsigned i = 0; i < m_presult->size(); ++i) -      { -         typename sub_match<BidiIterator>::capture_sequence_type & seq = ((*m_presult)[i]).get_captures(); -         std::reverse(seq.begin(), seq.end()); -      } -   } -#endif -   if(!m_has_found_match) -      position = restart; // reset search postion -   return m_has_found_match; -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_endmark() -{ -   int index = static_cast<const re_brace*>(pstate)->index; -   if(index > 0) -   { -      if((m_match_flags & match_nosubs) == 0) -         m_presult->set_second(position, index); -   } -   else if((index < 0) && (index != -4)) -   { -      // matched forward lookahead: -      pstate = 0; -      return true; -   } -   pstate = pstate->next.p; -   return true; -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_literal() -{ -   unsigned int len = static_cast<const re_literal*>(pstate)->length; -   const char_type* what = reinterpret_cast<const char_type*>(static_cast<const re_literal*>(pstate) + 1); -   // -   // compare string with what we stored in -   // our records: -   for(unsigned int i = 0; i < len; ++i, ++position) -   { -      if((position == last) || (traits_inst.translate(*position, icase) != what[i])) -         return false; -   } -   pstate = pstate->next.p; -   return true; -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_start_line() -{ -   if(position == backstop) -   { -      if((m_match_flags & match_prev_avail) == 0) -      { -         if((m_match_flags & match_not_bol) == 0) -         { -            pstate = pstate->next.p; -            return true; -         } -         return false; -      } -   } -   else if(m_match_flags & match_single_line) -      return false; - -   // check the previous value character: -   BidiIterator t(position); -   --t; -   if(position != last) -   { -      if(is_separator(*t) && !((*t == static_cast<char_type>('\r')) && (*position == static_cast<char_type>('\n'))) ) -      { -         pstate = pstate->next.p; -         return true; -      } -   } -   else if(is_separator(*t)) -   { -      pstate = pstate->next.p; -      return true; -   } -   return false; -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_end_line() -{ -   if(position != last) -   { -      if(m_match_flags & match_single_line) -         return false; -      // we're not yet at the end so *first is always valid: -      if(is_separator(*position)) -      { -         if((position != backstop) || (m_match_flags & match_prev_avail)) -         { -            // check that we're not in the middle of \r\n sequence -            BidiIterator t(position); -            --t; -            if((*t == static_cast<char_type>('\r')) && (*position == static_cast<char_type>('\n'))) -            { -               return false; -            } -         } -         pstate = pstate->next.p; -         return true; -      } -   } -   else if((m_match_flags & match_not_eol) == 0) -   { -      pstate = pstate->next.p; -      return true; -   } -   return false; -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_wild() -{ -   if(position == last)  -      return false; -   if(is_separator(*position) && ((match_any_mask & static_cast<const re_dot*>(pstate)->mask) == 0)) -      return false; -   if((*position == char_type(0)) && (m_match_flags & match_not_dot_null)) -      return false; -   pstate = pstate->next.p; -   ++position; -   return true; -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_match() -{ -   if((m_match_flags & match_not_null) && (position == (*m_presult)[0].first)) -      return false; -   if((m_match_flags & match_all) && (position != last)) -      return false; -   if((m_match_flags & regex_constants::match_not_initial_null) && (position == search_base)) -      return false; -   m_presult->set_second(position); -   pstate = 0; -   m_has_found_match = true; -   if((m_match_flags & match_posix) == match_posix) -   { -      m_result.maybe_assign(*m_presult); -      if((m_match_flags & match_any) == 0) -         return false; -   } -#ifdef BOOST_REGEX_MATCH_EXTRA -   if(match_extra & m_match_flags) -   { -      for(unsigned i = 0; i < m_presult->size(); ++i) -         if((*m_presult)[i].matched) -            ((*m_presult)[i]).get_captures().push_back((*m_presult)[i]); -   } -#endif -   return true; -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_word_boundary() -{ -   bool b; // indcates whether next character is a word character -   if(position != last) -   { -      // prev and this character must be opposites: -   #if defined(BOOST_REGEX_USE_C_LOCALE) && defined(__GNUC__) && (__GNUC__ == 2) && (__GNUC_MINOR__ < 95) -      b = traits::isctype(*position, m_word_mask); -   #else -      b = traits_inst.isctype(*position, m_word_mask); -   #endif -   } -   else -   { -      b = (m_match_flags & match_not_eow) ? true : false; -   } -   if((position == backstop) && ((m_match_flags & match_prev_avail) == 0)) -   { -      if(m_match_flags & match_not_bow) -         b ^= true; -      else -         b ^= false; -   } -   else -   { -      --position; -      b ^= traits_inst.isctype(*position, m_word_mask); -      ++position; -   } -   if(b) -   { -      pstate = pstate->next.p; -      return true; -   } -   return false; // no match if we get to here... -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_within_word() -{ -   if(position == last) -      return false; -   // both prev and this character must be m_word_mask: -   bool prev = traits_inst.isctype(*position, m_word_mask); -   { -      bool b; -      if((position == backstop) && ((m_match_flags & match_prev_avail) == 0))  -         return false; -      else -      { -         --position; -         b = traits_inst.isctype(*position, m_word_mask); -         ++position; -      } -      if(b == prev) -      { -         pstate = pstate->next.p; -         return true; -      } -   } -   return false; -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_word_start() -{ -   if(position == last) -      return false; // can't be starting a word if we're already at the end of input -   if(!traits_inst.isctype(*position, m_word_mask)) -      return false; // next character isn't a word character -   if((position == backstop) && ((m_match_flags & match_prev_avail) == 0)) -   { -      if(m_match_flags & match_not_bow) -         return false; // no previous input -   } -   else -   { -      // otherwise inside buffer: -      BidiIterator t(position); -      --t; -      if(traits_inst.isctype(*t, m_word_mask)) -         return false; // previous character not non-word -   } -   // OK we have a match: -   pstate = pstate->next.p; -   return true; -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_word_end() -{ -   if((position == backstop) && ((m_match_flags & match_prev_avail) == 0)) -      return false;  // start of buffer can't be end of word -   BidiIterator t(position); -   --t; -   if(traits_inst.isctype(*t, m_word_mask) == false) -      return false;  // previous character wasn't a word character - -   if(position == last) -   { -      if(m_match_flags & match_not_eow) -         return false; // end of buffer but not end of word -   } -   else -   { -      // otherwise inside buffer: -      if(traits_inst.isctype(*position, m_word_mask)) -         return false; // next character is a word character -   } -   pstate = pstate->next.p; -   return true;      // if we fall through to here then we've succeeded -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_buffer_start() -{ -   if((position != backstop) || (m_match_flags & match_not_bob)) -      return false; -   // OK match: -   pstate = pstate->next.p; -   return true; -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_buffer_end() -{ -   if((position != last) || (m_match_flags & match_not_eob)) -      return false; -   // OK match: -   pstate = pstate->next.p; -   return true; -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_backref() -{ -   // -   // Compare with what we previously matched. -   // Note that this succeeds if the backref did not partisipate -   // in the match, this is in line with ECMAScript, but not Perl -   // or PCRE. -   // -   BidiIterator i = (*m_presult)[static_cast<const re_brace*>(pstate)->index].first; -   BidiIterator j = (*m_presult)[static_cast<const re_brace*>(pstate)->index].second; -   while(i != j) -   { -      if((position == last) || (traits_inst.translate(*position, icase) != traits_inst.translate(*i, icase))) -         return false; -      ++i; -      ++position; -   } -   pstate = pstate->next.p; -   return true; -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_long_set() -{ -   typedef typename traits::char_class_type char_class_type; -   // let the traits class do the work: -   if(position == last) -      return false; -   BidiIterator t = re_is_set_member(position, last, static_cast<const re_set_long<char_class_type>*>(pstate), re.get_data(), icase); -   if(t != position) -   { -      pstate = pstate->next.p; -      position = t; -      return true; -   } -   return false; -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_set() -{ -   if(position == last) -      return false; -   if(static_cast<const re_set*>(pstate)->_map[static_cast<unsigned char>(traits_inst.translate(*position, icase))]) -   { -      pstate = pstate->next.p; -      ++position; -      return true; -   } -   return false; -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_jump() -{ -   pstate = static_cast<const re_jump*>(pstate)->alt.p; -   return true; -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_combining() -{ -   if(position == last) -      return false; -   if(is_combining(traits_inst.translate(*position, icase))) -      return false; -   ++position; -   while((position != last) && is_combining(traits_inst.translate(*position, icase))) -      ++position; -   pstate = pstate->next.p; -   return true; -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_soft_buffer_end() -{ -   if(m_match_flags & match_not_eob) -      return false; -   BidiIterator p(position); -   while((p != last) && is_separator(traits_inst.translate(*p, icase)))++p; -   if(p != last) -      return false; -   pstate = pstate->next.p; -   return true; -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_restart_continue() -{ -   if(position == search_base) -   { -      pstate = pstate->next.p; -      return true; -   } -   return false; -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_backstep() -{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4127) -#endif -   if( ::boost::is_random_access_iterator<BidiIterator>::value) -   { -      std::ptrdiff_t maxlen = ::boost::re_detail::distance(backstop, position); -      if(maxlen < static_cast<const re_brace*>(pstate)->index) -         return false; -      std::advance(position, -static_cast<const re_brace*>(pstate)->index); -   } -   else -   { -      int c = static_cast<const re_brace*>(pstate)->index; -      while(c--) -      { -         if(position == backstop) -            return false; -         --position; -      } -   } -   pstate = pstate->next.p; -   return true; -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} - -template <class BidiIterator, class Allocator, class traits> -inline bool perl_matcher<BidiIterator, Allocator, traits>::match_assert_backref() -{ -   // return true if marked sub-expression N has been matched: -   bool result = (*m_presult)[static_cast<const re_brace*>(pstate)->index].matched; -   pstate = pstate->next.p; -   return result; -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_toggle_case() -{ -   // change our case sensitivity: -   this->icase = static_cast<const re_case*>(pstate)->icase; -   pstate = pstate->next.p; -   return true; -} - - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::find_restart_any() -{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4127) -#endif -   const unsigned char* _map = re.get_map(); -   while(true) -   { -      // skip everything we can't match: -      while((position != last) && !can_start(*position, _map, (unsigned char)mask_any) ) -         ++position; -      if(position == last) -      { -         // run out of characters, try a null match if possible: -         if(re.can_be_null()) -            return match_prefix(); -         break; -      } -      // now try and obtain a match: -      if(match_prefix()) -         return true; -      if(position == last) -         return false; -      ++position; -   } -   return false; -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::find_restart_word() -{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4127) -#endif -   // do search optimised for word starts: -   const unsigned char* _map = re.get_map(); -   if((m_match_flags & match_prev_avail) || (position != base)) -      --position; -   else if(match_prefix()) -      return true; -   do -   { -      while((position != last) && traits_inst.isctype(*position, m_word_mask)) -         ++position; -      while((position != last) && !traits_inst.isctype(*position, m_word_mask)) -         ++position; -      if(position == last) -         break; - -      if(can_start(*position, _map, (unsigned char)mask_any) ) -      { -         if(match_prefix()) -            return true; -      } -      if(position == last) -         break; -   } while(true); -   return false; -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::find_restart_line() -{ -   // do search optimised for line starts: -   const unsigned char* _map = re.get_map(); -   if(match_prefix()) -      return true; -   while(position != last) -   { -      while((position != last) && !is_separator(*position)) -         ++position; -      if(position == last) -         return false; -      ++position; -      if(position == last) -      { -         if(re.can_be_null() && match_prefix()) -            return true; -         return false; -      } - -      if( can_start(*position, _map, (unsigned char)mask_any) ) -      { -         if(match_prefix()) -            return true; -      } -      if(position == last) -         return false; -      //++position; -   } -   return false; -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::find_restart_buf() -{ -   if((position == base) && ((m_match_flags & match_not_bob) == 0)) -      return match_prefix(); -   return false; -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::find_restart_lit() -{ -#if 0 -   if(position == last) -      return false; // can't possibly match if we're at the end already - -   unsigned type = (m_match_flags & match_continuous) ?  -      static_cast<unsigned int>(regbase::restart_continue)  -         : static_cast<unsigned int>(re.get_restart_type()); - -   const kmp_info<char_type>* info = access::get_kmp(re); -   int len = info->len; -   const char_type* x = info->pstr; -   int j = 0;  -   while (position != last)  -   { -      while((j > -1) && (x[j] != traits_inst.translate(*position, icase)))  -         j = info->kmp_next[j]; -      ++position; -      ++j; -      if(j >= len)  -      { -         if(type == regbase::restart_fixed_lit) -         { -            std::advance(position, -j); -            restart = position; -            std::advance(restart, len); -            m_result.set_first(position); -            m_result.set_second(restart); -            position = restart; -            return true; -         } -         else -         { -            restart = position; -            std::advance(position, -j); -            if(match_prefix()) -               return true; -            else -            { -               for(int k = 0; (restart != position) && (k < j); ++k, --restart) -                     {} // dwa 10/20/2000 - warning suppression for MWCW -               if(restart != last) -                  ++restart; -               position = restart; -               j = 0;  //we could do better than this... -            } -         } -      } -   } -   if((m_match_flags & match_partial) && (position == last) && j) -   { -      // we need to check for a partial match: -      restart = position; -      std::advance(position, -j); -      return match_prefix(); -   } -#endif -   return false; -} - -} // namespace re_detail - -} // namespace boost - -#ifdef BOOST_MSVC -#  pragma warning(pop) -#endif - -#ifdef __BORLANDC__ -#  pragma option pop -#endif -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif - diff --git a/3rdParty/Boost/boost/regex/v4/perl_matcher_non_recursive.hpp b/3rdParty/Boost/boost/regex/v4/perl_matcher_non_recursive.hpp deleted file mode 100644 index 10e0347..0000000 --- a/3rdParty/Boost/boost/regex/v4/perl_matcher_non_recursive.hpp +++ /dev/null @@ -1,1400 +0,0 @@ -/* - * - * Copyright (c) 2002 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ - - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         perl_matcher_common.cpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Definitions of perl_matcher member functions that are  -  *                specific to the non-recursive implementation. -  */ - -#ifndef BOOST_REGEX_V4_PERL_MATCHER_NON_RECURSIVE_HPP -#define BOOST_REGEX_V4_PERL_MATCHER_NON_RECURSIVE_HPP - -#include <new> - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -#ifdef BOOST_MSVC -#  pragma warning(push) -#  pragma warning(disable: 4800) -#endif - -namespace boost{ -namespace re_detail{ - -template <class T> -inline void inplace_destroy(T* p) -{ -   (void)p;  // warning suppression -   p->~T(); -} - -struct saved_state -{ -   union{ -      unsigned int state_id; -      // this padding ensures correct alignment on 64-bit platforms: -      std::size_t padding1; -      std::ptrdiff_t padding2; -      void* padding3; -   }; -   saved_state(unsigned i) : state_id(i) {} -}; - -template <class BidiIterator> -struct saved_matched_paren : public saved_state -{ -   int index; -   sub_match<BidiIterator> sub; -   saved_matched_paren(int i, const sub_match<BidiIterator>& s) : saved_state(1), index(i), sub(s){}; -}; - -template <class BidiIterator> -struct saved_position : public saved_state -{ -   const re_syntax_base* pstate; -   BidiIterator position; -   saved_position(const re_syntax_base* ps, BidiIterator pos, int i) : saved_state(i), pstate(ps), position(pos){}; -}; - -template <class BidiIterator> -struct saved_assertion : public saved_position<BidiIterator> -{ -   bool positive; -   saved_assertion(bool p, const re_syntax_base* ps, BidiIterator pos)  -      : saved_position<BidiIterator>(ps, pos, saved_type_assertion), positive(p){}; -}; - -template <class BidiIterator> -struct saved_repeater : public saved_state -{ -   repeater_count<BidiIterator> count; -   saved_repeater(int i, repeater_count<BidiIterator>** s, BidiIterator start)  -      : saved_state(saved_state_repeater_count), count(i,s,start){} -}; - -struct saved_extra_block : public saved_state -{ -   saved_state *base, *end; -   saved_extra_block(saved_state* b, saved_state* e)  -      : saved_state(saved_state_extra_block), base(b), end(e) {} -}; - -struct save_state_init -{ -   saved_state** stack; -   save_state_init(saved_state** base, saved_state** end) -      : stack(base) -   { -      *base = static_cast<saved_state*>(get_mem_block()); -      *end = reinterpret_cast<saved_state*>(reinterpret_cast<char*>(*base)+BOOST_REGEX_BLOCKSIZE); -      --(*end); -      (void) new (*end)saved_state(0); -      BOOST_ASSERT(*end > *base); -   } -   ~save_state_init() -   { -      put_mem_block(*stack); -      *stack = 0; -   } -}; - -template <class BidiIterator> -struct saved_single_repeat : public saved_state -{ -   std::size_t count; -   const re_repeat* rep; -   BidiIterator last_position; -   saved_single_repeat(std::size_t c, const re_repeat* r, BidiIterator lp, int arg_id)  -      : saved_state(arg_id), count(c), rep(r), last_position(lp){} -}; - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_all_states() -{ -   static matcher_proc_type const s_match_vtable[29] =  -   { -      (&perl_matcher<BidiIterator, Allocator, traits>::match_startmark), -      &perl_matcher<BidiIterator, Allocator, traits>::match_endmark, -      &perl_matcher<BidiIterator, Allocator, traits>::match_literal, -      &perl_matcher<BidiIterator, Allocator, traits>::match_start_line, -      &perl_matcher<BidiIterator, Allocator, traits>::match_end_line, -      &perl_matcher<BidiIterator, Allocator, traits>::match_wild, -      &perl_matcher<BidiIterator, Allocator, traits>::match_match, -      &perl_matcher<BidiIterator, Allocator, traits>::match_word_boundary, -      &perl_matcher<BidiIterator, Allocator, traits>::match_within_word, -      &perl_matcher<BidiIterator, Allocator, traits>::match_word_start, -      &perl_matcher<BidiIterator, Allocator, traits>::match_word_end, -      &perl_matcher<BidiIterator, Allocator, traits>::match_buffer_start, -      &perl_matcher<BidiIterator, Allocator, traits>::match_buffer_end, -      &perl_matcher<BidiIterator, Allocator, traits>::match_backref, -      &perl_matcher<BidiIterator, Allocator, traits>::match_long_set, -      &perl_matcher<BidiIterator, Allocator, traits>::match_set, -      &perl_matcher<BidiIterator, Allocator, traits>::match_jump, -      &perl_matcher<BidiIterator, Allocator, traits>::match_alt, -      &perl_matcher<BidiIterator, Allocator, traits>::match_rep, -      &perl_matcher<BidiIterator, Allocator, traits>::match_combining, -      &perl_matcher<BidiIterator, Allocator, traits>::match_soft_buffer_end, -      &perl_matcher<BidiIterator, Allocator, traits>::match_restart_continue, -      (::boost::is_random_access_iterator<BidiIterator>::value ? &perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_fast : &perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_slow), -      &perl_matcher<BidiIterator, Allocator, traits>::match_char_repeat, -      &perl_matcher<BidiIterator, Allocator, traits>::match_set_repeat, -      &perl_matcher<BidiIterator, Allocator, traits>::match_long_set_repeat, -      &perl_matcher<BidiIterator, Allocator, traits>::match_backstep, -      &perl_matcher<BidiIterator, Allocator, traits>::match_assert_backref, -      &perl_matcher<BidiIterator, Allocator, traits>::match_toggle_case, -   }; - -   push_recursion_stopper(); -   do{ -      while(pstate) -      { -         matcher_proc_type proc = s_match_vtable[pstate->type]; -         ++state_count; -         if(!(this->*proc)()) -         { -            if(state_count > max_state_count) -               raise_error(traits_inst, regex_constants::error_space); -            if((m_match_flags & match_partial) && (position == last) && (position != search_base)) -               m_has_partial_match = true; -            bool successful_unwind = unwind(false); -            if((m_match_flags & match_partial) && (position == last) && (position != search_base)) -               m_has_partial_match = true; -            if(false == successful_unwind) -               return m_recursive_result; -         } -      } -   }while(unwind(true)); -   return m_recursive_result; -} - -template <class BidiIterator, class Allocator, class traits> -void perl_matcher<BidiIterator, Allocator, traits>::extend_stack() -{ -   if(used_block_count) -   { -      --used_block_count; -      saved_state* stack_base; -      saved_state* backup_state; -      stack_base = static_cast<saved_state*>(get_mem_block()); -      backup_state = reinterpret_cast<saved_state*>(reinterpret_cast<char*>(stack_base)+BOOST_REGEX_BLOCKSIZE); -      saved_extra_block* block = static_cast<saved_extra_block*>(backup_state); -      --block; -      (void) new (block) saved_extra_block(m_stack_base, m_backup_state); -      m_stack_base = stack_base; -      m_backup_state = block; -   } -   else -      raise_error(traits_inst, regex_constants::error_size); -} - -template <class BidiIterator, class Allocator, class traits> -inline void perl_matcher<BidiIterator, Allocator, traits>::push_matched_paren(int index, const sub_match<BidiIterator>& sub) -{ -   BOOST_ASSERT(index); -   saved_matched_paren<BidiIterator>* pmp = static_cast<saved_matched_paren<BidiIterator>*>(m_backup_state); -   --pmp; -   if(pmp < m_stack_base) -   { -      extend_stack(); -      pmp = static_cast<saved_matched_paren<BidiIterator>*>(m_backup_state); -      --pmp; -   } -   (void) new (pmp)saved_matched_paren<BidiIterator>(index, sub); -   m_backup_state = pmp; -} - -template <class BidiIterator, class Allocator, class traits> -inline void perl_matcher<BidiIterator, Allocator, traits>::push_recursion_stopper() -{ -   saved_state* pmp = m_backup_state; -   --pmp; -   if(pmp < m_stack_base) -   { -      extend_stack(); -      pmp = m_backup_state; -      --pmp; -   } -   (void) new (pmp)saved_state(saved_type_recurse); -   m_backup_state = pmp; -} - -template <class BidiIterator, class Allocator, class traits> -inline void perl_matcher<BidiIterator, Allocator, traits>::push_assertion(const re_syntax_base* ps, bool positive) -{ -   saved_assertion<BidiIterator>* pmp = static_cast<saved_assertion<BidiIterator>*>(m_backup_state); -   --pmp; -   if(pmp < m_stack_base) -   { -      extend_stack(); -      pmp = static_cast<saved_assertion<BidiIterator>*>(m_backup_state); -      --pmp; -   } -   (void) new (pmp)saved_assertion<BidiIterator>(positive, ps, position); -   m_backup_state = pmp; -} - -template <class BidiIterator, class Allocator, class traits> -inline void perl_matcher<BidiIterator, Allocator, traits>::push_alt(const re_syntax_base* ps) -{ -   saved_position<BidiIterator>* pmp = static_cast<saved_position<BidiIterator>*>(m_backup_state); -   --pmp; -   if(pmp < m_stack_base) -   { -      extend_stack(); -      pmp = static_cast<saved_position<BidiIterator>*>(m_backup_state); -      --pmp; -   } -   (void) new (pmp)saved_position<BidiIterator>(ps, position, saved_state_alt); -   m_backup_state = pmp; -} - -template <class BidiIterator, class Allocator, class traits> -inline void perl_matcher<BidiIterator, Allocator, traits>::push_non_greedy_repeat(const re_syntax_base* ps) -{ -   saved_position<BidiIterator>* pmp = static_cast<saved_position<BidiIterator>*>(m_backup_state); -   --pmp; -   if(pmp < m_stack_base) -   { -      extend_stack(); -      pmp = static_cast<saved_position<BidiIterator>*>(m_backup_state); -      --pmp; -   } -   (void) new (pmp)saved_position<BidiIterator>(ps, position, saved_state_non_greedy_long_repeat); -   m_backup_state = pmp; -} - -template <class BidiIterator, class Allocator, class traits> -inline void perl_matcher<BidiIterator, Allocator, traits>::push_repeater_count(int i, repeater_count<BidiIterator>** s) -{ -   saved_repeater<BidiIterator>* pmp = static_cast<saved_repeater<BidiIterator>*>(m_backup_state); -   --pmp; -   if(pmp < m_stack_base) -   { -      extend_stack(); -      pmp = static_cast<saved_repeater<BidiIterator>*>(m_backup_state); -      --pmp; -   } -   (void) new (pmp)saved_repeater<BidiIterator>(i, s, position); -   m_backup_state = pmp; -} - -template <class BidiIterator, class Allocator, class traits> -inline void perl_matcher<BidiIterator, Allocator, traits>::push_single_repeat(std::size_t c, const re_repeat* r, BidiIterator last_position, int state_id) -{ -   saved_single_repeat<BidiIterator>* pmp = static_cast<saved_single_repeat<BidiIterator>*>(m_backup_state); -   --pmp; -   if(pmp < m_stack_base) -   { -      extend_stack(); -      pmp = static_cast<saved_single_repeat<BidiIterator>*>(m_backup_state); -      --pmp; -   } -   (void) new (pmp)saved_single_repeat<BidiIterator>(c, r, last_position, state_id); -   m_backup_state = pmp; -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_startmark() -{ -   int index = static_cast<const re_brace*>(pstate)->index; -   switch(index) -   { -   case 0: -      pstate = pstate->next.p; -      break; -   case -1: -   case -2: -      { -         // forward lookahead assert: -         const re_syntax_base* next_pstate = static_cast<const re_jump*>(pstate->next.p)->alt.p->next.p; -         pstate = pstate->next.p->next.p; -         push_assertion(next_pstate, index == -1); -         break; -      } -   case -3: -      { -         // independent sub-expression, currently this is always recursive: -         bool old_independent = m_independent; -         m_independent = true; -         const re_syntax_base* next_pstate = static_cast<const re_jump*>(pstate->next.p)->alt.p->next.p; -         pstate = pstate->next.p->next.p; -         bool r = match_all_states(); -         pstate = next_pstate; -         m_independent = old_independent; -#ifdef BOOST_REGEX_MATCH_EXTRA -         if(r && (m_match_flags & match_extra)) -         { -            // -            // our captures have been stored in *m_presult -            // we need to unpack them, and insert them -            // back in the right order when we unwind the stack: -            // -            match_results<BidiIterator, Allocator> temp_match(*m_presult); -            unsigned i; -            for(i = 0; i < temp_match.size(); ++i) -               (*m_presult)[i].get_captures().clear(); -            // match everything else: -            r = match_all_states(); -            // now place the stored captures back: -            for(i = 0; i < temp_match.size(); ++i) -            { -               typedef typename sub_match<BidiIterator>::capture_sequence_type seq; -               seq& s1 = (*m_presult)[i].get_captures(); -               const seq& s2 = temp_match[i].captures(); -               s1.insert( -                  s1.end(),  -                  s2.begin(),  -                  s2.end()); -            } -         } -#endif -         return r; -      } -   case -4: -      { -      // conditional expression: -      const re_alt* alt = static_cast<const re_alt*>(pstate->next.p); -      BOOST_ASSERT(alt->type == syntax_element_alt); -      pstate = alt->next.p; -      if(pstate->type == syntax_element_assert_backref) -      { -         if(!match_assert_backref()) -            pstate = alt->alt.p; -         break; -      } -      else -      { -         // zero width assertion, have to match this recursively: -         BOOST_ASSERT(pstate->type == syntax_element_startmark); -         bool negated = static_cast<const re_brace*>(pstate)->index == -2; -         BidiIterator saved_position = position; -         const re_syntax_base* next_pstate = static_cast<const re_jump*>(pstate->next.p)->alt.p->next.p; -         pstate = pstate->next.p->next.p; -         bool r = match_all_states(); -         position = saved_position; -         if(negated) -            r = !r; -         if(r) -            pstate = next_pstate; -         else -            pstate = alt->alt.p; -         break; -      } -      } -   default: -   { -      BOOST_ASSERT(index > 0); -      if((m_match_flags & match_nosubs) == 0) -      { -         push_matched_paren(index, (*m_presult)[index]); -         m_presult->set_first(position, index); -      } -      pstate = pstate->next.p; -      break; -   } -   } -   return true; -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_alt() -{ -   bool take_first, take_second; -   const re_alt* jmp = static_cast<const re_alt*>(pstate); - -   // find out which of these two alternatives we need to take: -   if(position == last) -   { -      take_first = jmp->can_be_null & mask_take; -      take_second = jmp->can_be_null & mask_skip; -   } -   else -   { -      take_first = can_start(*position, jmp->_map, (unsigned char)mask_take); -      take_second = can_start(*position, jmp->_map, (unsigned char)mask_skip); -  } - -   if(take_first) -   { -      // we can take the first alternative, -      // see if we need to push next alternative: -      if(take_second) -      { -         push_alt(jmp->alt.p); -      } -      pstate = pstate->next.p; -      return true; -   } -   if(take_second) -   { -      pstate = jmp->alt.p; -      return true; -   } -   return false;  // neither option is possible -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_rep() -{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4127 4244) -#endif -#ifdef __BORLANDC__ -#pragma option push -w-8008 -w-8066 -w-8004 -#endif -   const re_repeat* rep = static_cast<const re_repeat*>(pstate); - -   // find out which of these two alternatives we need to take: -   bool take_first, take_second; -   if(position == last) -   { -      take_first = rep->can_be_null & mask_take; -      take_second = rep->can_be_null & mask_skip; -   } -   else -   { -      take_first = can_start(*position, rep->_map, (unsigned char)mask_take); -      take_second = can_start(*position, rep->_map, (unsigned char)mask_skip); -   } - -   if((m_backup_state->state_id != saved_state_repeater_count)  -      || (static_cast<saved_repeater<BidiIterator>*>(m_backup_state)->count.get_id() != rep->state_id) -      || (next_count->get_id() != rep->state_id)) -   { -      // we're moving to a different repeat from the last -      // one, so set up a counter object: -      push_repeater_count(rep->state_id, &next_count); -   } -   // -   // If we've had at least one repeat already, and the last one  -   // matched the NULL string then set the repeat count to -   // maximum: -   // -   next_count->check_null_repeat(position, rep->max); - -   if(next_count->get_count() < rep->min) -   { -      // we must take the repeat: -      if(take_first) -      { -         // increase the counter: -         ++(*next_count); -         pstate = rep->next.p; -         return true; -      } -      return false; -   } - -   bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);    -   if(greedy) -   { -      // try and take the repeat if we can: -      if((next_count->get_count() < rep->max) && take_first) -      { -         if(take_second) -         { -            // store position in case we fail: -            push_alt(rep->alt.p); -         } -         // increase the counter: -         ++(*next_count); -         pstate = rep->next.p; -         return true; -      } -      else if(take_second) -      { -         pstate = rep->alt.p; -         return true; -      } -      return false; // can't take anything, fail... -   } -   else // non-greedy -   { -      // try and skip the repeat if we can: -      if(take_second) -      { -         if((next_count->get_count() < rep->max) && take_first) -         { -            // store position in case we fail: -            push_non_greedy_repeat(rep->next.p); -         } -         pstate = rep->alt.p; -         return true; -      } -      if((next_count->get_count() < rep->max) && take_first) -      { -         // increase the counter: -         ++(*next_count); -         pstate = rep->next.p; -         return true; -      } -   } -   return false; -#ifdef __BORLANDC__ -#pragma option pop -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_slow() -{ -   unsigned count = 0; -   const re_repeat* rep = static_cast<const re_repeat*>(pstate); -   re_syntax_base* psingle = rep->next.p; -   // match compulsary repeats first: -   while(count < rep->min) -   { -      pstate = psingle; -      if(!match_wild()) -         return false; -      ++count; -   } -   bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);    -   if(greedy) -   { -      // repeat for as long as we can: -      while(count < rep->max) -      { -         pstate = psingle; -         if(!match_wild()) -            break; -         ++count; -      } -      // remember where we got to if this is a leading repeat: -      if((rep->leading) && (count < rep->max)) -         restart = position; -      // push backtrack info if available: -      if(count - rep->min) -         push_single_repeat(count, rep, position, saved_state_greedy_single_repeat); -      // jump to next state: -      pstate = rep->alt.p; -      return true; -   } -   else -   { -      // non-greedy, push state and return true if we can skip: -      if(count < rep->max) -         push_single_repeat(count, rep, position, saved_state_rep_slow_dot); -      pstate = rep->alt.p; -      return (position == last) ? (rep->can_be_null & mask_skip) : can_start(*position, rep->_map, mask_skip); -   } -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_fast() -{ -   if(m_match_flags & match_not_dot_null) -      return match_dot_repeat_slow(); -   if((static_cast<const re_dot*>(pstate->next.p)->mask & match_any_mask) == 0) -      return match_dot_repeat_slow(); - -   const re_repeat* rep = static_cast<const re_repeat*>(pstate); -   bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);    -   unsigned count = static_cast<unsigned>((std::min)(static_cast<unsigned>(::boost::re_detail::distance(position, last)), static_cast<unsigned>(greedy ? rep->max : rep->min))); -   if(rep->min > count) -   { -      position = last; -      return false;  // not enough text left to match -   } -   std::advance(position, count); - -   if(greedy) -   { -      if((rep->leading) && (count < rep->max)) -         restart = position; -      // push backtrack info if available: -      if(count - rep->min) -         push_single_repeat(count, rep, position, saved_state_greedy_single_repeat); -      // jump to next state: -      pstate = rep->alt.p; -      return true; -   } -   else -   { -      // non-greedy, push state and return true if we can skip: -      if(count < rep->max) -         push_single_repeat(count, rep, position, saved_state_rep_fast_dot); -      pstate = rep->alt.p; -      return (position == last) ? (rep->can_be_null & mask_skip) : can_start(*position, rep->_map, mask_skip); -   } -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_char_repeat() -{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4127) -#endif -#ifdef __BORLANDC__ -#pragma option push -w-8008 -w-8066 -w-8004 -#endif -   const re_repeat* rep = static_cast<const re_repeat*>(pstate); -   BOOST_ASSERT(1 == static_cast<const re_literal*>(rep->next.p)->length); -   const char_type what = *reinterpret_cast<const char_type*>(static_cast<const re_literal*>(rep->next.p) + 1); -   std::size_t count = 0; -   // -   // start by working out how much we can skip: -   // -   bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);    -   std::size_t desired = greedy ? rep->max : rep->min; -   if(::boost::is_random_access_iterator<BidiIterator>::value) -   { -      BidiIterator end = position; -      std::advance(end, (std::min)((std::size_t)::boost::re_detail::distance(position, last), desired)); -      BidiIterator origin(position); -      while((position != end) && (traits_inst.translate(*position, icase) == what)) -      { -         ++position; -      } -      count = (unsigned)::boost::re_detail::distance(origin, position); -   } -   else -   { -      while((count < desired) && (position != last) && (traits_inst.translate(*position, icase) == what)) -      { -         ++position; -         ++count; -      } -   } - -   if(count < rep->min) -      return false; - -   if(greedy) -   { -      if((rep->leading) && (count < rep->max)) -         restart = position; -      // push backtrack info if available: -      if(count - rep->min) -         push_single_repeat(count, rep, position, saved_state_greedy_single_repeat); -      // jump to next state: -      pstate = rep->alt.p; -      return true; -   } -   else -   { -      // non-greedy, push state and return true if we can skip: -      if(count < rep->max) -         push_single_repeat(count, rep, position, saved_state_rep_char); -      pstate = rep->alt.p; -      return (position == last) ? (rep->can_be_null & mask_skip) : can_start(*position, rep->_map, mask_skip); -   } -#ifdef __BORLANDC__ -#pragma option pop -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_set_repeat() -{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4127) -#endif -#ifdef __BORLANDC__ -#pragma option push -w-8008 -w-8066 -w-8004 -#endif -   const re_repeat* rep = static_cast<const re_repeat*>(pstate); -   const unsigned char* map = static_cast<const re_set*>(rep->next.p)->_map; -   std::size_t count = 0; -   // -   // start by working out how much we can skip: -   // -   bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);    -   std::size_t desired = greedy ? rep->max : rep->min; -   if(::boost::is_random_access_iterator<BidiIterator>::value) -   { -      BidiIterator end = position; -      std::advance(end, (std::min)((std::size_t)::boost::re_detail::distance(position, last), desired)); -      BidiIterator origin(position); -      while((position != end) && map[static_cast<unsigned char>(traits_inst.translate(*position, icase))]) -      { -         ++position; -      } -      count = (unsigned)::boost::re_detail::distance(origin, position); -   } -   else -   { -      while((count < desired) && (position != last) && map[static_cast<unsigned char>(traits_inst.translate(*position, icase))]) -      { -         ++position; -         ++count; -      } -   } - -   if(count < rep->min) -      return false; - -   if(greedy) -   { -      if((rep->leading) && (count < rep->max)) -         restart = position; -      // push backtrack info if available: -      if(count - rep->min) -         push_single_repeat(count, rep, position, saved_state_greedy_single_repeat); -      // jump to next state: -      pstate = rep->alt.p; -      return true; -   } -   else -   { -      // non-greedy, push state and return true if we can skip: -      if(count < rep->max) -         push_single_repeat(count, rep, position, saved_state_rep_short_set); -      pstate = rep->alt.p; -      return (position == last) ? (rep->can_be_null & mask_skip) : can_start(*position, rep->_map, mask_skip); -   } -#ifdef __BORLANDC__ -#pragma option pop -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_long_set_repeat() -{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4127) -#endif -#ifdef __BORLANDC__ -#pragma option push -w-8008 -w-8066 -w-8004 -#endif -   typedef typename traits::char_class_type mask_type; -   const re_repeat* rep = static_cast<const re_repeat*>(pstate); -   const re_set_long<mask_type>* set = static_cast<const re_set_long<mask_type>*>(pstate->next.p); -   std::size_t count = 0; -   // -   // start by working out how much we can skip: -   // -   bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);    -   std::size_t desired = greedy ? rep->max : rep->min; -   if(::boost::is_random_access_iterator<BidiIterator>::value) -   { -      BidiIterator end = position; -      std::advance(end, (std::min)((std::size_t)::boost::re_detail::distance(position, last), desired)); -      BidiIterator origin(position); -      while((position != end) && (position != re_is_set_member(position, last, set, re.get_data(), icase))) -      { -         ++position; -      } -      count = (unsigned)::boost::re_detail::distance(origin, position); -   } -   else -   { -      while((count < desired) && (position != last) && (position != re_is_set_member(position, last, set, re.get_data(), icase))) -      { -         ++position; -         ++count; -      } -   } - -   if(count < rep->min) -      return false; - -   if(greedy) -   { -      if((rep->leading) && (count < rep->max)) -         restart = position; -      // push backtrack info if available: -      if(count - rep->min) -         push_single_repeat(count, rep, position, saved_state_greedy_single_repeat); -      // jump to next state: -      pstate = rep->alt.p; -      return true; -   } -   else -   { -      // non-greedy, push state and return true if we can skip: -      if(count < rep->max) -         push_single_repeat(count, rep, position, saved_state_rep_long_set); -      pstate = rep->alt.p; -      return (position == last) ? (rep->can_be_null & mask_skip) : can_start(*position, rep->_map, mask_skip); -   } -#ifdef __BORLANDC__ -#pragma option pop -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} - -/**************************************************************************** - -Unwind and associated proceedures follow, these perform what normal stack -unwinding does in the recursive implementation. - -****************************************************************************/ - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::unwind(bool have_match) -{ -   static unwind_proc_type const s_unwind_table[14] =  -   { -      &perl_matcher<BidiIterator, Allocator, traits>::unwind_end, -      &perl_matcher<BidiIterator, Allocator, traits>::unwind_paren, -      &perl_matcher<BidiIterator, Allocator, traits>::unwind_recursion_stopper, -      &perl_matcher<BidiIterator, Allocator, traits>::unwind_assertion, -      &perl_matcher<BidiIterator, Allocator, traits>::unwind_alt, -      &perl_matcher<BidiIterator, Allocator, traits>::unwind_repeater_counter, -      &perl_matcher<BidiIterator, Allocator, traits>::unwind_extra_block, -      &perl_matcher<BidiIterator, Allocator, traits>::unwind_greedy_single_repeat, -      &perl_matcher<BidiIterator, Allocator, traits>::unwind_slow_dot_repeat, -      &perl_matcher<BidiIterator, Allocator, traits>::unwind_fast_dot_repeat, -      &perl_matcher<BidiIterator, Allocator, traits>::unwind_char_repeat, -      &perl_matcher<BidiIterator, Allocator, traits>::unwind_short_set_repeat, -      &perl_matcher<BidiIterator, Allocator, traits>::unwind_long_set_repeat, -      &perl_matcher<BidiIterator, Allocator, traits>::unwind_non_greedy_repeat, -   }; - -   m_recursive_result = have_match; -   unwind_proc_type unwinder; -   bool cont; -   // -   // keep unwinding our stack until we have something to do: -   // -   do -   { -      unwinder = s_unwind_table[m_backup_state->state_id]; -      cont = (this->*unwinder)(m_recursive_result); -   }while(cont); -   // -   // return true if we have more states to try: -   // -   return pstate ? true : false; -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::unwind_end(bool) -{ -   pstate = 0;   // nothing left to search -   return false; // end of stack nothing more to search -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::unwind_paren(bool have_match) -{ -   saved_matched_paren<BidiIterator>* pmp = static_cast<saved_matched_paren<BidiIterator>*>(m_backup_state); -   // restore previous values if no match was found: -   if(have_match == false) -   { -      m_presult->set_first(pmp->sub.first, pmp->index); -      m_presult->set_second(pmp->sub.second, pmp->index, pmp->sub.matched); -   } -#ifdef BOOST_REGEX_MATCH_EXTRA -   // -   // we have a match, push the capture information onto the stack: -   // -   else if(pmp->sub.matched && (match_extra & m_match_flags)) -      ((*m_presult)[pmp->index]).get_captures().push_back(pmp->sub); -#endif -   // unwind stack: -   m_backup_state = pmp+1; -   boost::re_detail::inplace_destroy(pmp); -   return true; // keep looking -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::unwind_recursion_stopper(bool) -{ -   boost::re_detail::inplace_destroy(m_backup_state++); -   pstate = 0;   // nothing left to search -   return false; // end of stack nothing more to search -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::unwind_assertion(bool r) -{ -   saved_assertion<BidiIterator>* pmp = static_cast<saved_assertion<BidiIterator>*>(m_backup_state); -   pstate = pmp->pstate; -   position = pmp->position; -   bool result = (r == pmp->positive); -   m_recursive_result = pmp->positive ? r : !r; -   boost::re_detail::inplace_destroy(pmp++); -   m_backup_state = pmp; -   return !result; // return false if the assertion was matched to stop search. -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::unwind_alt(bool r) -{ -   saved_position<BidiIterator>* pmp = static_cast<saved_position<BidiIterator>*>(m_backup_state); -   if(!r) -   { -      pstate = pmp->pstate; -      position = pmp->position; -   } -   boost::re_detail::inplace_destroy(pmp++); -   m_backup_state = pmp; -   return r;  -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::unwind_repeater_counter(bool) -{ -   saved_repeater<BidiIterator>* pmp = static_cast<saved_repeater<BidiIterator>*>(m_backup_state); -   boost::re_detail::inplace_destroy(pmp++); -   m_backup_state = pmp; -   return true; // keep looking -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::unwind_extra_block(bool) -{ -   saved_extra_block* pmp = static_cast<saved_extra_block*>(m_backup_state); -   void* condemmed = m_stack_base; -   m_stack_base = pmp->base; -   m_backup_state = pmp->end; -   boost::re_detail::inplace_destroy(pmp); -   put_mem_block(condemmed); -   return true; // keep looking -} - -template <class BidiIterator, class Allocator, class traits> -inline void perl_matcher<BidiIterator, Allocator, traits>::destroy_single_repeat() -{ -   saved_single_repeat<BidiIterator>* p = static_cast<saved_single_repeat<BidiIterator>*>(m_backup_state); -   boost::re_detail::inplace_destroy(p++); -   m_backup_state = p; -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::unwind_greedy_single_repeat(bool r) -{ -   saved_single_repeat<BidiIterator>* pmp = static_cast<saved_single_repeat<BidiIterator>*>(m_backup_state); - -   // if we have a match, just discard this state: -   if(r)  -   { -      destroy_single_repeat(); -      return true; -   } - -   const re_repeat* rep = pmp->rep; -   std::size_t count = pmp->count; -   BOOST_ASSERT(rep->next.p != 0); -   BOOST_ASSERT(rep->alt.p != 0); - -   count -= rep->min; -    -   if((m_match_flags & match_partial) && (position == last)) -      m_has_partial_match = true; - -   BOOST_ASSERT(count); -   position = pmp->last_position; - -   // backtrack till we can skip out: -   do -   { -      --position; -      --count; -      ++state_count; -   }while(count && !can_start(*position, rep->_map, mask_skip)); - -   // if we've hit base, destroy this state: -   if(count == 0) -   { -         destroy_single_repeat(); -         if(!can_start(*position, rep->_map, mask_skip)) -            return true; -   } -   else -   { -      pmp->count = count + rep->min; -      pmp->last_position = position; -   } -   pstate = rep->alt.p; -   return false; -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::unwind_slow_dot_repeat(bool r) -{ -   saved_single_repeat<BidiIterator>* pmp = static_cast<saved_single_repeat<BidiIterator>*>(m_backup_state); - -   // if we have a match, just discard this state: -   if(r)  -   { -      destroy_single_repeat(); -      return true; -   } - -   const re_repeat* rep = pmp->rep; -   std::size_t count = pmp->count; -   BOOST_ASSERT(rep->type == syntax_element_dot_rep); -   BOOST_ASSERT(rep->next.p != 0); -   BOOST_ASSERT(rep->alt.p != 0); -   BOOST_ASSERT(rep->next.p->type == syntax_element_wild); - -   BOOST_ASSERT(count < rep->max); -   pstate = rep->next.p; -   position = pmp->last_position; - -   if(position != last) -   { -      // wind forward until we can skip out of the repeat: -      do -      { -         if(!match_wild()) -         { -            // failed repeat match, discard this state and look for another: -            destroy_single_repeat(); -            return true; -         } -         ++count; -         ++state_count; -         pstate = rep->next.p; -      }while((count < rep->max) && (position != last) && !can_start(*position, rep->_map, mask_skip)); -   }    -   if(position == last) -   { -      // can't repeat any more, remove the pushed state:  -      destroy_single_repeat(); -      if((m_match_flags & match_partial) && (position == last) && (position != search_base)) -         m_has_partial_match = true; -      if(0 == (rep->can_be_null & mask_skip)) -         return true; -   } -   else if(count == rep->max) -   { -      // can't repeat any more, remove the pushed state:  -      destroy_single_repeat(); -      if(!can_start(*position, rep->_map, mask_skip)) -         return true; -   } -   else -   { -      pmp->count = count; -      pmp->last_position = position; -   } -   pstate = rep->alt.p; -   return false; -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::unwind_fast_dot_repeat(bool r) -{ -   saved_single_repeat<BidiIterator>* pmp = static_cast<saved_single_repeat<BidiIterator>*>(m_backup_state); - -   // if we have a match, just discard this state: -   if(r)  -   { -      destroy_single_repeat(); -      return true; -   } - -   const re_repeat* rep = pmp->rep; -   std::size_t count = pmp->count; - -   BOOST_ASSERT(count < rep->max); -   position = pmp->last_position; -   if(position != last) -   { - -      // wind forward until we can skip out of the repeat: -      do -      { -         ++position; -         ++count; -         ++state_count; -      }while((count < rep->max) && (position != last) && !can_start(*position, rep->_map, mask_skip)); -   } - -   if(position == last) -   { -      // can't repeat any more, remove the pushed state:  -      destroy_single_repeat(); -      if((m_match_flags & match_partial) && (position == last) && (position != search_base)) -         m_has_partial_match = true; -      if(0 == (rep->can_be_null & mask_skip)) -         return true; -   } -   else if(count == rep->max) -   { -      // can't repeat any more, remove the pushed state:  -      destroy_single_repeat(); -      if(!can_start(*position, rep->_map, mask_skip)) -         return true; -   } -   else -   { -      pmp->count = count; -      pmp->last_position = position; -   } -   pstate = rep->alt.p; -   return false; -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::unwind_char_repeat(bool r) -{ -   saved_single_repeat<BidiIterator>* pmp = static_cast<saved_single_repeat<BidiIterator>*>(m_backup_state); - -   // if we have a match, just discard this state: -   if(r)  -   { -      destroy_single_repeat(); -      return true; -   } - -   const re_repeat* rep = pmp->rep; -   std::size_t count = pmp->count; -   pstate = rep->next.p; -   const char_type what = *reinterpret_cast<const char_type*>(static_cast<const re_literal*>(pstate) + 1); -   position = pmp->last_position; - -   BOOST_ASSERT(rep->type == syntax_element_char_rep); -   BOOST_ASSERT(rep->next.p != 0); -   BOOST_ASSERT(rep->alt.p != 0); -   BOOST_ASSERT(rep->next.p->type == syntax_element_literal); -   BOOST_ASSERT(count < rep->max); - -   if(position != last) -   { -      // wind forward until we can skip out of the repeat: -      do -      { -         if(traits_inst.translate(*position, icase) != what) -         { -            // failed repeat match, discard this state and look for another: -            destroy_single_repeat(); -            return true; -         } -         ++count; -         ++ position; -         ++state_count; -         pstate = rep->next.p; -      }while((count < rep->max) && (position != last) && !can_start(*position, rep->_map, mask_skip)); -   }    -   // remember where we got to if this is a leading repeat: -   if((rep->leading) && (count < rep->max)) -      restart = position; -   if(position == last) -   { -      // can't repeat any more, remove the pushed state:  -      destroy_single_repeat(); -      if((m_match_flags & match_partial) && (position == last) && (position != search_base)) -         m_has_partial_match = true; -      if(0 == (rep->can_be_null & mask_skip)) -         return true; -   } -   else if(count == rep->max) -   { -      // can't repeat any more, remove the pushed state:  -      destroy_single_repeat(); -      if(!can_start(*position, rep->_map, mask_skip)) -         return true; -   } -   else -   { -      pmp->count = count; -      pmp->last_position = position; -   } -   pstate = rep->alt.p; -   return false; -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::unwind_short_set_repeat(bool r) -{ -   saved_single_repeat<BidiIterator>* pmp = static_cast<saved_single_repeat<BidiIterator>*>(m_backup_state); - -   // if we have a match, just discard this state: -   if(r)  -   { -      destroy_single_repeat(); -      return true; -   } - -   const re_repeat* rep = pmp->rep; -   std::size_t count = pmp->count; -   pstate = rep->next.p; -   const unsigned char* map = static_cast<const re_set*>(rep->next.p)->_map; -   position = pmp->last_position; - -   BOOST_ASSERT(rep->type == syntax_element_short_set_rep); -   BOOST_ASSERT(rep->next.p != 0); -   BOOST_ASSERT(rep->alt.p != 0); -   BOOST_ASSERT(rep->next.p->type == syntax_element_set); -   BOOST_ASSERT(count < rep->max); -    -   if(position != last) -   { -      // wind forward until we can skip out of the repeat: -      do -      { -         if(!map[static_cast<unsigned char>(traits_inst.translate(*position, icase))]) -         { -            // failed repeat match, discard this state and look for another: -            destroy_single_repeat(); -            return true; -         } -         ++count; -         ++ position; -         ++state_count; -         pstate = rep->next.p; -      }while((count < rep->max) && (position != last) && !can_start(*position, rep->_map, mask_skip)); -   }    -   // remember where we got to if this is a leading repeat: -   if((rep->leading) && (count < rep->max)) -      restart = position; -   if(position == last) -   { -      // can't repeat any more, remove the pushed state:  -      destroy_single_repeat(); -      if((m_match_flags & match_partial) && (position == last) && (position != search_base)) -         m_has_partial_match = true; -      if(0 == (rep->can_be_null & mask_skip)) -         return true; -   } -   else if(count == rep->max) -   { -      // can't repeat any more, remove the pushed state:  -      destroy_single_repeat(); -      if(!can_start(*position, rep->_map, mask_skip)) -         return true; -   } -   else -   { -      pmp->count = count; -      pmp->last_position = position; -   } -   pstate = rep->alt.p; -   return false; -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::unwind_long_set_repeat(bool r) -{ -   typedef typename traits::char_class_type mask_type; -   saved_single_repeat<BidiIterator>* pmp = static_cast<saved_single_repeat<BidiIterator>*>(m_backup_state); - -   // if we have a match, just discard this state: -   if(r) -   { -      destroy_single_repeat(); -      return true; -   } - -   const re_repeat* rep = pmp->rep; -   std::size_t count = pmp->count; -   pstate = rep->next.p; -   const re_set_long<mask_type>* set = static_cast<const re_set_long<mask_type>*>(pstate); -   position = pmp->last_position; - -   BOOST_ASSERT(rep->type == syntax_element_long_set_rep); -   BOOST_ASSERT(rep->next.p != 0); -   BOOST_ASSERT(rep->alt.p != 0); -   BOOST_ASSERT(rep->next.p->type == syntax_element_long_set); -   BOOST_ASSERT(count < rep->max); - -   if(position != last) -   { -      // wind forward until we can skip out of the repeat: -      do -      { -         if(position == re_is_set_member(position, last, set, re.get_data(), icase)) -         { -            // failed repeat match, discard this state and look for another: -            destroy_single_repeat(); -            return true; -         } -         ++position; -         ++count; -         ++state_count; -         pstate = rep->next.p; -      }while((count < rep->max) && (position != last) && !can_start(*position, rep->_map, mask_skip)); -   }    -   // remember where we got to if this is a leading repeat: -   if((rep->leading) && (count < rep->max)) -      restart = position; -   if(position == last) -   { -      // can't repeat any more, remove the pushed state: -      destroy_single_repeat(); -      if((m_match_flags & match_partial) && (position == last) && (position != search_base)) -         m_has_partial_match = true; -      if(0 == (rep->can_be_null & mask_skip)) -         return true; -   } -   else if(count == rep->max) -   { -      // can't repeat any more, remove the pushed state:  -      destroy_single_repeat(); -      if(!can_start(*position, rep->_map, mask_skip)) -         return true; -   } -   else -   { -      pmp->count = count; -      pmp->last_position = position; -   } -   pstate = rep->alt.p; -   return false; -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::unwind_non_greedy_repeat(bool r) -{ -   saved_position<BidiIterator>* pmp = static_cast<saved_position<BidiIterator>*>(m_backup_state); -   if(!r) -   { -      position = pmp->position; -      pstate = pmp->pstate; -      ++(*next_count); -   } -   boost::re_detail::inplace_destroy(pmp++); -   m_backup_state = pmp; -   return r; -} - -} // namespace re_detail -} // namespace boost - -#ifdef BOOST_MSVC -#  pragma warning(pop) -#endif - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif - - diff --git a/3rdParty/Boost/boost/regex/v4/perl_matcher_recursive.hpp b/3rdParty/Boost/boost/regex/v4/perl_matcher_recursive.hpp deleted file mode 100644 index 68e1aac..0000000 --- a/3rdParty/Boost/boost/regex/v4/perl_matcher_recursive.hpp +++ /dev/null @@ -1,854 +0,0 @@ -/* - * - * Copyright (c) 2002 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ - - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         perl_matcher_common.cpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Definitions of perl_matcher member functions that are  -  *                specific to the recursive implementation. -  */ - -#ifndef BOOST_REGEX_V4_PERL_MATCHER_RECURSIVE_HPP -#define BOOST_REGEX_V4_PERL_MATCHER_RECURSIVE_HPP - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4800) -#endif - -namespace boost{ -namespace re_detail{ - -template <class BidiIterator> -class backup_subex -{ -   int index; -   sub_match<BidiIterator> sub; -public: -   template <class A> -   backup_subex(const match_results<BidiIterator, A>& w, int i) -      : index(i), sub(w[i], false) {} -   template <class A> -   void restore(match_results<BidiIterator, A>& w) -   { -      w.set_first(sub.first, index); -      w.set_second(sub.second, index, sub.matched); -   } -   const sub_match<BidiIterator>& get() { return sub; } -}; - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_all_states() -{ -   static matcher_proc_type const s_match_vtable[29] =  -   { -      (&perl_matcher<BidiIterator, Allocator, traits>::match_startmark), -      &perl_matcher<BidiIterator, Allocator, traits>::match_endmark, -      &perl_matcher<BidiIterator, Allocator, traits>::match_literal, -      &perl_matcher<BidiIterator, Allocator, traits>::match_start_line, -      &perl_matcher<BidiIterator, Allocator, traits>::match_end_line, -      &perl_matcher<BidiIterator, Allocator, traits>::match_wild, -      &perl_matcher<BidiIterator, Allocator, traits>::match_match, -      &perl_matcher<BidiIterator, Allocator, traits>::match_word_boundary, -      &perl_matcher<BidiIterator, Allocator, traits>::match_within_word, -      &perl_matcher<BidiIterator, Allocator, traits>::match_word_start, -      &perl_matcher<BidiIterator, Allocator, traits>::match_word_end, -      &perl_matcher<BidiIterator, Allocator, traits>::match_buffer_start, -      &perl_matcher<BidiIterator, Allocator, traits>::match_buffer_end, -      &perl_matcher<BidiIterator, Allocator, traits>::match_backref, -      &perl_matcher<BidiIterator, Allocator, traits>::match_long_set, -      &perl_matcher<BidiIterator, Allocator, traits>::match_set, -      &perl_matcher<BidiIterator, Allocator, traits>::match_jump, -      &perl_matcher<BidiIterator, Allocator, traits>::match_alt, -      &perl_matcher<BidiIterator, Allocator, traits>::match_rep, -      &perl_matcher<BidiIterator, Allocator, traits>::match_combining, -      &perl_matcher<BidiIterator, Allocator, traits>::match_soft_buffer_end, -      &perl_matcher<BidiIterator, Allocator, traits>::match_restart_continue, -      (::boost::is_random_access_iterator<BidiIterator>::value ? &perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_fast : &perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_slow), -      &perl_matcher<BidiIterator, Allocator, traits>::match_char_repeat, -      &perl_matcher<BidiIterator, Allocator, traits>::match_set_repeat, -      &perl_matcher<BidiIterator, Allocator, traits>::match_long_set_repeat, -      &perl_matcher<BidiIterator, Allocator, traits>::match_backstep, -      &perl_matcher<BidiIterator, Allocator, traits>::match_assert_backref, -      &perl_matcher<BidiIterator, Allocator, traits>::match_toggle_case, -   }; - -   if(state_count > max_state_count) -      raise_error(traits_inst, regex_constants::error_space); -   while(pstate) -   { -      matcher_proc_type proc = s_match_vtable[pstate->type]; -      ++state_count; -      if(!(this->*proc)()) -      { -         if((m_match_flags & match_partial) && (position == last) && (position != search_base)) -            m_has_partial_match = true; -         return 0; -      } -   } -   return true; -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_startmark() -{ -   int index = static_cast<const re_brace*>(pstate)->index; -   bool r = true; -   switch(index) -   { -   case 0: -      pstate = pstate->next.p; -      break; -   case -1: -   case -2: -      { -         // forward lookahead assert: -         BidiIterator old_position(position); -         const re_syntax_base* next_pstate = static_cast<const re_jump*>(pstate->next.p)->alt.p->next.p; -         pstate = pstate->next.p->next.p; -         r = match_all_states(); -         pstate = next_pstate; -         position = old_position; -         if((r && (index != -1)) || (!r && (index != -2))) -            r = false; -         else -            r = true; -         break; -      } -   case -3: -      { -         // independent sub-expression: -         bool old_independent = m_independent; -         m_independent = true; -         const re_syntax_base* next_pstate = static_cast<const re_jump*>(pstate->next.p)->alt.p->next.p; -         pstate = pstate->next.p->next.p; -         r = match_all_states(); -         pstate = next_pstate; -         m_independent = old_independent; -#ifdef BOOST_REGEX_MATCH_EXTRA -         if(r && (m_match_flags & match_extra)) -         { -            // -            // our captures have been stored in *m_presult -            // we need to unpack them, and insert them -            // back in the right order when we unwind the stack: -            // -            unsigned i; -            match_results<BidiIterator, Allocator> tm(*m_presult); -            for(i = 0; i < tm.size(); ++i) -               (*m_presult)[i].get_captures().clear(); -            // match everything else: -            r = match_all_states(); -            // now place the stored captures back: -            for(i = 0; i < tm.size(); ++i) -            { -               typedef typename sub_match<BidiIterator>::capture_sequence_type seq; -               seq& s1 = (*m_presult)[i].get_captures(); -               const seq& s2 = tm[i].captures(); -               s1.insert( -                  s1.end(),  -                  s2.begin(),  -                  s2.end()); -            } -         } -#endif -         break; -      } -   case -4: -      { -      // conditional expression: -      const re_alt* alt = static_cast<const re_alt*>(pstate->next.p); -      BOOST_ASSERT(alt->type == syntax_element_alt); -      pstate = alt->next.p; -      if(pstate->type == syntax_element_assert_backref) -      { -         if(!match_assert_backref()) -            pstate = alt->alt.p; -         break; -      } -      else -      { -         // zero width assertion, have to match this recursively: -         BOOST_ASSERT(pstate->type == syntax_element_startmark); -         bool negated = static_cast<const re_brace*>(pstate)->index == -2; -         BidiIterator saved_position = position; -         const re_syntax_base* next_pstate = static_cast<const re_jump*>(pstate->next.p)->alt.p->next.p; -         pstate = pstate->next.p->next.p; -         bool r = match_all_states(); -         position = saved_position; -         if(negated) -            r = !r; -         if(r) -            pstate = next_pstate; -         else -            pstate = alt->alt.p; -         break; -      } -      } -   default: -   { -      BOOST_ASSERT(index > 0); -      if((m_match_flags & match_nosubs) == 0) -      { -         backup_subex<BidiIterator> sub(*m_presult, index); -         m_presult->set_first(position, index); -         pstate = pstate->next.p; -         r = match_all_states(); -         if(r == false) -            sub.restore(*m_presult); -#ifdef BOOST_REGEX_MATCH_EXTRA -         // -         // we have a match, push the capture information onto the stack: -         // -         else if(sub.get().matched && (match_extra & m_match_flags)) -            ((*m_presult)[index]).get_captures().push_back(sub.get()); -#endif -      } -      else -      { -         pstate = pstate->next.p; -      } -      break; -   } -   } -   return r; -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_alt() -{ -   bool take_first, take_second; -   const re_alt* jmp = static_cast<const re_alt*>(pstate); - -   // find out which of these two alternatives we need to take: -   if(position == last) -   { -      take_first = jmp->can_be_null & mask_take; -      take_second = jmp->can_be_null & mask_skip; -   } -   else -   { -      take_first = can_start(*position, jmp->_map, (unsigned char)mask_take); -      take_second = can_start(*position, jmp->_map, (unsigned char)mask_skip); -  } - -   if(take_first) -   { -      // we can take the first alternative, -      // see if we need to push next alternative: -      if(take_second) -      { -         BidiIterator oldposition(position); -         const re_syntax_base* old_pstate = jmp->alt.p; -         pstate = pstate->next.p; -         if(!match_all_states()) -         { -            pstate = old_pstate; -            position = oldposition; -         } -         return true; -      } -      pstate = pstate->next.p; -      return true; -   } -   if(take_second) -   { -      pstate = jmp->alt.p; -      return true; -   } -   return false;  // neither option is possible -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_rep() -{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4127 4244) -#endif -   const re_repeat* rep = static_cast<const re_repeat*>(pstate); -   // -   // Always copy the repeat count, so that the state is restored -   // when we exit this scope: -   // -   repeater_count<BidiIterator> r(rep->state_id, &next_count, position); -   // -   // If we've had at least one repeat already, and the last one  -   // matched the NULL string then set the repeat count to -   // maximum: -   // -   next_count->check_null_repeat(position, rep->max); - -   // find out which of these two alternatives we need to take: -   bool take_first, take_second; -   if(position == last) -   { -      take_first = rep->can_be_null & mask_take; -      take_second = rep->can_be_null & mask_skip; -   } -   else -   { -      take_first = can_start(*position, rep->_map, (unsigned char)mask_take); -      take_second = can_start(*position, rep->_map, (unsigned char)mask_skip); -   } - -   if(next_count->get_count() < rep->min) -   { -      // we must take the repeat: -      if(take_first) -      { -         // increase the counter: -         ++(*next_count); -         pstate = rep->next.p; -         return match_all_states(); -      } -      return false; -   } -   bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);    -   if(greedy) -   { -      // try and take the repeat if we can: -      if((next_count->get_count() < rep->max) && take_first) -      { -         // store position in case we fail: -         BidiIterator pos = position; -         // increase the counter: -         ++(*next_count); -         pstate = rep->next.p; -         if(match_all_states()) -            return true; -         // failed repeat, reset posistion and fall through for alternative: -         position = pos; -      } -      if(take_second) -      { -         pstate = rep->alt.p; -         return true; -      } -      return false; // can't take anything, fail... -   } -   else // non-greedy -   { -      // try and skip the repeat if we can: -      if(take_second) -      { -         // store position in case we fail: -         BidiIterator pos = position; -         pstate = rep->alt.p; -         if(match_all_states()) -            return true; -         // failed alternative, reset posistion and fall through for repeat: -         position = pos; -      } -      if((next_count->get_count() < rep->max) && take_first) -      { -         // increase the counter: -         ++(*next_count); -         pstate = rep->next.p; -         return match_all_states(); -      } -   } -   return false; -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_slow() -{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4127) -#endif -   unsigned count = 0; -   const re_repeat* rep = static_cast<const re_repeat*>(pstate); -   re_syntax_base* psingle = rep->next.p; -   // match compulsary repeats first: -   while(count < rep->min) -   { -      pstate = psingle; -      if(!match_wild()) -         return false; -      ++count; -   } -   bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);    -   if(greedy) -   { -      // normal repeat: -      while(count < rep->max) -      { -         pstate = psingle; -         if(!match_wild()) -            break; -         ++count; -      } -      if((rep->leading) && (count < rep->max)) -         restart = position; -      pstate = rep; -      return backtrack_till_match(count - rep->min); -   } -   else -   { -      // non-greedy, keep trying till we get a match: -      BidiIterator save_pos; -      do -      { -         if((rep->leading) && (rep->max == UINT_MAX)) -            restart = position; -         pstate = rep->alt.p; -         save_pos = position; -         ++state_count; -         if(match_all_states()) -            return true; -         if(count >= rep->max) -            return false; -         ++count; -         pstate = psingle; -         position = save_pos; -         if(!match_wild()) -            return false; -      }while(true); -   } -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_fast() -{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4127) -#endif -   if(m_match_flags & match_not_dot_null) -      return match_dot_repeat_slow(); -   if((static_cast<const re_dot*>(pstate->next.p)->mask & match_any_mask) == 0) -      return match_dot_repeat_slow(); -   // -   // start by working out how much we can skip: -   // -   const re_repeat* rep = static_cast<const re_repeat*>(pstate); -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4267) -#endif -   bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);    -   std::size_t count = (std::min)(static_cast<std::size_t>(::boost::re_detail::distance(position, last)), static_cast<std::size_t>(greedy ? rep->max : rep->min)); -   if(rep->min > count) -   { -      position = last; -      return false;  // not enough text left to match -   } -   std::advance(position, count); -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -   if((rep->leading) && (count < rep->max) && greedy) -      restart = position; -   if(greedy) -      return backtrack_till_match(count - rep->min); - -   // non-greedy, keep trying till we get a match: -   BidiIterator save_pos; -   do -   { -      while((position != last) && (count < rep->max) && !can_start(*position, rep->_map, mask_skip)) -      { -         ++position; -         ++count; -      } -      if((rep->leading) && (rep->max == UINT_MAX)) -         restart = position; -      pstate = rep->alt.p; -      save_pos = position; -      ++state_count; -      if(match_all_states()) -         return true; -      if(count >= rep->max) -         return false; -      if(save_pos == last) -         return false; -      position = ++save_pos; -      ++count; -   }while(true); -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_char_repeat() -{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4127) -#pragma warning(disable:4267) -#endif -#ifdef __BORLANDC__ -#pragma option push -w-8008 -w-8066 -w-8004 -#endif -   const re_repeat* rep = static_cast<const re_repeat*>(pstate); -   BOOST_ASSERT(1 == static_cast<const re_literal*>(rep->next.p)->length); -   const char_type what = *reinterpret_cast<const char_type*>(static_cast<const re_literal*>(rep->next.p) + 1); -   // -   // start by working out how much we can skip: -   // -   bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);    -   std::size_t count, desired; -   if(::boost::is_random_access_iterator<BidiIterator>::value) -   { -      desired =  -         (std::min)( -            (std::size_t)(greedy ? rep->max : rep->min), -            (std::size_t)::boost::re_detail::distance(position, last)); -      count = desired; -      ++desired; -      if(icase) -      { -         while(--desired && (traits_inst.translate_nocase(*position) == what)) -         { -            ++position; -         } -      } -      else -      { -         while(--desired && (traits_inst.translate(*position) == what)) -         { -            ++position; -         } -      } -      count = count - desired; -   } -   else -   { -      count = 0; -      desired = greedy ? rep->max : rep->min; -      while((count < desired) && (position != last) && (traits_inst.translate(*position, icase) == what)) -      { -         ++position; -         ++count; -      } -   } -   if((rep->leading) && (count < rep->max) && greedy) -      restart = position; -   if(count < rep->min) -      return false; - -   if(greedy) -      return backtrack_till_match(count - rep->min); - -   // non-greedy, keep trying till we get a match: -   BidiIterator save_pos; -   do -   { -      while((position != last) && (count < rep->max) && !can_start(*position, rep->_map, mask_skip)) -      { -         if((traits_inst.translate(*position, icase) == what)) -         { -            ++position; -            ++count; -         } -         else -            return false;  // counldn't repeat even though it was the only option -      } -      if((rep->leading) && (rep->max == UINT_MAX)) -         restart = position; -      pstate = rep->alt.p; -      save_pos = position; -      ++state_count; -      if(match_all_states()) -         return true; -      if(count >= rep->max) -         return false; -      position = save_pos; -      if(position == last) -         return false; -      if(traits_inst.translate(*position, icase) == what) -      { -         ++position; -         ++count; -      } -      else -      { -         return false; -      } -   }while(true); -#ifdef __BORLANDC__ -#pragma option pop -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_set_repeat() -{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4127) -#endif -#ifdef __BORLANDC__ -#pragma option push -w-8008 -w-8066 -w-8004 -#endif -   const re_repeat* rep = static_cast<const re_repeat*>(pstate); -   const unsigned char* map = static_cast<const re_set*>(rep->next.p)->_map; -   unsigned count = 0; -   // -   // start by working out how much we can skip: -   // -   bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);    -   std::size_t desired = greedy ? rep->max : rep->min; -   if(::boost::is_random_access_iterator<BidiIterator>::value) -   { -      BidiIterator end = position; -      std::advance(end, (std::min)((std::size_t)::boost::re_detail::distance(position, last), desired)); -      BidiIterator origin(position); -      while((position != end) && map[static_cast<unsigned char>(traits_inst.translate(*position, icase))]) -      { -         ++position; -      } -      count = (unsigned)::boost::re_detail::distance(origin, position); -   } -   else -   { -      while((count < desired) && (position != last) && map[static_cast<unsigned char>(traits_inst.translate(*position, icase))]) -      { -         ++position; -         ++count; -      } -   } -   if((rep->leading) && (count < rep->max) && greedy) -      restart = position; -   if(count < rep->min) -      return false; - -   if(greedy) -      return backtrack_till_match(count - rep->min); - -   // non-greedy, keep trying till we get a match: -   BidiIterator save_pos; -   do -   { -      while((position != last) && (count < rep->max) && !can_start(*position, rep->_map, mask_skip)) -      { -         if(map[static_cast<unsigned char>(traits_inst.translate(*position, icase))]) -         { -            ++position; -            ++count; -         } -         else -            return false;  // counldn't repeat even though it was the only option -      } -      if((rep->leading) && (rep->max == UINT_MAX)) -         restart = position; -      pstate = rep->alt.p; -      save_pos = position; -      ++state_count; -      if(match_all_states()) -         return true; -      if(count >= rep->max) -         return false; -      position = save_pos; -      if(position == last) -         return false; -      if(map[static_cast<unsigned char>(traits_inst.translate(*position, icase))]) -      { -         ++position; -         ++count; -      } -      else -      { -         return false; -      } -   }while(true); -#ifdef __BORLANDC__ -#pragma option pop -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::match_long_set_repeat() -{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4127) -#endif -#ifdef __BORLANDC__ -#pragma option push -w-8008 -w-8066 -w-8004 -#endif -   typedef typename traits::char_class_type char_class_type; -   const re_repeat* rep = static_cast<const re_repeat*>(pstate); -   const re_set_long<char_class_type>* set = static_cast<const re_set_long<char_class_type>*>(pstate->next.p); -   unsigned count = 0; -   // -   // start by working out how much we can skip: -   // -   bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);    -   std::size_t desired = greedy ? rep->max : rep->min; -   if(::boost::is_random_access_iterator<BidiIterator>::value) -   { -      BidiIterator end = position; -      std::advance(end, (std::min)((std::size_t)::boost::re_detail::distance(position, last), desired)); -      BidiIterator origin(position); -      while((position != end) && (position != re_is_set_member(position, last, set, re.get_data(), icase))) -      { -         ++position; -      } -      count = (unsigned)::boost::re_detail::distance(origin, position); -   } -   else -   { -      while((count < desired) && (position != last) && (position != re_is_set_member(position, last, set, re.get_data(), icase))) -      { -         ++position; -         ++count; -      } -   } -   if((rep->leading) && (count < rep->max) && greedy) -      restart = position; -   if(count < rep->min) -      return false; - -   if(greedy) -      return backtrack_till_match(count - rep->min); - -   // non-greedy, keep trying till we get a match: -   BidiIterator save_pos; -   do -   { -      while((position != last) && (count < rep->max) && !can_start(*position, rep->_map, mask_skip)) -      { -         if(position != re_is_set_member(position, last, set, re.get_data(), icase)) -         { -            ++position; -            ++count; -         } -         else -            return false;  // counldn't repeat even though it was the only option -      } -      if((rep->leading) && (rep->max == UINT_MAX)) -         restart = position; -      pstate = rep->alt.p; -      save_pos = position; -      ++state_count; -      if(match_all_states()) -         return true; -      if(count >= rep->max) -         return false; -      position = save_pos; -      if(position == last) -         return false; -      if(position != re_is_set_member(position, last, set, re.get_data(), icase)) -      { -         ++position; -         ++count; -      } -      else -      { -         return false; -      } -   }while(true); -#ifdef __BORLANDC__ -#pragma option pop -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} - -template <class BidiIterator, class Allocator, class traits> -bool perl_matcher<BidiIterator, Allocator, traits>::backtrack_till_match(std::size_t count) -{ -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4127) -#endif -   if((m_match_flags & match_partial) && (position == last)) -      m_has_partial_match = true; - -   const re_repeat* rep = static_cast<const re_repeat*>(pstate); -   BidiIterator backtrack = position; -   if(position == last) -   { -      if(rep->can_be_null & mask_skip)  -      { -         pstate = rep->alt.p; -         if(match_all_states()) -            return true; -      } -      if(count) -      { -         position = --backtrack; -         --count; -      } -      else -         return false; -   } -   do -   { -      while(count && !can_start(*position, rep->_map, mask_skip)) -      { -         --position; -         --count; -         ++state_count; -      } -      pstate = rep->alt.p; -      backtrack = position; -      if(match_all_states()) -         return true; -      if(count == 0) -         return false; -      position = --backtrack; -      ++state_count; -      --count; -   }while(true); -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -} - -} // namespace re_detail -} // namespace boost -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif - diff --git a/3rdParty/Boost/boost/regex/v4/primary_transform.hpp b/3rdParty/Boost/boost/regex/v4/primary_transform.hpp deleted file mode 100644 index 989f500..0000000 --- a/3rdParty/Boost/boost/regex/v4/primary_transform.hpp +++ /dev/null @@ -1,146 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ -  - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE:        primary_transform.hpp -  *   VERSION:     see <boost/version.hpp> -  *   DESCRIPTION: Heuristically determines the sort string format in use -  *                by the current locale. -  */ - -#ifndef BOOST_REGEX_PRIMARY_TRANSFORM -#define BOOST_REGEX_PRIMARY_TRANSFORM - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -namespace boost{ -   namespace re_detail{ - - -enum{ -   sort_C, -   sort_fixed, -   sort_delim, -   sort_unknown -}; - -template <class S, class charT> -unsigned count_chars(const S& s, charT c) -{ -   // -   // Count how many occurances of character c occur -   // in string s: if c is a delimeter between collation -   // fields, then this should be the same value for all -   // sort keys: -   // -   unsigned int count = 0; -   for(unsigned pos = 0; pos < s.size(); ++pos) -   { -      if(s[pos] == c) ++count; -   } -   return count; -} - - -template <class traits, class charT> -unsigned find_sort_syntax(const traits* pt, charT* delim) -{ -   // -   // compare 'a' with 'A' to see how similar they are, -   // should really use a-accute but we can't portably do that, -   // -   typedef typename traits::string_type string_type; -   typedef typename traits::char_type char_type; - -   // Suppress incorrect warning for MSVC -   (void)pt; - -   char_type a[2] = {'a', '\0', }; -   string_type sa(pt->transform(a, a+1)); -   if(sa == a) -   { -      *delim = 0; -      return sort_C; -   } -   char_type A[2] = { 'A', '\0', }; -   string_type sA(pt->transform(A, A+1)); -   char_type c[2] = { ';', '\0', }; -   string_type sc(pt->transform(c, c+1)); - -   int pos = 0; -   while((pos <= static_cast<int>(sa.size())) && (pos <= static_cast<int>(sA.size())) && (sa[pos] == sA[pos])) ++pos; -   --pos; -   if(pos < 0) -   { -      *delim = 0; -      return sort_unknown; -   } -   // -   // at this point sa[pos] is either the end of a fixed width field -   // or the character that acts as a delimiter: -   // -   charT maybe_delim = sa[pos]; -   if((pos != 0) && (count_chars(sa, maybe_delim) == count_chars(sA, maybe_delim)) && (count_chars(sa, maybe_delim) == count_chars(sc, maybe_delim))) -   { -      *delim = maybe_delim; -      return sort_delim; -   } -   // -   // OK doen't look like a delimiter, try for fixed width field: -   // -   if((sa.size() == sA.size()) && (sa.size() == sc.size())) -   { -      // note assumes that the fixed width field is less than -      // (numeric_limits<charT>::max)(), should be true for all types -      // I can't imagine 127 character fields... -      *delim = static_cast<charT>(++pos); -      return sort_fixed; -   } -   // -   // don't know what it is: -   // -   *delim = 0; -   return sort_unknown; -} - - -   } // namespace re_detail -} // namespace boost - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif - - - - - - - diff --git a/3rdParty/Boost/boost/regex/v4/protected_call.hpp b/3rdParty/Boost/boost/regex/v4/protected_call.hpp deleted file mode 100644 index ebf15ba..0000000 --- a/3rdParty/Boost/boost/regex/v4/protected_call.hpp +++ /dev/null @@ -1,81 +0,0 @@ -/* - * - * Copyright (c) 2004 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ - - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         basic_regex_creator.cpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Declares template class basic_regex_creator which fills in -  *                the data members of a regex_data object. -  */ - -#ifndef BOOST_REGEX_V4_PROTECTED_CALL_HPP -#define BOOST_REGEX_V4_PROTECTED_CALL_HPP - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -namespace boost{ -namespace re_detail{ - -class BOOST_REGEX_DECL abstract_protected_call -{ -public: -   bool BOOST_REGEX_CALL execute()const; -   // this stops gcc-4 from complaining: -   virtual ~abstract_protected_call(){} -private: -   virtual bool call()const = 0; -}; - -template <class T> -class concrete_protected_call -   : public abstract_protected_call -{ -public: -   typedef bool (T::*proc_type)(); -   concrete_protected_call(T* o, proc_type p) -      : obj(o), proc(p) {} -private: -   virtual bool call()const; -   T* obj; -   proc_type proc; -}; - -template <class T> -bool concrete_protected_call<T>::call()const -{ -   return (obj->*proc)(); -} - -} -} // namespace boost - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif diff --git a/3rdParty/Boost/boost/regex/v4/regbase.hpp b/3rdParty/Boost/boost/regex/v4/regbase.hpp deleted file mode 100644 index 2b737d5..0000000 --- a/3rdParty/Boost/boost/regex/v4/regbase.hpp +++ /dev/null @@ -1,180 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ - - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         regbase.cpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Declares class regbase. -  */ - -#ifndef BOOST_REGEX_V4_REGBASE_HPP -#define BOOST_REGEX_V4_REGBASE_HPP - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -namespace boost{ -// -// class regbase -// handles error codes and flags -// -class BOOST_REGEX_DECL regbase -{ -public: -   enum flag_type_ -   { -      // -      // Divide the flags up into logical groups: -      // bits 0-7 indicate main synatx type. -      // bits 8-15 indicate syntax subtype. -      // bits 16-31 indicate options that are common to all -      // regex syntaxes. -      // In all cases the default is 0. -      // -      // Main synatx group: -      // -      perl_syntax_group = 0,                      // default -      basic_syntax_group = 1,                     // POSIX basic -      literal = 2,                                // all characters are literals -      main_option_type = literal | basic_syntax_group | perl_syntax_group, // everything! -      // -      // options specific to perl group: -      // -      no_bk_refs = 1 << 8,                        // \d not allowed -      no_perl_ex = 1 << 9,                        // disable perl extensions -      no_mod_m = 1 << 10,                         // disable Perl m modifier -      mod_x = 1 << 11,                            // Perl x modifier -      mod_s = 1 << 12,                            // force s modifier on (overrides match_not_dot_newline) -      no_mod_s = 1 << 13,                         // force s modifier off (overrides match_not_dot_newline) - -      // -      // options specific to basic group: -      // -      no_char_classes = 1 << 8,                   // [[:CLASS:]] not allowed -      no_intervals = 1 << 9,                      // {x,y} not allowed -      bk_plus_qm = 1 << 10,                       // uses \+ and \? -      bk_vbar = 1 << 11,                          // use \| for alternatives -      emacs_ex = 1 << 12,                         // enables emacs extensions - -      // -      // options common to all groups: -      // -      no_escape_in_lists = 1 << 16,                     // '\' not special inside [...] -      newline_alt = 1 << 17,                            // \n is the same as | -      no_except = 1 << 18,                              // no exception on error -      failbit = 1 << 19,                                // error flag -      icase = 1 << 20,                                  // characters are matched regardless of case -      nocollate = 0,                                    // don't use locale specific collation (deprecated) -      collate = 1 << 21,                                // use locale specific collation -      nosubs = 1 << 22,                                 // don't mark sub-expressions -      save_subexpression_location = 1 << 23,            // save subexpression locations -      no_empty_expressions = 1 << 24,                   // no empty expressions allowed -      optimize = 0,                                     // not really supported -       - - -      basic = basic_syntax_group | collate | no_escape_in_lists, -      extended = no_bk_refs | collate | no_perl_ex | no_escape_in_lists, -      normal = 0, -      emacs = basic_syntax_group | collate | emacs_ex | bk_vbar, -      awk = no_bk_refs | collate | no_perl_ex, -      grep = basic | newline_alt, -      egrep = extended | newline_alt, -      sed = basic, -      perl = normal, -      ECMAScript = normal, -      JavaScript = normal, -      JScript = normal -   }; -   typedef unsigned int flag_type; - -   enum restart_info -   { -      restart_any = 0, -      restart_word = 1, -      restart_line = 2, -      restart_buf = 3, -      restart_continue = 4, -      restart_lit = 5, -      restart_fixed_lit = 6,  -      restart_count = 7 -   }; -}; - -// -// provide std lib proposal compatible constants: -// -namespace regex_constants{ - -   enum flag_type_ -   { - -      no_except = ::boost::regbase::no_except, -      failbit = ::boost::regbase::failbit, -      literal = ::boost::regbase::literal, -      icase = ::boost::regbase::icase, -      nocollate = ::boost::regbase::nocollate, -      collate = ::boost::regbase::collate, -      nosubs = ::boost::regbase::nosubs, -      optimize = ::boost::regbase::optimize, -      bk_plus_qm = ::boost::regbase::bk_plus_qm, -      bk_vbar = ::boost::regbase::bk_vbar, -      no_intervals = ::boost::regbase::no_intervals, -      no_char_classes = ::boost::regbase::no_char_classes, -      no_escape_in_lists = ::boost::regbase::no_escape_in_lists, -      no_mod_m = ::boost::regbase::no_mod_m, -      mod_x = ::boost::regbase::mod_x, -      mod_s = ::boost::regbase::mod_s, -      no_mod_s = ::boost::regbase::no_mod_s, -      save_subexpression_location = ::boost::regbase::save_subexpression_location, -      no_empty_expressions = ::boost::regbase::no_empty_expressions, - -      basic = ::boost::regbase::basic, -      extended = ::boost::regbase::extended, -      normal = ::boost::regbase::normal, -      emacs = ::boost::regbase::emacs, -      awk = ::boost::regbase::awk, -      grep = ::boost::regbase::grep, -      egrep = ::boost::regbase::egrep, -      sed = basic, -      perl = normal, -      ECMAScript = normal, -      JavaScript = normal, -      JScript = normal -   }; -   typedef ::boost::regbase::flag_type syntax_option_type; - -} // namespace regex_constants - -} // namespace boost - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif - diff --git a/3rdParty/Boost/boost/regex/v4/regex.hpp b/3rdParty/Boost/boost/regex/v4/regex.hpp deleted file mode 100644 index 7cc260a..0000000 --- a/3rdParty/Boost/boost/regex/v4/regex.hpp +++ /dev/null @@ -1,202 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ - - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         regex.cpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Declares boost::basic_regex<> and associated -  *                functions and classes. This header is the main -  *                entry point for the template regex code. -  */ - -#ifndef BOOST_RE_REGEX_HPP_INCLUDED -#define BOOST_RE_REGEX_HPP_INCLUDED - -#ifdef __cplusplus - -// what follows is all C++ don't include in C builds!! - -#ifndef BOOST_REGEX_CONFIG_HPP -#include <boost/regex/config.hpp> -#endif -#ifndef BOOST_REGEX_WORKAROUND_HPP -#include <boost/regex/v4/regex_workaround.hpp> -#endif - -#ifndef BOOST_REGEX_FWD_HPP -#include <boost/regex_fwd.hpp> -#endif -#ifndef BOOST_REGEX_TRAITS_HPP -#include <boost/regex/regex_traits.hpp> -#endif -#ifndef BOOST_REGEX_RAW_BUFFER_HPP -#include <boost/regex/v4/error_type.hpp> -#endif -#ifndef BOOST_REGEX_V4_MATCH_FLAGS -#include <boost/regex/v4/match_flags.hpp> -#endif -#ifndef BOOST_REGEX_RAW_BUFFER_HPP -#include <boost/regex/v4/regex_raw_buffer.hpp> -#endif -#ifndef BOOST_RE_PAT_EXCEPT_HPP -#include <boost/regex/pattern_except.hpp> -#endif - -#ifndef BOOST_REGEX_V4_CHAR_REGEX_TRAITS_HPP -#include <boost/regex/v4/char_regex_traits.hpp> -#endif -#ifndef BOOST_REGEX_V4_STATES_HPP -#include <boost/regex/v4/states.hpp> -#endif -#ifndef BOOST_REGEX_V4_REGBASE_HPP -#include <boost/regex/v4/regbase.hpp> -#endif -#ifndef BOOST_REGEX_V4_ITERATOR_TRAITS_HPP -#include <boost/regex/v4/iterator_traits.hpp> -#endif -#ifndef BOOST_REGEX_V4_BASIC_REGEX_HPP -#include <boost/regex/v4/basic_regex.hpp> -#endif -#ifndef BOOST_REGEX_V4_BASIC_REGEX_CREATOR_HPP -#include <boost/regex/v4/basic_regex_creator.hpp> -#endif -#ifndef BOOST_REGEX_V4_BASIC_REGEX_PARSER_HPP -#include <boost/regex/v4/basic_regex_parser.hpp> -#endif -#ifndef BOOST_REGEX_V4_SUB_MATCH_HPP -#include <boost/regex/v4/sub_match.hpp> -#endif -#ifndef BOOST_REGEX_FORMAT_HPP -#include <boost/regex/v4/regex_format.hpp> -#endif -#ifndef BOOST_REGEX_V4_MATCH_RESULTS_HPP -#include <boost/regex/v4/match_results.hpp> -#endif -#ifndef BOOST_REGEX_V4_PROTECTED_CALL_HPP -#include <boost/regex/v4/protected_call.hpp> -#endif -#ifndef BOOST_REGEX_MATCHER_HPP -#include <boost/regex/v4/perl_matcher.hpp> -#endif -// -// template instances: -// -#define BOOST_REGEX_CHAR_T char -#ifdef BOOST_REGEX_NARROW_INSTANTIATE -#  define BOOST_REGEX_INSTANTIATE -#endif -#include <boost/regex/v4/instances.hpp> -#undef BOOST_REGEX_CHAR_T -#ifdef BOOST_REGEX_INSTANTIATE -#  undef BOOST_REGEX_INSTANTIATE -#endif - -#ifndef BOOST_NO_WREGEX -#define BOOST_REGEX_CHAR_T wchar_t -#ifdef BOOST_REGEX_WIDE_INSTANTIATE -#  define BOOST_REGEX_INSTANTIATE -#endif -#include <boost/regex/v4/instances.hpp> -#undef BOOST_REGEX_CHAR_T -#ifdef BOOST_REGEX_INSTANTIATE -#  undef BOOST_REGEX_INSTANTIATE -#endif -#endif - -#if !defined(BOOST_NO_WREGEX) && defined(BOOST_REGEX_HAS_OTHER_WCHAR_T) -#define BOOST_REGEX_CHAR_T unsigned short -#ifdef BOOST_REGEX_US_INSTANTIATE -#  define BOOST_REGEX_INSTANTIATE -#endif -#include <boost/regex/v4/instances.hpp> -#undef BOOST_REGEX_CHAR_T -#ifdef BOOST_REGEX_INSTANTIATE -#  undef BOOST_REGEX_INSTANTIATE -#endif -#endif - - -namespace boost{ -#ifdef BOOST_REGEX_NO_FWD -typedef basic_regex<char, regex_traits<char> > regex; -#ifndef BOOST_NO_WREGEX -typedef basic_regex<wchar_t, regex_traits<wchar_t> > wregex; -#endif -#endif - -typedef match_results<const char*> cmatch; -typedef match_results<std::string::const_iterator> smatch; -#ifndef BOOST_NO_WREGEX -typedef match_results<const wchar_t*> wcmatch; -typedef match_results<std::wstring::const_iterator> wsmatch; -#endif - -} // namespace boost -#ifndef BOOST_REGEX_MATCH_HPP -#include <boost/regex/v4/regex_match.hpp> -#endif -#ifndef BOOST_REGEX_V4_REGEX_SEARCH_HPP -#include <boost/regex/v4/regex_search.hpp> -#endif -#ifndef BOOST_REGEX_ITERATOR_HPP -#include <boost/regex/v4/regex_iterator.hpp> -#endif -#ifndef BOOST_REGEX_TOKEN_ITERATOR_HPP -#include <boost/regex/v4/regex_token_iterator.hpp> -#endif -#ifndef BOOST_REGEX_V4_REGEX_GREP_HPP -#include <boost/regex/v4/regex_grep.hpp> -#endif -#ifndef BOOST_REGEX_V4_REGEX_REPLACE_HPP -#include <boost/regex/v4/regex_replace.hpp> -#endif -#ifndef BOOST_REGEX_V4_REGEX_MERGE_HPP -#include <boost/regex/v4/regex_merge.hpp> -#endif -#ifndef BOOST_REGEX_SPLIT_HPP -#include <boost/regex/v4/regex_split.hpp> -#endif - -#endif  // __cplusplus - -#endif  // include - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/3rdParty/Boost/boost/regex/v4/regex_format.hpp b/3rdParty/Boost/boost/regex/v4/regex_format.hpp deleted file mode 100644 index d114c2e..0000000 --- a/3rdParty/Boost/boost/regex/v4/regex_format.hpp +++ /dev/null @@ -1,662 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ - - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         regex_format.hpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Provides formatting output routines for search and replace -  *                operations.  Note this is an internal header file included -  *                by regex.hpp, do not include on its own. -  */ - -#ifndef BOOST_REGEX_FORMAT_HPP -#define BOOST_REGEX_FORMAT_HPP - - -namespace boost{ - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -// -// Forward declaration: -// -   template <class BidiIterator, class Allocator = BOOST_DEDUCED_TYPENAME std::vector<sub_match<BidiIterator> >::allocator_type > -class match_results; - -namespace re_detail{ - -// -// struct trivial_format_traits: -// defines minimum localisation support for formatting -// in the case that the actual regex traits is unavailable. -// -template <class charT> -struct trivial_format_traits -{ -   typedef charT char_type; - -   static std::ptrdiff_t length(const charT* p) -   { -      return global_length(p); -   } -   static charT tolower(charT c) -   { -      return ::boost::re_detail::global_lower(c); -   } -   static charT toupper(charT c) -   { -      return ::boost::re_detail::global_upper(c); -   } -   static int value(const charT c, int radix) -   { -      int result = global_value(c); -      return result >= radix ? -1 : result; -   } -   int toi(const charT*& p1, const charT* p2, int radix)const -   { -      return global_toi(p1, p2, radix, *this); -   } -}; - -template <class OutputIterator, class Results, class traits> -class basic_regex_formatter -{ -public: -   typedef typename traits::char_type char_type; -   basic_regex_formatter(OutputIterator o, const Results& r, const traits& t) -      : m_traits(t), m_results(r), m_out(o), m_state(output_copy), m_restore_state(output_copy), m_have_conditional(false) {} -   OutputIterator format(const char_type* p1, const char_type* p2, match_flag_type f); -   OutputIterator format(const char_type* p1, match_flag_type f) -   { -      return format(p1, p1 + m_traits.length(p1), f); -   } -private: -   typedef typename Results::value_type sub_match_type; -   enum output_state -   { -      output_copy, -      output_next_lower, -      output_next_upper, -      output_lower, -      output_upper, -      output_none -   }; - -   void put(char_type c); -   void put(const sub_match_type& sub); -   void format_all(); -   void format_perl(); -   void format_escape(); -   void format_conditional(); -   void format_until_scope_end(); - -   const traits& m_traits;       // the traits class for localised formatting operations -   const Results& m_results;     // the match_results being used. -   OutputIterator m_out;         // where to send output. -   const char_type* m_position;  // format string, current position -   const char_type* m_end;       // format string end -   match_flag_type m_flags;      // format flags to use -   output_state    m_state;      // what to do with the next character -   output_state    m_restore_state;  // what state to restore to. -   bool            m_have_conditional; // we are parsing a conditional -private: -   basic_regex_formatter(const basic_regex_formatter&); -   basic_regex_formatter& operator=(const basic_regex_formatter&); -}; - -template <class OutputIterator, class Results, class traits> -OutputIterator basic_regex_formatter<OutputIterator, Results, traits>::format(const char_type* p1, const char_type* p2, match_flag_type f) -{ -   m_position = p1; -   m_end = p2; -   m_flags = f; -   format_all(); -   return m_out; -} - -template <class OutputIterator, class Results, class traits> -void basic_regex_formatter<OutputIterator, Results, traits>::format_all() -{ -   // over and over: -   while(m_position != m_end) -   { -      switch(*m_position) -      { -      case '&': -         if(m_flags & ::boost::regex_constants::format_sed) -         { -            ++m_position; -            put(m_results[0]); -            break; -         } -         put(*m_position++); -         break; -      case '\\': -         format_escape(); -         break; -      case '(': -         if(m_flags & boost::regex_constants::format_all) -         { -            ++m_position; -            bool have_conditional = m_have_conditional; -            m_have_conditional = false; -            format_until_scope_end(); -            m_have_conditional = have_conditional; -            if(m_position == m_end) -               return; -            BOOST_ASSERT(*m_position == static_cast<char_type>(')')); -            ++m_position;  // skip the closing ')' -            break; -         } -         put(*m_position); -         ++m_position; -         break; -      case ')': -         if(m_flags & boost::regex_constants::format_all) -         { -            return; -         } -         put(*m_position); -         ++m_position; -         break; -      case ':': -         if((m_flags & boost::regex_constants::format_all) && m_have_conditional) -         { -            return; -         } -         put(*m_position); -         ++m_position; -         break; -      case '?': -         if(m_flags & boost::regex_constants::format_all) -         { -            ++m_position; -            format_conditional(); -            break; -         } -         put(*m_position); -         ++m_position; -         break; -      case '$': -         if((m_flags & format_sed) == 0) -         { -            format_perl(); -            break; -         } -         // fall through, not a special character: -      default: -         put(*m_position); -         ++m_position; -         break; -      } -   } -} - -template <class OutputIterator, class Results, class traits> -void basic_regex_formatter<OutputIterator, Results, traits>::format_perl() -{ -   // -   // On entry *m_position points to a '$' character -   // output the information that goes with it: -   // -   BOOST_ASSERT(*m_position == '$'); -   // -   // see if this is a trailing '$': -   // -   if(++m_position == m_end) -   { -      --m_position; -      put(*m_position); -      ++m_position; -      return; -   } -   // -   // OK find out what kind it is: -   // -   bool have_brace = false; -   const char_type* save_position = m_position; -   switch(*m_position) -   { -   case '&': -      ++m_position; -      put(this->m_results[0]); -      break; -   case '`': -      ++m_position; -      put(this->m_results.prefix()); -      break; -   case '\'': -      ++m_position; -      put(this->m_results.suffix()); -      break; -   case '$': -      put(*m_position++); -      break; -   case '{': -      have_brace = true; -      ++m_position; -      // fall through.... -   default: -      // see if we have a number: -      { -         std::ptrdiff_t len = ::boost::re_detail::distance(m_position, m_end); -         len = (std::min)(static_cast<std::ptrdiff_t>(2), len); -         int v = m_traits.toi(m_position, m_position + len, 10); -         if((v < 0) || (have_brace && ((m_position == m_end) || (*m_position != '}')))) -         { -            // leave the $ as is, and carry on: -            m_position = --save_position; -            put(*m_position); -            ++m_position; -            break; -         } -         // otherwise output sub v: -         put(this->m_results[v]); -         if(have_brace) -            ++m_position; -      } -   } -} - -template <class OutputIterator, class Results, class traits> -void basic_regex_formatter<OutputIterator, Results, traits>::format_escape() -{ -   // skip the escape and check for trailing escape: -   if(++m_position == m_end) -   { -      put(static_cast<char_type>('\\')); -      return; -   } -   // now switch on the escape type: -   switch(*m_position) -   { -   case 'a': -      put(static_cast<char_type>('\a')); -      ++m_position; -      break; -   case 'f': -      put(static_cast<char_type>('\f')); -      ++m_position; -      break; -   case 'n': -      put(static_cast<char_type>('\n')); -      ++m_position; -      break; -   case 'r': -      put(static_cast<char_type>('\r')); -      ++m_position; -      break; -   case 't': -      put(static_cast<char_type>('\t')); -      ++m_position; -      break; -   case 'v': -      put(static_cast<char_type>('\v')); -      ++m_position; -      break; -   case 'x': -      if(++m_position == m_end) -      { -         put(static_cast<char_type>('x')); -         return; -      } -      // maybe have \x{ddd} -      if(*m_position == static_cast<char_type>('{')) -      { -         ++m_position; -         int val = m_traits.toi(m_position, m_end, 16); -         if(val < 0) -         { -            // invalid value treat everything as literals: -            put(static_cast<char_type>('x')); -            put(static_cast<char_type>('{')); -            return; -         } -         if(*m_position != static_cast<char_type>('}')) -         { -            while(*m_position != static_cast<char_type>('\\')) -               --m_position; -            ++m_position; -            put(*m_position++); -            return; -         } -         ++m_position; -         put(static_cast<char_type>(val)); -         return; -      } -      else -      { -         std::ptrdiff_t len = ::boost::re_detail::distance(m_position, m_end); -         len = (std::min)(static_cast<std::ptrdiff_t>(2), len); -         int val = m_traits.toi(m_position, m_position + len, 16); -         if(val < 0) -         { -            --m_position; -            put(*m_position++); -            return; -         } -         put(static_cast<char_type>(val)); -      } -      break; -   case 'c': -      if(++m_position == m_end) -      { -         --m_position; -         put(*m_position++); -         return; -      } -      put(static_cast<char_type>(*m_position++ % 32)); -      break; -   case 'e': -      put(static_cast<char_type>(27)); -      ++m_position; -      break; -   default: -      // see if we have a perl specific escape: -      if((m_flags & boost::regex_constants::format_sed) == 0) -      { -         bool breakout = false; -         switch(*m_position) -         { -         case 'l': -            ++m_position; -            m_restore_state = m_state; -            m_state = output_next_lower; -            breakout = true; -            break; -         case 'L': -            ++m_position; -            m_state = output_lower; -            breakout = true; -            break; -         case 'u': -            ++m_position; -            m_restore_state = m_state; -            m_state = output_next_upper; -            breakout = true; -            break; -         case 'U': -            ++m_position; -            m_state = output_upper; -            breakout = true; -            break; -         case 'E': -            ++m_position; -            m_state = output_copy; -            breakout = true; -            break; -         } -         if(breakout) -            break; -      } -      // see if we have a \n sed style backreference: -      int v = m_traits.toi(m_position, m_position+1, 10); -      if((v > 0) || ((v == 0) && (m_flags & ::boost::regex_constants::format_sed))) -      { -         put(m_results[v]); -         break; -      } -      else if(v == 0) -      { -         // octal ecape sequence: -         --m_position; -         std::ptrdiff_t len = ::boost::re_detail::distance(m_position, m_end); -         len = (std::min)(static_cast<std::ptrdiff_t>(4), len); -         v = m_traits.toi(m_position, m_position + len, 8); -         BOOST_ASSERT(v >= 0); -         put(static_cast<char_type>(v)); -         break; -      } -      // Otherwise output the character "as is": -      put(*m_position++); -      break; -   } -} - -template <class OutputIterator, class Results, class traits> -void basic_regex_formatter<OutputIterator, Results, traits>::format_conditional() -{ -   if(m_position == m_end) -   { -      // oops trailing '?': -      put(static_cast<char_type>('?')); -      return; -   } -   std::ptrdiff_t len = ::boost::re_detail::distance(m_position, m_end); -   len = (std::min)(static_cast<std::ptrdiff_t>(2), len); -   int v = m_traits.toi(m_position, m_position + len, 10); -   if(v < 0) -   { -      // oops not a number: -      put(static_cast<char_type>('?')); -      return; -   } - -   // output varies depending upon whether sub-expression v matched or not: -   if(m_results[v].matched) -   { -      m_have_conditional = true; -      format_all(); -      m_have_conditional = false; -      if((m_position != m_end) && (*m_position == static_cast<char_type>(':'))) -      { -         // skip the ':': -         ++m_position; -         // save output state, then turn it off: -         output_state saved_state = m_state; -         m_state = output_none; -         // format the rest of this scope: -         format_until_scope_end(); -         // restore output state: -         m_state = saved_state; -      } -   } -   else -   { -      // save output state, then turn it off: -      output_state saved_state = m_state; -      m_state = output_none; -      // format until ':' or ')': -      m_have_conditional = true; -      format_all(); -      m_have_conditional = false; -      // restore state: -      m_state = saved_state; -      if((m_position != m_end) && (*m_position == static_cast<char_type>(':'))) -      { -         // skip the ':': -         ++m_position; -         // format the rest of this scope: -         format_until_scope_end(); -      } -   } -} - -template <class OutputIterator, class Results, class traits> -void basic_regex_formatter<OutputIterator, Results, traits>::format_until_scope_end() -{ -   do -   { -      format_all(); -      if((m_position == m_end) || (*m_position == static_cast<char_type>(')'))) -         return; -      put(*m_position++); -   }while(m_position != m_end); -} - -template <class OutputIterator, class Results, class traits> -void basic_regex_formatter<OutputIterator, Results, traits>::put(char_type c) -{ -   // write a single character to output -   // according to which case translation mode we are in: -   switch(this->m_state) -   { -   case output_none: -      return; -   case output_next_lower: -      c = m_traits.tolower(c); -      this->m_state = m_restore_state; -      break; -   case output_next_upper: -      c = m_traits.toupper(c); -      this->m_state = m_restore_state; -      break; -   case output_lower: -      c = m_traits.tolower(c); -      break; -   case output_upper: -      c = m_traits.toupper(c); -      break; -   default: -      break; -   } -   *m_out = c; -   ++m_out; -} - -template <class OutputIterator, class Results, class traits> -void basic_regex_formatter<OutputIterator, Results, traits>::put(const sub_match_type& sub) -{ -   typedef typename sub_match_type::iterator iterator_type; -   iterator_type i = sub.first; -   while(i != sub.second) -   { -      put(*i); -      ++i; -   } -} - -template <class S> -class string_out_iterator -#ifndef BOOST_NO_STD_ITERATOR -   : public std::iterator<std::output_iterator_tag, typename S::value_type> -#endif -{ -   S* out; -public: -   string_out_iterator(S& s) : out(&s) {} -   string_out_iterator& operator++() { return *this; } -   string_out_iterator& operator++(int) { return *this; } -   string_out_iterator& operator*() { return *this; } -   string_out_iterator& operator=(typename S::value_type v)  -   {  -      out->append(1, v);  -      return *this;  -   } - -#ifdef BOOST_NO_STD_ITERATOR -   typedef std::ptrdiff_t difference_type; -   typedef typename S::value_type value_type; -   typedef value_type* pointer; -   typedef value_type& reference; -   typedef std::output_iterator_tag iterator_category; -#endif -}; - -template <class OutputIterator, class Iterator, class Alloc, class charT, class traits> -OutputIterator regex_format_imp(OutputIterator out, -                          const match_results<Iterator, Alloc>& m, -                          const charT* p1, const charT* p2, -                          match_flag_type flags, -                          const traits& t -                         ) -{ -   if(flags & regex_constants::format_literal) -   { -      return re_detail::copy(p1, p2, out); -   } - -   re_detail::basic_regex_formatter< -      OutputIterator,  -      match_results<Iterator, Alloc>,  -      traits > f(out, m, t); -   return f.format(p1, p2, flags); -} - - -} // namespace re_detail - -template <class OutputIterator, class Iterator, class charT> -OutputIterator regex_format(OutputIterator out, -                          const match_results<Iterator>& m, -                          const charT* fmt, -                          match_flag_type flags = format_all -                         ) -{ -   re_detail::trivial_format_traits<charT> traits; -   return re_detail::regex_format_imp(out, m, fmt, fmt + traits.length(fmt), flags, traits); -} - -template <class OutputIterator, class Iterator, class charT> -OutputIterator regex_format(OutputIterator out, -                          const match_results<Iterator>& m, -                          const std::basic_string<charT>& fmt, -                          match_flag_type flags = format_all -                         ) -{ -   re_detail::trivial_format_traits<charT> traits; -   return re_detail::regex_format_imp(out, m, fmt.data(), fmt.data() + fmt.size(), flags, traits); -}   - -template <class Iterator, class charT> -std::basic_string<charT> regex_format(const match_results<Iterator>& m,  -                                      const charT* fmt,  -                                      match_flag_type flags = format_all) -{ -   std::basic_string<charT> result; -   re_detail::string_out_iterator<std::basic_string<charT> > i(result); -   re_detail::trivial_format_traits<charT> traits; -   re_detail::regex_format_imp(i, m, fmt, fmt + traits.length(fmt), flags, traits); -   return result; -} - -template <class Iterator, class charT> -std::basic_string<charT> regex_format(const match_results<Iterator>& m,  -                                      const std::basic_string<charT>& fmt,  -                                      match_flag_type flags = format_all) -{ -   std::basic_string<charT> result; -   re_detail::string_out_iterator<std::basic_string<charT> > i(result); -   re_detail::trivial_format_traits<charT> traits; -   re_detail::regex_format_imp(i, m, fmt.data(), fmt.data() + fmt.size(), flags, traits); -   return result; -} - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -} // namespace boost - -#endif  // BOOST_REGEX_FORMAT_HPP - - - - - - diff --git a/3rdParty/Boost/boost/regex/v4/regex_fwd.hpp b/3rdParty/Boost/boost/regex/v4/regex_fwd.hpp deleted file mode 100644 index 3076b06..0000000 --- a/3rdParty/Boost/boost/regex/v4/regex_fwd.hpp +++ /dev/null @@ -1,73 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ - - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         regex_fwd.cpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Forward declares boost::basic_regex<> and -  *                associated typedefs. -  */ - -#ifndef BOOST_REGEX_FWD_HPP_INCLUDED -#define BOOST_REGEX_FWD_HPP_INCLUDED - -#ifndef BOOST_REGEX_CONFIG_HPP -#include <boost/regex/config.hpp> -#endif - -// -// define BOOST_REGEX_NO_FWD if this -// header doesn't work! -// -#ifdef BOOST_REGEX_NO_FWD -#  ifndef BOOST_RE_REGEX_HPP -#     include <boost/regex.hpp> -#  endif -#else - -namespace boost{ - -template <class charT> -class cpp_regex_traits; -template <class charT> -struct c_regex_traits; -template <class charT> -class w32_regex_traits; - -#ifdef BOOST_REGEX_USE_WIN32_LOCALE -template <class charT, class implementationT = w32_regex_traits<charT> > -struct regex_traits; -#elif defined(BOOST_REGEX_USE_CPP_LOCALE) -template <class charT, class implementationT = cpp_regex_traits<charT> > -struct regex_traits; -#else -template <class charT, class implementationT = c_regex_traits<charT> > -struct regex_traits; -#endif - -template <class charT, class traits = regex_traits<charT> > -class basic_regex; - -typedef basic_regex<char, regex_traits<char> > regex; -#ifndef BOOST_NO_WREGEX -typedef basic_regex<wchar_t, regex_traits<wchar_t> > wregex; -#endif - -} // namespace boost - -#endif  // BOOST_REGEX_NO_FWD - -#endif - - - - diff --git a/3rdParty/Boost/boost/regex/v4/regex_grep.hpp b/3rdParty/Boost/boost/regex/v4/regex_grep.hpp deleted file mode 100644 index 3a3d906..0000000 --- a/3rdParty/Boost/boost/regex/v4/regex_grep.hpp +++ /dev/null @@ -1,155 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ - - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         regex_grep.hpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Provides regex_grep implementation. -  */ - -#ifndef BOOST_REGEX_V4_REGEX_GREP_HPP -#define BOOST_REGEX_V4_REGEX_GREP_HPP - - -namespace boost{ - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -// -// regex_grep: -// find all non-overlapping matches within the sequence first last: -// -template <class Predicate, class BidiIterator, class charT, class traits> -inline unsigned int regex_grep(Predicate foo,  -                               BidiIterator first,  -                               BidiIterator last,  -                               const basic_regex<charT, traits>& e,  -                               match_flag_type flags = match_default) -{ -   if(e.flags() & regex_constants::failbit) -      return false; - -   typedef typename match_results<BidiIterator>::allocator_type match_allocator_type; - -   match_results<BidiIterator> m; -   re_detail::perl_matcher<BidiIterator, match_allocator_type, traits> matcher(first, last, m, e, flags, first); -   unsigned int count = 0; -   while(matcher.find()) -   { -      ++count; -      if(0 == foo(m)) -         return count; // caller doesn't want to go on -      if(m[0].second == last) -         return count; // we've reached the end, don't try and find an extra null match. -      if(m.length() == 0) -      { -         if(m[0].second == last) -            return count; -         // we found a NULL-match, now try to find -         // a non-NULL one at the same position: -         match_results<BidiIterator, match_allocator_type> m2(m); -         matcher.setf(match_not_null | match_continuous); -         if(matcher.find()) -         { -            ++count; -            if(0 == foo(m)) -               return count; -         } -         else -         { -            // reset match back to where it was: -            m = m2; -         } -         matcher.unsetf((match_not_null | match_continuous) & ~flags); -      } -   } -   return count; -} - -// -// regex_grep convenience interfaces: -#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING -// -// this isn't really a partial specialisation, but template function -// overloading - if the compiler doesn't support partial specialisation -// then it really won't support this either: -template <class Predicate, class charT, class traits> -inline unsigned int regex_grep(Predicate foo, const charT* str,  -                        const basic_regex<charT, traits>& e,  -                        match_flag_type flags = match_default) -{ -   return regex_grep(foo, str, str + traits::length(str), e, flags); -} - -template <class Predicate, class ST, class SA, class charT, class traits> -inline unsigned int regex_grep(Predicate foo, const std::basic_string<charT, ST, SA>& s,  -                 const basic_regex<charT, traits>& e,  -                 match_flag_type flags = match_default) -{ -   return regex_grep(foo, s.begin(), s.end(), e, flags); -} -#else  // partial specialisation -inline unsigned int regex_grep(bool (*foo)(const cmatch&), const char* str,  -                        const regex& e,  -                        match_flag_type flags = match_default) -{ -   return regex_grep(foo, str, str + regex::traits_type::length(str), e, flags); -} -#ifndef BOOST_NO_WREGEX -inline unsigned int regex_grep(bool (*foo)(const wcmatch&), const wchar_t* str,  -                        const wregex& e,  -                        match_flag_type flags = match_default) -{ -   return regex_grep(foo, str, str + wregex::traits_type::length(str), e, flags); -} -#endif -inline unsigned int regex_grep(bool (*foo)(const match_results<std::string::const_iterator>&), const std::string& s, -                        const regex& e,  -                        match_flag_type flags = match_default) -{ -   return regex_grep(foo, s.begin(), s.end(), e, flags); -} -#if !defined(BOOST_NO_WREGEX) -inline unsigned int regex_grep(bool (*foo)(const match_results<std::basic_string<wchar_t>::const_iterator>&),  -                     const std::basic_string<wchar_t>& s,  -                        const wregex& e,  -                        match_flag_type flags = match_default) -{ -   return regex_grep(foo, s.begin(), s.end(), e, flags); -} -#endif -#endif - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -} // namespace boost - -#endif  // BOOST_REGEX_V4_REGEX_GREP_HPP - diff --git a/3rdParty/Boost/boost/regex/v4/regex_iterator.hpp b/3rdParty/Boost/boost/regex/v4/regex_iterator.hpp deleted file mode 100644 index c2f2c49..0000000 --- a/3rdParty/Boost/boost/regex/v4/regex_iterator.hpp +++ /dev/null @@ -1,201 +0,0 @@ -/* - * - * Copyright (c) 2003 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ - - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         regex_iterator.hpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Provides regex_iterator implementation. -  */ - -#ifndef BOOST_REGEX_V4_REGEX_ITERATOR_HPP -#define BOOST_REGEX_V4_REGEX_ITERATOR_HPP - -#include <boost/shared_ptr.hpp> - -namespace boost{ - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -template <class BidirectionalIterator,  -          class charT, -          class traits> -class regex_iterator_implementation  -{ -   typedef basic_regex<charT, traits> regex_type; - -   match_results<BidirectionalIterator> what;  // current match -   BidirectionalIterator                base;  // start of sequence -   BidirectionalIterator                end;   // end of sequence -   const regex_type                     re;   // the expression -   match_flag_type                      flags; // flags for matching - -public: -   regex_iterator_implementation(const regex_type* p, BidirectionalIterator last, match_flag_type f) -      : base(), end(last), re(*p), flags(f){} -   bool init(BidirectionalIterator first) -   { -      base = first; -      return regex_search(first, end, what, re, flags); -   } -   bool compare(const regex_iterator_implementation& that) -   { -      if(this == &that) return true; -      return (&re.get_data() == &that.re.get_data()) && (end == that.end) && (flags == that.flags) && (what[0].first == that.what[0].first) && (what[0].second == that.what[0].second); -   } -   const match_results<BidirectionalIterator>& get() -   { return what; } -   bool next() -   { -      //if(what.prefix().first != what[0].second) -      //   flags |= match_prev_avail; -      BidirectionalIterator next_start = what[0].second; -      match_flag_type f(flags); -      if(!what.length()) -         f |= regex_constants::match_not_initial_null; -      //if(base != next_start) -      //   f |= regex_constants::match_not_bob; -      bool result = regex_search(next_start, end, what, re, f, base); -      if(result) -         what.set_base(base); -      return result; -   } -private: -   regex_iterator_implementation& operator=(const regex_iterator_implementation&); -}; - -template <class BidirectionalIterator,  -          class charT = BOOST_DEDUCED_TYPENAME re_detail::regex_iterator_traits<BidirectionalIterator>::value_type, -          class traits = regex_traits<charT> > -class regex_iterator  -#ifndef BOOST_NO_STD_ITERATOR -   : public std::iterator< -         std::forward_iterator_tag,  -         match_results<BidirectionalIterator>, -         typename re_detail::regex_iterator_traits<BidirectionalIterator>::difference_type, -         const match_results<BidirectionalIterator>*, -         const match_results<BidirectionalIterator>& >          -#endif -{ -private: -   typedef regex_iterator_implementation<BidirectionalIterator, charT, traits> impl; -   typedef shared_ptr<impl> pimpl; -public: -   typedef          basic_regex<charT, traits>                   regex_type; -   typedef          match_results<BidirectionalIterator>                    value_type; -   typedef typename re_detail::regex_iterator_traits<BidirectionalIterator>::difference_type  -                                                                            difference_type; -   typedef          const value_type*                                       pointer; -   typedef          const value_type&                                       reference;  -   typedef          std::forward_iterator_tag                               iterator_category; -    -   regex_iterator(){} -   regex_iterator(BidirectionalIterator a, BidirectionalIterator b,  -                  const regex_type& re,  -                  match_flag_type m = match_default) -                  : pdata(new impl(&re, b, m)) -   { -      if(!pdata->init(a)) -      { -         pdata.reset(); -      } -   } -   regex_iterator(const regex_iterator& that) -      : pdata(that.pdata) {} -   regex_iterator& operator=(const regex_iterator& that) -   { -      pdata = that.pdata; -      return *this; -   } -   bool operator==(const regex_iterator& that)const -   {  -      if((pdata.get() == 0) || (that.pdata.get() == 0)) -         return pdata.get() == that.pdata.get(); -      return pdata->compare(*(that.pdata.get()));  -   } -   bool operator!=(const regex_iterator& that)const -   { return !(*this == that); } -   const value_type& operator*()const -   { return pdata->get(); } -   const value_type* operator->()const -   { return &(pdata->get()); } -   regex_iterator& operator++() -   { -      cow(); -      if(0 == pdata->next()) -      { -         pdata.reset(); -      } -      return *this; -   } -   regex_iterator operator++(int) -   { -      regex_iterator result(*this); -      ++(*this); -      return result; -   } -private: - -   pimpl pdata; - -   void cow() -   { -      // copy-on-write -      if(pdata.get() && !pdata.unique()) -      { -         pdata.reset(new impl(*(pdata.get()))); -      } -   } -}; - -typedef regex_iterator<const char*> cregex_iterator; -typedef regex_iterator<std::string::const_iterator> sregex_iterator; -#ifndef BOOST_NO_WREGEX -typedef regex_iterator<const wchar_t*> wcregex_iterator; -typedef regex_iterator<std::wstring::const_iterator> wsregex_iterator; -#endif - -// make_regex_iterator: -template <class charT, class traits> -inline regex_iterator<const charT*, charT, traits> make_regex_iterator(const charT* p, const basic_regex<charT, traits>& e, regex_constants::match_flag_type m = regex_constants::match_default) -{ -   return regex_iterator<const charT*, charT, traits>(p, p+traits::length(p), e, m); -} -template <class charT, class traits, class ST, class SA> -inline regex_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits> make_regex_iterator(const std::basic_string<charT, ST, SA>& p, const basic_regex<charT, traits>& e, regex_constants::match_flag_type m = regex_constants::match_default) -{ -   return regex_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits>(p.begin(), p.end(), e, m); -} - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -} // namespace boost - -#endif // BOOST_REGEX_V4_REGEX_ITERATOR_HPP - diff --git a/3rdParty/Boost/boost/regex/v4/regex_match.hpp b/3rdParty/Boost/boost/regex/v4/regex_match.hpp deleted file mode 100644 index e947a15..0000000 --- a/3rdParty/Boost/boost/regex/v4/regex_match.hpp +++ /dev/null @@ -1,382 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ - - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         regex_match.hpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Regular expression matching algorithms. -  *                Note this is an internal header file included -  *                by regex.hpp, do not include on its own. -  */ - - -#ifndef BOOST_REGEX_MATCH_HPP -#define BOOST_REGEX_MATCH_HPP - -namespace boost{ - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -// -// proc regex_match -// returns true if the specified regular expression matches -// the whole of the input.  Fills in what matched in m. -// -template <class BidiIterator, class Allocator, class charT, class traits> -bool regex_match(BidiIterator first, BidiIterator last,  -                 match_results<BidiIterator, Allocator>& m,  -                 const basic_regex<charT, traits>& e,  -                 match_flag_type flags = match_default) -{ -   re_detail::perl_matcher<BidiIterator, Allocator, traits> matcher(first, last, m, e, flags, first); -   return matcher.match(); -} -template <class iterator, class charT, class traits> -bool regex_match(iterator first, iterator last,  -                 const basic_regex<charT, traits>& e,  -                 match_flag_type flags = match_default) -{ -   match_results<iterator> m; -   return regex_match(first, last, m, e, flags | regex_constants::match_any); -} -// -// query_match convenience interfaces: -#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING -// -// this isn't really a partial specialisation, but template function -// overloading - if the compiler doesn't support partial specialisation -// then it really won't support this either: -template <class charT, class Allocator, class traits> -inline bool regex_match(const charT* str,  -                        match_results<const charT*, Allocator>& m,  -                        const basic_regex<charT, traits>& e,  -                        match_flag_type flags = match_default) -{ -   return regex_match(str, str + traits::length(str), m, e, flags); -} - -template <class ST, class SA, class Allocator, class charT, class traits> -inline bool regex_match(const std::basic_string<charT, ST, SA>& s,  -                 match_results<typename std::basic_string<charT, ST, SA>::const_iterator, Allocator>& m,  -                 const basic_regex<charT, traits>& e,  -                 match_flag_type flags = match_default) -{ -   return regex_match(s.begin(), s.end(), m, e, flags); -} -template <class charT, class traits> -inline bool regex_match(const charT* str,  -                        const basic_regex<charT, traits>& e,  -                        match_flag_type flags = match_default) -{ -   match_results<const charT*> m; -   return regex_match(str, str + traits::length(str), m, e, flags | regex_constants::match_any); -} - -template <class ST, class SA, class charT, class traits> -inline bool regex_match(const std::basic_string<charT, ST, SA>& s,  -                 const basic_regex<charT, traits>& e,  -                 match_flag_type flags = match_default) -{ -   typedef typename std::basic_string<charT, ST, SA>::const_iterator iterator; -   match_results<iterator> m; -   return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any); -} -#else  // partial ordering -inline bool regex_match(const char* str,  -                        cmatch& m,  -                        const regex& e,  -                        match_flag_type flags = match_default) -{ -   return regex_match(str, str + regex::traits_type::length(str), m, e, flags); -} -inline bool regex_match(const char* str,  -                        const regex& e,  -                        match_flag_type flags = match_default) -{ -   match_results<const char*> m; -   return regex_match(str, str + regex::traits_type::length(str), m, e, flags | regex_constants::match_any); -} -#ifndef BOOST_NO_STD_LOCALE -inline bool regex_match(const char* str,  -                        cmatch& m,  -                        const basic_regex<char, cpp_regex_traits<char> >& e,  -                        match_flag_type flags = match_default) -{ -   return regex_match(str, str + regex::traits_type::length(str), m, e, flags); -} -inline bool regex_match(const char* str,  -                        const basic_regex<char, cpp_regex_traits<char> >& e,  -                        match_flag_type flags = match_default) -{ -   match_results<const char*> m; -   return regex_match(str, str + regex::traits_type::length(str), m, e, flags | regex_constants::match_any); -} -#endif -inline bool regex_match(const char* str,  -                        cmatch& m,  -                        const basic_regex<char, c_regex_traits<char> >& e,  -                        match_flag_type flags = match_default) -{ -   return regex_match(str, str + regex::traits_type::length(str), m, e, flags); -} -inline bool regex_match(const char* str,  -                        const basic_regex<char, c_regex_traits<char> >& e,  -                        match_flag_type flags = match_default) -{ -   match_results<const char*> m; -   return regex_match(str, str + regex::traits_type::length(str), m, e, flags | regex_constants::match_any); -} -#if defined(_WIN32) && !defined(BOOST_REGEX_NO_W32) -inline bool regex_match(const char* str,  -                        cmatch& m,  -                        const basic_regex<char, w32_regex_traits<char> >& e,  -                        match_flag_type flags = match_default) -{ -   return regex_match(str, str + regex::traits_type::length(str), m, e, flags); -} -inline bool regex_match(const char* str,  -                        const basic_regex<char, w32_regex_traits<char> >& e,  -                        match_flag_type flags = match_default) -{ -   match_results<const char*> m; -   return regex_match(str, str + regex::traits_type::length(str), m, e, flags | regex_constants::match_any); -} -#endif -#ifndef BOOST_NO_WREGEX -inline bool regex_match(const wchar_t* str,  -                        wcmatch& m,  -                        const wregex& e,  -                        match_flag_type flags = match_default) -{ -   return regex_match(str, str + wregex::traits_type::length(str), m, e, flags); -} -inline bool regex_match(const wchar_t* str,  -                        const wregex& e,  -                        match_flag_type flags = match_default) -{ -   match_results<const wchar_t*> m; -   return regex_match(str, str + wregex::traits_type::length(str), m, e, flags | regex_constants::match_any); -} -#ifndef BOOST_NO_STD_LOCALE -inline bool regex_match(const wchar_t* str,  -                        wcmatch& m,  -                        const basic_regex<wchar_t, cpp_regex_traits<wchar_t> >& e,  -                        match_flag_type flags = match_default) -{ -   return regex_match(str, str + wregex::traits_type::length(str), m, e, flags); -} -inline bool regex_match(const wchar_t* str,  -                        const basic_regex<wchar_t, cpp_regex_traits<wchar_t> >& e,  -                        match_flag_type flags = match_default) -{ -   match_results<const wchar_t*> m; -   return regex_match(str, str + wregex::traits_type::length(str), m, e, flags | regex_constants::match_any); -} -#endif -inline bool regex_match(const wchar_t* str,  -                        wcmatch& m,  -                        const basic_regex<wchar_t, c_regex_traits<wchar_t> >& e,  -                        match_flag_type flags = match_default) -{ -   return regex_match(str, str + wregex::traits_type::length(str), m, e, flags); -} -inline bool regex_match(const wchar_t* str,  -                        const basic_regex<wchar_t, c_regex_traits<wchar_t> >& e,  -                        match_flag_type flags = match_default) -{ -   match_results<const wchar_t*> m; -   return regex_match(str, str + wregex::traits_type::length(str), m, e, flags | regex_constants::match_any); -} -#if defined(_WIN32) && !defined(BOOST_REGEX_NO_W32) -inline bool regex_match(const wchar_t* str,  -                        wcmatch& m,  -                        const basic_regex<wchar_t, w32_regex_traits<wchar_t> >& e,  -                        match_flag_type flags = match_default) -{ -   return regex_match(str, str + wregex::traits_type::length(str), m, e, flags); -} -inline bool regex_match(const wchar_t* str,  -                        const basic_regex<wchar_t, w32_regex_traits<wchar_t> >& e,  -                        match_flag_type flags = match_default) -{ -   match_results<const wchar_t*> m; -   return regex_match(str, str + wregex::traits_type::length(str), m, e, flags | regex_constants::match_any); -} -#endif -#endif -inline bool regex_match(const std::string& s,  -                        smatch& m, -                        const regex& e,  -                        match_flag_type flags = match_default) -{ -   return regex_match(s.begin(), s.end(), m, e, flags); -} -inline bool regex_match(const std::string& s,  -                        const regex& e,  -                        match_flag_type flags = match_default) -{ -   match_results<std::string::const_iterator> m; -   return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any); -} -#ifndef BOOST_NO_STD_LOCALE -inline bool regex_match(const std::string& s,  -                        smatch& m, -                        const basic_regex<char, cpp_regex_traits<char> >& e,  -                        match_flag_type flags = match_default) -{ -   return regex_match(s.begin(), s.end(), m, e, flags); -} -inline bool regex_match(const std::string& s,  -                        const basic_regex<char, cpp_regex_traits<char> >& e,  -                        match_flag_type flags = match_default) -{ -   match_results<std::string::const_iterator> m; -   return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any); -} -#endif -inline bool regex_match(const std::string& s,  -                        smatch& m, -                        const basic_regex<char, c_regex_traits<char> >& e,  -                        match_flag_type flags = match_default) -{ -   return regex_match(s.begin(), s.end(), m, e, flags); -} -inline bool regex_match(const std::string& s,  -                        const basic_regex<char, c_regex_traits<char> >& e,  -                        match_flag_type flags = match_default) -{ -   match_results<std::string::const_iterator> m; -   return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any); -} -#if defined(_WIN32) && !defined(BOOST_REGEX_NO_W32) -inline bool regex_match(const std::string& s,  -                        smatch& m, -                        const basic_regex<char, w32_regex_traits<char> >& e,  -                        match_flag_type flags = match_default) -{ -   return regex_match(s.begin(), s.end(), m, e, flags); -} -inline bool regex_match(const std::string& s,  -                        const basic_regex<char, w32_regex_traits<char> >& e,  -                        match_flag_type flags = match_default) -{ -   match_results<std::string::const_iterator> m; -   return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any); -} -#endif -#if !defined(BOOST_NO_WREGEX) -inline bool regex_match(const std::basic_string<wchar_t>& s,  -                        match_results<std::basic_string<wchar_t>::const_iterator>& m, -                        const wregex& e,  -                        match_flag_type flags = match_default) -{ -   return regex_match(s.begin(), s.end(), m, e, flags); -} -inline bool regex_match(const std::basic_string<wchar_t>& s,  -                        const wregex& e,  -                        match_flag_type flags = match_default) -{ -   match_results<std::basic_string<wchar_t>::const_iterator> m; -   return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any); -} -#ifndef BOOST_NO_STD_LOCALE -inline bool regex_match(const std::basic_string<wchar_t>& s,  -                        match_results<std::basic_string<wchar_t>::const_iterator>& m, -                        const basic_regex<wchar_t, cpp_regex_traits<wchar_t> >& e,  -                        match_flag_type flags = match_default) -{ -   return regex_match(s.begin(), s.end(), m, e, flags); -} -inline bool regex_match(const std::basic_string<wchar_t>& s,  -                        const basic_regex<wchar_t, cpp_regex_traits<wchar_t> >& e,  -                        match_flag_type flags = match_default) -{ -   match_results<std::basic_string<wchar_t>::const_iterator> m; -   return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any); -} -#endif -inline bool regex_match(const std::basic_string<wchar_t>& s,  -                        match_results<std::basic_string<wchar_t>::const_iterator>& m, -                        const basic_regex<wchar_t, c_regex_traits<wchar_t> >& e,  -                        match_flag_type flags = match_default) -{ -   return regex_match(s.begin(), s.end(), m, e, flags); -} -inline bool regex_match(const std::basic_string<wchar_t>& s,  -                        const basic_regex<wchar_t, c_regex_traits<wchar_t> >& e,  -                        match_flag_type flags = match_default) -{ -   match_results<std::basic_string<wchar_t>::const_iterator> m; -   return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any); -} -#if defined(_WIN32) && !defined(BOOST_REGEX_NO_W32) -inline bool regex_match(const std::basic_string<wchar_t>& s,  -                        match_results<std::basic_string<wchar_t>::const_iterator>& m, -                        const basic_regex<wchar_t, w32_regex_traits<wchar_t> >& e,  -                        match_flag_type flags = match_default) -{ -   return regex_match(s.begin(), s.end(), m, e, flags); -} -inline bool regex_match(const std::basic_string<wchar_t>& s,  -                        const basic_regex<wchar_t, w32_regex_traits<wchar_t> >& e,  -                        match_flag_type flags = match_default) -{ -   match_results<std::basic_string<wchar_t>::const_iterator> m; -   return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any); -} -#endif -#endif - -#endif - - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -} // namespace boost - -#endif   // BOOST_REGEX_MATCH_HPP - - - - - - - - - - - - - - - - - - diff --git a/3rdParty/Boost/boost/regex/v4/regex_merge.hpp b/3rdParty/Boost/boost/regex/v4/regex_merge.hpp deleted file mode 100644 index 404ca77..0000000 --- a/3rdParty/Boost/boost/regex/v4/regex_merge.hpp +++ /dev/null @@ -1,93 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ - - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         regex_format.hpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Provides formatting output routines for search and replace -  *                operations.  Note this is an internal header file included -  *                by regex.hpp, do not include on its own. -  */ - -#ifndef BOOST_REGEX_V4_REGEX_MERGE_HPP -#define BOOST_REGEX_V4_REGEX_MERGE_HPP - - -namespace boost{ - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -template <class OutputIterator, class Iterator, class traits, class charT> -inline OutputIterator regex_merge(OutputIterator out, -                         Iterator first, -                         Iterator last, -                         const basic_regex<charT, traits>& e,  -                         const charT* fmt,  -                         match_flag_type flags = match_default) -{ -   return regex_replace(out, first, last, e, fmt, flags); -} - -template <class OutputIterator, class Iterator, class traits, class charT> -inline OutputIterator regex_merge(OutputIterator out, -                         Iterator first, -                         Iterator last, -                         const basic_regex<charT, traits>& e,  -                         const std::basic_string<charT>& fmt, -                         match_flag_type flags = match_default) -{ -   return regex_merge(out, first, last, e, fmt.c_str(), flags); -} - -template <class traits, class charT> -inline std::basic_string<charT> regex_merge(const std::basic_string<charT>& s, -                         const basic_regex<charT, traits>& e,  -                         const charT* fmt, -                         match_flag_type flags = match_default) -{ -   return regex_replace(s, e, fmt, flags); -} - -template <class traits, class charT> -inline std::basic_string<charT> regex_merge(const std::basic_string<charT>& s, -                         const basic_regex<charT, traits>& e,  -                         const std::basic_string<charT>& fmt, -                         match_flag_type flags = match_default) -{ -   return regex_replace(s, e, fmt, flags); -} - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -} // namespace boost - -#endif  // BOOST_REGEX_V4_REGEX_MERGE_HPP - - diff --git a/3rdParty/Boost/boost/regex/v4/regex_raw_buffer.hpp b/3rdParty/Boost/boost/regex/v4/regex_raw_buffer.hpp deleted file mode 100644 index 52d45a2..0000000 --- a/3rdParty/Boost/boost/regex/v4/regex_raw_buffer.hpp +++ /dev/null @@ -1,210 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ - - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         regex_raw_buffer.hpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Raw character buffer for regex code. -  *                Note this is an internal header file included -  *                by regex.hpp, do not include on its own. -  */ - -#ifndef BOOST_REGEX_RAW_BUFFER_HPP -#define BOOST_REGEX_RAW_BUFFER_HPP - -#ifndef BOOST_REGEX_CONFIG_HPP -#include <boost/regex/config.hpp> -#endif - -#include <algorithm> -#include <cstddef> - -namespace boost{ -   namespace re_detail{ - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -struct empty_padding{}; - -union padding -{ -   void* p; -   unsigned int i; -}; - -template <int N> -struct padding3 -{ -   enum{ -      padding_size = 8, -      padding_mask = 7 -   }; -}; - -template<> -struct padding3<2> -{ -   enum{ -      padding_size = 2, -      padding_mask = 1 -   }; -}; - -template<> -struct padding3<4> -{ -   enum{ -      padding_size = 4, -      padding_mask = 3 -   }; -}; - -template<> -struct padding3<8> -{ -   enum{ -      padding_size = 8, -      padding_mask = 7 -   }; -}; - -template<> -struct padding3<16> -{ -   enum{ -      padding_size = 16, -      padding_mask = 15 -   }; -}; - -enum{ -   padding_size = padding3<sizeof(padding)>::padding_size, -   padding_mask = padding3<sizeof(padding)>::padding_mask -}; - -// -// class raw_storage -// basically this is a simplified vector<unsigned char> -// this is used by basic_regex for expression storage -// - -class BOOST_REGEX_DECL raw_storage -{ -public: -   typedef std::size_t           size_type; -   typedef unsigned char*        pointer; -private: -   pointer last, start, end; -public: - -   raw_storage(); -   raw_storage(size_type n); - -   ~raw_storage() -   { -      ::operator delete(start); -   } - -   void BOOST_REGEX_CALL resize(size_type n); -    -   void* BOOST_REGEX_CALL extend(size_type n) -   { -      if(size_type(last - end) < n) -         resize(n + (end - start)); -      register pointer result = end; -      end += n; -      return result; -   } - -   void* BOOST_REGEX_CALL insert(size_type pos, size_type n); - -   size_type BOOST_REGEX_CALL size() -   { -      return end - start; -   } - -   size_type BOOST_REGEX_CALL capacity() -   { -      return last - start; -   } - -   void* BOOST_REGEX_CALL data()const -   { -      return start; -   } - -   size_type BOOST_REGEX_CALL index(void* ptr) -   { -      return static_cast<pointer>(ptr) - static_cast<pointer>(data()); -   } - -   void BOOST_REGEX_CALL clear() -   { -      end = start; -   } - -   void BOOST_REGEX_CALL align() -   { -      // move end up to a boundary: -      end = start + (((end - start) + padding_mask) & ~padding_mask); -   } -   void swap(raw_storage& that) -   { -      std::swap(start, that.start); -      std::swap(end, that.end); -      std::swap(last, that.last); -  } -}; - -inline raw_storage::raw_storage() -{ -   last = start = end = 0; -} - -inline raw_storage::raw_storage(size_type n) -{ -   start = end = static_cast<pointer>(::operator new(n)); -   BOOST_REGEX_NOEH_ASSERT(start) -   last = start + n; -} - - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -} // namespace re_detail -} // namespace boost - -#endif - - - - - - diff --git a/3rdParty/Boost/boost/regex/v4/regex_replace.hpp b/3rdParty/Boost/boost/regex/v4/regex_replace.hpp deleted file mode 100644 index c4544c0..0000000 --- a/3rdParty/Boost/boost/regex/v4/regex_replace.hpp +++ /dev/null @@ -1,122 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ - - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         regex_format.hpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Provides formatting output routines for search and replace -  *                operations.  Note this is an internal header file included -  *                by regex.hpp, do not include on its own. -  */ - -#ifndef BOOST_REGEX_V4_REGEX_REPLACE_HPP -#define BOOST_REGEX_V4_REGEX_REPLACE_HPP - - -namespace boost{ - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -template <class OutputIterator, class BidirectionalIterator, class traits, class charT> -OutputIterator regex_replace(OutputIterator out, -                         BidirectionalIterator first, -                         BidirectionalIterator last, -                         const basic_regex<charT, traits>& e,  -                         const charT* fmt,  -                         match_flag_type flags = match_default) -{ -   regex_iterator<BidirectionalIterator, charT, traits> i(first, last, e, flags); -   regex_iterator<BidirectionalIterator, charT, traits> j; -   if(i == j) -   { -      if(!(flags & regex_constants::format_no_copy)) -         out = re_detail::copy(first, last, out); -   } -   else -   { -      BidirectionalIterator last_m(first); -      while(i != j) -      { -         if(!(flags & regex_constants::format_no_copy)) -            out = re_detail::copy(i->prefix().first, i->prefix().second, out);  -         out = i->format(out, fmt, flags, e); -         last_m = (*i)[0].second; -         if(flags & regex_constants::format_first_only) -            break; -         ++i; -      } -      if(!(flags & regex_constants::format_no_copy)) -         out = re_detail::copy(last_m, last, out); -   } -   return out; -} - -template <class OutputIterator, class Iterator, class traits, class charT> -inline OutputIterator regex_replace(OutputIterator out, -                         Iterator first, -                         Iterator last, -                         const basic_regex<charT, traits>& e,  -                         const std::basic_string<charT>& fmt, -                         match_flag_type flags = match_default) -{ -   return regex_replace(out, first, last, e, fmt.c_str(), flags); -} - -template <class traits, class charT> -std::basic_string<charT> regex_replace(const std::basic_string<charT>& s, -                         const basic_regex<charT, traits>& e,  -                         const charT* fmt, -                         match_flag_type flags = match_default) -{ -   std::basic_string<charT> result; -   re_detail::string_out_iterator<std::basic_string<charT> > i(result); -   regex_replace(i, s.begin(), s.end(), e, fmt, flags); -   return result; -} - -template <class traits, class charT> -std::basic_string<charT> regex_replace(const std::basic_string<charT>& s, -                         const basic_regex<charT, traits>& e,  -                         const std::basic_string<charT>& fmt, -                         match_flag_type flags = match_default) -{ -   std::basic_string<charT> result; -   re_detail::string_out_iterator<std::basic_string<charT> > i(result); -   regex_replace(i, s.begin(), s.end(), e, fmt.c_str(), flags); -   return result; -} - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -} // namespace boost - -#endif  // BOOST_REGEX_V4_REGEX_REPLACE_HPP - - diff --git a/3rdParty/Boost/boost/regex/v4/regex_search.hpp b/3rdParty/Boost/boost/regex/v4/regex_search.hpp deleted file mode 100644 index cf5579d..0000000 --- a/3rdParty/Boost/boost/regex/v4/regex_search.hpp +++ /dev/null @@ -1,217 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ - - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         regex_search.hpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Provides regex_search implementation. -  */ - -#ifndef BOOST_REGEX_V4_REGEX_SEARCH_HPP -#define BOOST_REGEX_V4_REGEX_SEARCH_HPP - - -namespace boost{ - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -template <class BidiIterator, class Allocator, class charT, class traits> -bool regex_search(BidiIterator first, BidiIterator last,  -                  match_results<BidiIterator, Allocator>& m,  -                  const basic_regex<charT, traits>& e,  -                  match_flag_type flags = match_default) -{ -   return regex_search(first, last, m, e, flags, first); -} - -template <class BidiIterator, class Allocator, class charT, class traits> -bool regex_search(BidiIterator first, BidiIterator last,  -                  match_results<BidiIterator, Allocator>& m,  -                  const basic_regex<charT, traits>& e,  -                  match_flag_type flags, -                  BidiIterator base) -{ -   if(e.flags() & regex_constants::failbit) -      return false; - -   re_detail::perl_matcher<BidiIterator, Allocator, traits> matcher(first, last, m, e, flags, base); -   return matcher.find(); -} - -// -// regex_search convenience interfaces: -#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING -// -// this isn't really a partial specialisation, but template function -// overloading - if the compiler doesn't support partial specialisation -// then it really won't support this either: -template <class charT, class Allocator, class traits> -inline bool regex_search(const charT* str,  -                        match_results<const charT*, Allocator>& m,  -                        const basic_regex<charT, traits>& e,  -                        match_flag_type flags = match_default) -{ -   return regex_search(str, str + traits::length(str), m, e, flags); -} - -template <class ST, class SA, class Allocator, class charT, class traits> -inline bool regex_search(const std::basic_string<charT, ST, SA>& s,  -                 match_results<typename std::basic_string<charT, ST, SA>::const_iterator, Allocator>& m,  -                 const basic_regex<charT, traits>& e,  -                 match_flag_type flags = match_default) -{ -   return regex_search(s.begin(), s.end(), m, e, flags); -} -#else  // partial overloads: -inline bool regex_search(const char* str,  -                        cmatch& m,  -                        const regex& e,  -                        match_flag_type flags = match_default) -{ -   return regex_search(str, str + regex::traits_type::length(str), m, e, flags); -} -inline bool regex_search(const char* first, const char* last,  -                  const regex& e,  -                  match_flag_type flags = match_default) -{ -   cmatch m; -   return regex_search(first, last, m, e, flags | regex_constants::match_any); -} - -#ifndef BOOST_NO_WREGEX -inline bool regex_search(const wchar_t* str,  -                        wcmatch& m,  -                        const wregex& e,  -                        match_flag_type flags = match_default) -{ -   return regex_search(str, str + wregex::traits_type::length(str), m, e, flags); -} -inline bool regex_search(const wchar_t* first, const wchar_t* last,  -                  const wregex& e,  -                  match_flag_type flags = match_default) -{ -   wcmatch m; -   return regex_search(first, last, m, e, flags | regex_constants::match_any); -} -#endif -inline bool regex_search(const std::string& s,  -                        smatch& m, -                        const regex& e,  -                        match_flag_type flags = match_default) -{ -   return regex_search(s.begin(), s.end(), m, e, flags); -} -#if !defined(BOOST_NO_WREGEX) -inline bool regex_search(const std::basic_string<wchar_t>& s,  -                        wsmatch& m, -                        const wregex& e,  -                        match_flag_type flags = match_default) -{ -   return regex_search(s.begin(), s.end(), m, e, flags); -} -#endif - -#endif - -template <class BidiIterator, class charT, class traits> -bool regex_search(BidiIterator first, BidiIterator last,  -                  const basic_regex<charT, traits>& e,  -                  match_flag_type flags = match_default) -{ -   if(e.flags() & regex_constants::failbit) -      return false; - -   match_results<BidiIterator> m; -   typedef typename match_results<BidiIterator>::allocator_type match_alloc_type; -   re_detail::perl_matcher<BidiIterator, match_alloc_type, traits> matcher(first, last, m, e, flags | regex_constants::match_any, first); -   return matcher.find(); -} - -#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING - -template <class charT, class traits> -inline bool regex_search(const charT* str,  -                        const basic_regex<charT, traits>& e,  -                        match_flag_type flags = match_default) -{ -   return regex_search(str, str + traits::length(str), e, flags); -} - -template <class ST, class SA, class charT, class traits> -inline bool regex_search(const std::basic_string<charT, ST, SA>& s,  -                 const basic_regex<charT, traits>& e,  -                 match_flag_type flags = match_default) -{ -   return regex_search(s.begin(), s.end(), e, flags); -} -#else  // non-template function overloads -inline bool regex_search(const char* str,  -                        const regex& e,  -                        match_flag_type flags = match_default) -{ -   cmatch m; -   return regex_search(str, str + regex::traits_type::length(str), m, e, flags | regex_constants::match_any); -} -#ifndef BOOST_NO_WREGEX -inline bool regex_search(const wchar_t* str,  -                        const wregex& e,  -                        match_flag_type flags = match_default) -{ -   wcmatch m; -   return regex_search(str, str + wregex::traits_type::length(str), m, e, flags | regex_constants::match_any); -} -#endif -inline bool regex_search(const std::string& s,  -                        const regex& e,  -                        match_flag_type flags = match_default) -{ -   smatch m; -   return regex_search(s.begin(), s.end(), m, e, flags | regex_constants::match_any); -} -#if !defined(BOOST_NO_WREGEX) -inline bool regex_search(const std::basic_string<wchar_t>& s,  -                        const wregex& e,  -                        match_flag_type flags = match_default) -{ -   wsmatch m; -   return regex_search(s.begin(), s.end(), m, e, flags | regex_constants::match_any); -} - -#endif // BOOST_NO_WREGEX - -#endif // partial overload - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -} // namespace boost - -#endif  // BOOST_REGEX_V4_REGEX_SEARCH_HPP - - diff --git a/3rdParty/Boost/boost/regex/v4/regex_split.hpp b/3rdParty/Boost/boost/regex/v4/regex_split.hpp deleted file mode 100644 index a7ae350..0000000 --- a/3rdParty/Boost/boost/regex/v4/regex_split.hpp +++ /dev/null @@ -1,172 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ -  - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         regex_split.hpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Implements regex_split and associated functions. -  *                Note this is an internal header file included -  *                by regex.hpp, do not include on its own. -  */ - -#ifndef BOOST_REGEX_SPLIT_HPP -#define BOOST_REGEX_SPLIT_HPP - -namespace boost{ - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#ifdef BOOST_MSVC -#  pragma warning(push) -#  pragma warning(disable: 4800) -#endif - -namespace re_detail{ - -template <class charT> -const basic_regex<charT>& get_default_expression(charT) -{ -   static const charT expression_text[4] = { '\\', 's', '+', '\00', }; -   static const basic_regex<charT> e(expression_text); -   return e; -} - -template <class OutputIterator, class charT, class Traits1, class Alloc1> -class split_pred -{ -   typedef std::basic_string<charT, Traits1, Alloc1> string_type; -   typedef typename string_type::const_iterator iterator_type; -   iterator_type* p_last; -   OutputIterator* p_out; -   std::size_t* p_max; -   std::size_t initial_max; -public: -   split_pred(iterator_type* a, OutputIterator* b, std::size_t* c) -      : p_last(a), p_out(b), p_max(c), initial_max(*c) {} - -   bool operator()(const match_results<iterator_type>& what); -}; - -template <class OutputIterator, class charT, class Traits1, class Alloc1> -bool split_pred<OutputIterator, charT, Traits1, Alloc1>::operator() -   (const match_results<iterator_type>& what) -{ -   *p_last = what[0].second; -   if(what.size() > 1) -   { -      // output sub-expressions only: -      for(unsigned i = 1; i < what.size(); ++i) -      { -         *(*p_out) = what.str(i); -         ++(*p_out); -         if(0 == --*p_max) return false; -      } -      return *p_max != 0; -   } -   else -   { -      // output $` only if it's not-null or not at the start of the input: -      const sub_match<iterator_type>& sub = what[-1]; -      if((sub.first != sub.second) || (*p_max != initial_max)) -      { -         *(*p_out) = sub.str(); -         ++(*p_out); -         return --*p_max; -      } -   } -   // -   // initial null, do nothing: -   return true; -} - -} // namespace re_detail - -template <class OutputIterator, class charT, class Traits1, class Alloc1, class Traits2> -std::size_t regex_split(OutputIterator out, -                   std::basic_string<charT, Traits1, Alloc1>& s,  -                   const basic_regex<charT, Traits2>& e, -                   match_flag_type flags, -                   std::size_t max_split) -{ -   typedef typename std::basic_string<charT, Traits1, Alloc1>::const_iterator  ci_t; -   typedef typename match_results<ci_t>::allocator_type                        match_allocator; -   ci_t last = s.begin(); -   std::size_t init_size = max_split; -   re_detail::split_pred<OutputIterator, charT, Traits1, Alloc1> pred(&last, &out, &max_split); -   ci_t i, j; -   i = s.begin(); -   j = s.end(); -   regex_grep(pred, i, j, e, flags); -   // -   // if there is still input left, do a final push as long as max_split -   // is not exhausted, and we're not splitting sub-expressions rather  -   // than whitespace: -   if(max_split && (last != s.end()) && (e.mark_count() == 1)) -   { -      *out = std::basic_string<charT, Traits1, Alloc1>((ci_t)last, (ci_t)s.end()); -      ++out; -      last = s.end(); -      --max_split; -   } -   // -   // delete from the string everything that has been processed so far: -   s.erase(0, last - s.begin()); -   // -   // return the number of new records pushed: -   return init_size - max_split; -} - -template <class OutputIterator, class charT, class Traits1, class Alloc1, class Traits2> -inline std::size_t regex_split(OutputIterator out, -                   std::basic_string<charT, Traits1, Alloc1>& s,  -                   const basic_regex<charT, Traits2>& e, -                   match_flag_type flags = match_default) -{ -   return regex_split(out, s, e, flags, UINT_MAX); -} - -template <class OutputIterator, class charT, class Traits1, class Alloc1> -inline std::size_t regex_split(OutputIterator out, -                   std::basic_string<charT, Traits1, Alloc1>& s) -{ -   return regex_split(out, s, re_detail::get_default_expression(charT(0)), match_default, UINT_MAX); -} - -#ifdef BOOST_MSVC -#  pragma warning(pop) -#endif - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -} // namespace boost - -#endif - - diff --git a/3rdParty/Boost/boost/regex/v4/regex_token_iterator.hpp b/3rdParty/Boost/boost/regex/v4/regex_token_iterator.hpp deleted file mode 100644 index 4e8bc36..0000000 --- a/3rdParty/Boost/boost/regex/v4/regex_token_iterator.hpp +++ /dev/null @@ -1,342 +0,0 @@ -/* - * - * Copyright (c) 2003 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ - - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         regex_token_iterator.hpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Provides regex_token_iterator implementation. -  */ - -#ifndef BOOST_REGEX_V4_REGEX_TOKEN_ITERATOR_HPP -#define BOOST_REGEX_V4_REGEX_TOKEN_ITERATOR_HPP - -#include <boost/shared_ptr.hpp> -#include <boost/detail/workaround.hpp> -#if (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\ -      || BOOST_WORKAROUND(BOOST_MSVC, < 1300) \ -      || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) -// -// Borland C++ Builder 6, and Visual C++ 6, -// can't cope with the array template constructor -// so we have a template member that will accept any type as  -// argument, and then assert that is really is an array: -// -#include <boost/static_assert.hpp> -#include <boost/type_traits/is_array.hpp> -#endif - -namespace boost{ - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif -#if BOOST_WORKAROUND(BOOST_MSVC, > 1300) -#  pragma warning(push) -#  pragma warning(disable:4700) -#endif - -template <class BidirectionalIterator, -          class charT, -          class traits> -class regex_token_iterator_implementation  -{ -   typedef basic_regex<charT, traits> regex_type; -   typedef sub_match<BidirectionalIterator>      value_type; - -   match_results<BidirectionalIterator> what;   // current match -   BidirectionalIterator                base;    // start of search area -   BidirectionalIterator                end;    // end of search area -   const regex_type                     re;    // the expression -   match_flag_type                      flags;  // match flags -   value_type                           result; // the current string result -   int                                  N;      // the current sub-expression being enumerated -   std::vector<int>                     subs;   // the sub-expressions to enumerate - -public: -   regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, int sub, match_flag_type f) -      : end(last), re(*p), flags(f){ subs.push_back(sub); } -   regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, const std::vector<int>& v, match_flag_type f) -      : end(last), re(*p), flags(f), subs(v){} -#if !BOOST_WORKAROUND(__HP_aCC, < 60700) -#if (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\ -      || BOOST_WORKAROUND(BOOST_MSVC, < 1300) \ -      || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) \ -      || BOOST_WORKAROUND(__HP_aCC, < 60700) -   template <class T> -   regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, const T& submatches, match_flag_type f) -      : end(last), re(*p), flags(f) -   { -      // assert that T really is an array: -      BOOST_STATIC_ASSERT(::boost::is_array<T>::value); -      const std::size_t array_size = sizeof(T) / sizeof(submatches[0]); -      for(std::size_t i = 0; i < array_size; ++i) -      { -         subs.push_back(submatches[i]); -      } -   } -#else -   template <std::size_t CN> -   regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, const int (&submatches)[CN], match_flag_type f) -      : end(last), re(*p), flags(f) -   { -      for(std::size_t i = 0; i < CN; ++i) -      { -         subs.push_back(submatches[i]); -      } -   } -#endif -#endif -   bool init(BidirectionalIterator first) -   { -      N = 0; -      base = first; -      if(regex_search(first, end, what, re, flags, base) == true) -      { -         N = 0; -         result = ((subs[N] == -1) ? what.prefix() : what[(int)subs[N]]); -         return true; -      } -      else if((subs[N] == -1) && (first != end)) -      { -         result.first = first; -         result.second = end; -         result.matched = (first != end); -         N = -1; -         return true; -      } -      return false; -   } -   bool compare(const regex_token_iterator_implementation& that) -   { -      if(this == &that) return true; -      return (&re.get_data() == &that.re.get_data())  -         && (end == that.end)  -         && (flags == that.flags)  -         && (N == that.N)  -         && (what[0].first == that.what[0].first)  -         && (what[0].second == that.what[0].second); -   } -   const value_type& get() -   { return result; } -   bool next() -   { -      if(N == -1) -         return false; -      if(N+1 < (int)subs.size()) -      { -         ++N; -         result =((subs[N] == -1) ? what.prefix() : what[subs[N]]); -         return true; -      } -      //if(what.prefix().first != what[0].second) -      //   flags |= /*match_prev_avail |*/ regex_constants::match_not_bob; -      BidirectionalIterator last_end(what[0].second); -      if(regex_search(last_end, end, what, re, ((what[0].first == what[0].second) ? flags | regex_constants::match_not_initial_null : flags), base)) -      { -         N =0; -         result =((subs[N] == -1) ? what.prefix() : what[subs[N]]); -         return true; -      } -      else if((last_end != end) && (subs[0] == -1)) -      { -         N =-1; -         result.first = last_end; -         result.second = end; -         result.matched = (last_end != end); -         return true; -      } -      return false; -   } -private: -   regex_token_iterator_implementation& operator=(const regex_token_iterator_implementation&); -}; - -template <class BidirectionalIterator,  -          class charT = BOOST_DEDUCED_TYPENAME re_detail::regex_iterator_traits<BidirectionalIterator>::value_type, -          class traits = regex_traits<charT> > -class regex_token_iterator  -#ifndef BOOST_NO_STD_ITERATOR -   : public std::iterator< -         std::forward_iterator_tag,  -         sub_match<BidirectionalIterator>, -         typename re_detail::regex_iterator_traits<BidirectionalIterator>::difference_type, -         const sub_match<BidirectionalIterator>*, -         const sub_match<BidirectionalIterator>& >          -#endif -{ -private: -   typedef regex_token_iterator_implementation<BidirectionalIterator, charT, traits> impl; -   typedef shared_ptr<impl> pimpl; -public: -   typedef          basic_regex<charT, traits>                   regex_type; -   typedef          sub_match<BidirectionalIterator>                        value_type; -   typedef typename re_detail::regex_iterator_traits<BidirectionalIterator>::difference_type  -                                                                            difference_type; -   typedef          const value_type*                                       pointer; -   typedef          const value_type&                                       reference;  -   typedef          std::forward_iterator_tag                               iterator_category; -    -   regex_token_iterator(){} -   regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re,  -                        int submatch = 0, match_flag_type m = match_default) -                        : pdata(new impl(&re, b, submatch, m)) -   { -      if(!pdata->init(a)) -         pdata.reset(); -   } -   regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re,  -                        const std::vector<int>& submatches, match_flag_type m = match_default) -                        : pdata(new impl(&re, b, submatches, m)) -   { -      if(!pdata->init(a)) -         pdata.reset(); -   } -#if !BOOST_WORKAROUND(__HP_aCC, < 60700) -#if (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\ -      || BOOST_WORKAROUND(BOOST_MSVC, < 1300) \ -      || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) \ -      || BOOST_WORKAROUND(__HP_aCC, < 60700) -   template <class T> -   regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re, -                        const T& submatches, match_flag_type m = match_default) -                        : pdata(new impl(&re, b, submatches, m)) -   { -      if(!pdata->init(a)) -         pdata.reset(); -   } -#else -   template <std::size_t N> -   regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re, -                        const int (&submatches)[N], match_flag_type m = match_default) -                        : pdata(new impl(&re, b, submatches, m)) -   { -      if(!pdata->init(a)) -         pdata.reset(); -   } -#endif -#endif -   regex_token_iterator(const regex_token_iterator& that) -      : pdata(that.pdata) {} -   regex_token_iterator& operator=(const regex_token_iterator& that) -   { -      pdata = that.pdata; -      return *this; -   } -   bool operator==(const regex_token_iterator& that)const -   {  -      if((pdata.get() == 0) || (that.pdata.get() == 0)) -         return pdata.get() == that.pdata.get(); -      return pdata->compare(*(that.pdata.get()));  -   } -   bool operator!=(const regex_token_iterator& that)const -   { return !(*this == that); } -   const value_type& operator*()const -   { return pdata->get(); } -   const value_type* operator->()const -   { return &(pdata->get()); } -   regex_token_iterator& operator++() -   { -      cow(); -      if(0 == pdata->next()) -      { -         pdata.reset(); -      } -      return *this; -   } -   regex_token_iterator operator++(int) -   { -      regex_token_iterator result(*this); -      ++(*this); -      return result; -   } -private: - -   pimpl pdata; - -   void cow() -   { -      // copy-on-write -      if(pdata.get() && !pdata.unique()) -      { -         pdata.reset(new impl(*(pdata.get()))); -      } -   } -}; - -typedef regex_token_iterator<const char*> cregex_token_iterator; -typedef regex_token_iterator<std::string::const_iterator> sregex_token_iterator; -#ifndef BOOST_NO_WREGEX -typedef regex_token_iterator<const wchar_t*> wcregex_token_iterator; -typedef regex_token_iterator<std::wstring::const_iterator> wsregex_token_iterator; -#endif - -template <class charT, class traits> -inline regex_token_iterator<const charT*, charT, traits> make_regex_token_iterator(const charT* p, const basic_regex<charT, traits>& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default) -{ -   return regex_token_iterator<const charT*, charT, traits>(p, p+traits::length(p), e, submatch, m); -} -template <class charT, class traits, class ST, class SA> -inline regex_token_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits> make_regex_token_iterator(const std::basic_string<charT, ST, SA>& p, const basic_regex<charT, traits>& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default) -{ -   return regex_token_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits>(p.begin(), p.end(), e, submatch, m); -} -#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300) -template <class charT, class traits, std::size_t N> -inline regex_token_iterator<const charT*, charT, traits> make_regex_token_iterator(const charT* p, const basic_regex<charT, traits>& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default) -{ -   return regex_token_iterator<const charT*, charT, traits>(p, p+traits::length(p), e, submatch, m); -} -template <class charT, class traits, class ST, class SA, std::size_t N> -inline regex_token_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits> make_regex_token_iterator(const std::basic_string<charT, ST, SA>& p, const basic_regex<charT, traits>& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default) -{ -   return regex_token_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits>(p.begin(), p.end(), e, submatch, m); -} -#endif -template <class charT, class traits> -inline regex_token_iterator<const charT*, charT, traits> make_regex_token_iterator(const charT* p, const basic_regex<charT, traits>& e, const std::vector<int>& submatch, regex_constants::match_flag_type m = regex_constants::match_default) -{ -   return regex_token_iterator<const charT*, charT, traits>(p, p+traits::length(p), e, submatch, m); -} -template <class charT, class traits, class ST, class SA> -inline regex_token_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits> make_regex_token_iterator(const std::basic_string<charT, ST, SA>& p, const basic_regex<charT, traits>& e, const std::vector<int>& submatch, regex_constants::match_flag_type m = regex_constants::match_default) -{ -   return regex_token_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits>(p.begin(), p.end(), e, submatch, m); -} - -#if BOOST_WORKAROUND(BOOST_MSVC, > 1300) -#  pragma warning(pop) -#endif -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -} // namespace boost - -#endif // BOOST_REGEX_V4_REGEX_TOKEN_ITERATOR_HPP - - - - diff --git a/3rdParty/Boost/boost/regex/v4/regex_traits.hpp b/3rdParty/Boost/boost/regex/v4/regex_traits.hpp deleted file mode 100644 index f5f0402..0000000 --- a/3rdParty/Boost/boost/regex/v4/regex_traits.hpp +++ /dev/null @@ -1,189 +0,0 @@ -/* - * - * Copyright (c) 2003 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ -  - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         regex_traits.hpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Declares regular expression traits classes. -  */ - -#ifndef BOOST_REGEX_TRAITS_HPP_INCLUDED -#define BOOST_REGEX_TRAITS_HPP_INCLUDED - -#ifndef BOOST_REGEX_CONFIG_HPP -#include <boost/regex/config.hpp> -#endif -#ifndef BOOST_REGEX_WORKAROUND_HPP -#include <boost/regex/v4/regex_workaround.hpp> -#endif -#ifndef BOOST_REGEX_SYNTAX_TYPE_HPP -#include <boost/regex/v4/syntax_type.hpp> -#endif -#ifndef BOOST_REGEX_ERROR_TYPE_HPP -#include <boost/regex/v4/error_type.hpp> -#endif -#ifndef BOOST_REGEX_TRAITS_DEFAULTS_HPP_INCLUDED -#include <boost/regex/v4/regex_traits_defaults.hpp> -#endif -#ifndef BOOST_NO_STD_LOCALE -#  ifndef BOOST_CPP_REGEX_TRAITS_HPP_INCLUDED -#     include <boost/regex/v4/cpp_regex_traits.hpp> -#  endif -#endif -#if !BOOST_WORKAROUND(__BORLANDC__, < 0x560) -#  ifndef BOOST_C_REGEX_TRAITS_HPP_INCLUDED -#     include <boost/regex/v4/c_regex_traits.hpp> -#  endif -#endif -#if defined(_WIN32) && !defined(BOOST_REGEX_NO_W32) -#  ifndef BOOST_W32_REGEX_TRAITS_HPP_INCLUDED -#     include <boost/regex/v4/w32_regex_traits.hpp> -#  endif -#endif -#ifndef BOOST_REGEX_FWD_HPP_INCLUDED -#include <boost/regex_fwd.hpp> -#endif - -#include "boost/mpl/has_xxx.hpp" -#include <boost/static_assert.hpp> - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -namespace boost{ - -template <class charT, class implementationT > -struct regex_traits : public implementationT -{ -   regex_traits() : implementationT() {} -}; - -// -// class regex_traits_wrapper. -// this is what our implementation will actually store; -// it provides default implementations of the "optional" -// interfaces that we support, in addition to the -// required "standard" ones: -// -namespace re_detail{ -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !BOOST_WORKAROUND(__HP_aCC, < 60000) -BOOST_MPL_HAS_XXX_TRAIT_DEF(boost_extensions_tag) -#else -template<class T> -struct has_boost_extensions_tag -{ -   BOOST_STATIC_CONSTANT(bool, value = false); -}; -#endif - -template <class BaseT> -struct default_wrapper : public BaseT -{ -   typedef typename BaseT::char_type char_type; -   std::string error_string(::boost::regex_constants::error_type e)const -   { -      return ::boost::re_detail::get_default_error_string(e); -   } -   ::boost::regex_constants::syntax_type syntax_type(char_type c)const -   { -      return ((c & 0x7f) == c) ? get_default_syntax_type(static_cast<char>(c)) : ::boost::regex_constants::syntax_char; -   } -   ::boost::regex_constants::escape_syntax_type escape_syntax_type(char_type c)const -   { -      return ((c & 0x7f) == c) ? get_default_escape_syntax_type(static_cast<char>(c)) : ::boost::regex_constants::escape_type_identity; -   } -   int toi(const char_type*& p1, const char_type* p2, int radix)const -   { -      return ::boost::re_detail::global_toi(p1, p2, radix, *this); -   } -   char_type translate(char_type c, bool icase)const -   { -      return (icase ? this->translate_nocase(c) : this->translate(c)); -   } -   char_type translate(char_type c)const -   { -      return BaseT::translate(c); -   } -   char_type tolower(char_type c)const -   { -      return ::boost::re_detail::global_lower(c); -   } -   char_type toupper(char_type c)const -   { -      return ::boost::re_detail::global_upper(c); -   } -}; - -template <class BaseT, bool has_extensions> -struct compute_wrapper_base -{ -   typedef BaseT type; -}; -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !BOOST_WORKAROUND(__HP_aCC, < 60000) -template <class BaseT> -struct compute_wrapper_base<BaseT, false> -{ -   typedef default_wrapper<BaseT> type; -}; -#else -template <> -struct compute_wrapper_base<c_regex_traits<char>, false> -{ -   typedef default_wrapper<c_regex_traits<char> > type; -}; -#ifndef BOOST_NO_WREGEX -template <> -struct compute_wrapper_base<c_regex_traits<wchar_t>, false> -{ -   typedef default_wrapper<c_regex_traits<wchar_t> > type; -}; -#endif -#endif - -} // namespace re_detail - -template <class BaseT> -struct regex_traits_wrapper  -   : public ::boost::re_detail::compute_wrapper_base< -               BaseT,  -               ::boost::re_detail::has_boost_extensions_tag<BaseT>::value -            >::type -{ -   regex_traits_wrapper(){} -private: -   regex_traits_wrapper(const regex_traits_wrapper&); -   regex_traits_wrapper& operator=(const regex_traits_wrapper&); -}; - -} // namespace boost - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif // include - diff --git a/3rdParty/Boost/boost/regex/v4/regex_traits_defaults.hpp b/3rdParty/Boost/boost/regex/v4/regex_traits_defaults.hpp deleted file mode 100644 index 42428dd..0000000 --- a/3rdParty/Boost/boost/regex/v4/regex_traits_defaults.hpp +++ /dev/null @@ -1,331 +0,0 @@ -/* - * - * Copyright (c) 2004 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ -  - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         regex_traits_defaults.hpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Declares API's for access to regex_traits default properties. -  */ - -#ifndef BOOST_REGEX_TRAITS_DEFAULTS_HPP_INCLUDED -#define BOOST_REGEX_TRAITS_DEFAULTS_HPP_INCLUDED - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#ifndef BOOST_REGEX_SYNTAX_TYPE_HPP -#include <boost/regex/v4/syntax_type.hpp> -#endif -#ifndef BOOST_REGEX_ERROR_TYPE_HPP -#include <boost/regex/v4/error_type.hpp> -#endif - -#ifdef BOOST_NO_STDC_NAMESPACE -namespace std{ -   using ::strlen; -} -#endif - -namespace boost{ namespace re_detail{ - - -// -// helpers to suppress warnings: -// -template <class charT> -inline bool is_extended(charT c) -{ return c > 256; } -inline bool is_extended(char) -{ return false; } - - -BOOST_REGEX_DECL const char* BOOST_REGEX_CALL get_default_syntax(regex_constants::syntax_type n); -BOOST_REGEX_DECL const char* BOOST_REGEX_CALL get_default_error_string(regex_constants::error_type n); -BOOST_REGEX_DECL regex_constants::syntax_type BOOST_REGEX_CALL get_default_syntax_type(char c); -BOOST_REGEX_DECL regex_constants::escape_syntax_type BOOST_REGEX_CALL get_default_escape_syntax_type(char c); - -// is charT c a combining character? -BOOST_REGEX_DECL bool BOOST_REGEX_CALL is_combining_implementation(uint_least16_t s); - -template <class charT> -inline bool is_combining(charT c) -{ -   return (c <= static_cast<charT>(0)) ? false : ((c >= static_cast<charT>((std::numeric_limits<uint_least16_t>::max)())) ? false : is_combining_implementation(static_cast<unsigned short>(c))); -} -template <> -inline bool is_combining<char>(char) -{ -   return false; -} -template <> -inline bool is_combining<signed char>(signed char) -{ -   return false; -} -template <> -inline bool is_combining<unsigned char>(unsigned char) -{ -   return false; -} -#ifndef __hpux // can't use WCHAR_MAX/MIN in pp-directives -#ifdef _MSC_VER  -template<> -inline bool is_combining<wchar_t>(wchar_t c) -{ -   return is_combining_implementation(static_cast<unsigned short>(c)); -} -#elif !defined(__DECCXX) && !defined(__osf__) && !defined(__OSF__) && defined(WCHAR_MIN) && (WCHAR_MIN == 0) && !defined(BOOST_NO_INTRINSIC_WCHAR_T) -#if defined(WCHAR_MAX) && (WCHAR_MAX <= USHRT_MAX) -template<> -inline bool is_combining<wchar_t>(wchar_t c) -{ -   return is_combining_implementation(static_cast<unsigned short>(c)); -} -#else -template<> -inline bool is_combining<wchar_t>(wchar_t c) -{ -   return (c >= (std::numeric_limits<uint_least16_t>::max)()) ? false : is_combining_implementation(static_cast<unsigned short>(c)); -} -#endif -#endif -#endif - -// -// is a charT c a line separator? -// -template <class charT> -inline bool is_separator(charT c) -{ -   return BOOST_REGEX_MAKE_BOOL( -      (c == static_cast<charT>('\n'))  -      || (c == static_cast<charT>('\r'))  -      || (c == static_cast<charT>('\f'))  -      || (static_cast<boost::uint16_t>(c) == 0x2028u)  -      || (static_cast<boost::uint16_t>(c) == 0x2029u)  -      || (static_cast<boost::uint16_t>(c) == 0x85u)); -} -template <> -inline bool is_separator<char>(char c) -{ -   return BOOST_REGEX_MAKE_BOOL((c == '\n') || (c == '\r') || (c == '\f')); -} - -// -// get a default collating element: -// -BOOST_REGEX_DECL std::string BOOST_REGEX_CALL lookup_default_collate_name(const std::string& name); - -// -// get the state_id of a character clasification, the individual -// traits classes then transform that state_id into a bitmask: -// -template <class charT> -struct character_pointer_range -{ -   const charT* p1; -   const charT* p2; - -   bool operator < (const character_pointer_range& r)const -   { -      return std::lexicographical_compare(p1, p2, r.p1, r.p2); -   } -   bool operator == (const character_pointer_range& r)const -   { -      // Not only do we check that the ranges are of equal size before -      // calling std::equal, but there is no other algorithm available: -      // not even a non-standard MS one.  So forward to unchecked_equal -      // in the MS case. -      return ((p2 - p1) == (r.p2 - r.p1)) && re_detail::equal(p1, p2, r.p1); -   } -}; -template <class charT> -int get_default_class_id(const charT* p1, const charT* p2) -{ -   static const charT data[72] = { -      'a', 'l', 'n', 'u', 'm', -      'a', 'l', 'p', 'h', 'a', -      'b', 'l', 'a', 'n', 'k', -      'c', 'n', 't', 'r', 'l', -      'd', 'i', 'g', 'i', 't', -      'g', 'r', 'a', 'p', 'h', -      'l', 'o', 'w', 'e', 'r', -      'p', 'r', 'i', 'n', 't', -      'p', 'u', 'n', 'c', 't', -      's', 'p', 'a', 'c', 'e', -      'u', 'n', 'i', 'c', 'o', 'd', 'e', -      'u', 'p', 'p', 'e', 'r', -      'w', 'o', 'r', 'd', -      'x', 'd', 'i', 'g', 'i', 't', -   }; - -   static const character_pointer_range<charT> ranges[19] =  -   { -      {data+0, data+5,}, // alnum -      {data+5, data+10,}, // alpha -      {data+10, data+15,}, // blank -      {data+15, data+20,}, // cntrl -      {data+20, data+21,}, // d -      {data+20, data+25,}, // digit -      {data+25, data+30,}, // graph -      {data+30, data+31,}, // l -      {data+30, data+35,}, // lower -      {data+35, data+40,}, // print -      {data+40, data+45,}, // punct -      {data+45, data+46,}, // s -      {data+45, data+50,}, // space -      {data+57, data+58,}, // u -      {data+50, data+57,}, // unicode -      {data+57, data+62,}, // upper -      {data+62, data+63,}, // w -      {data+62, data+66,}, // word -      {data+66, data+72,}, // xdigit -   }; -   static const character_pointer_range<charT>* ranges_begin = ranges; -   static const character_pointer_range<charT>* ranges_end = ranges + (sizeof(ranges)/sizeof(ranges[0])); -    -   character_pointer_range<charT> t = { p1, p2, }; -   const character_pointer_range<charT>* p = std::lower_bound(ranges_begin, ranges_end, t); -   if((p != ranges_end) && (t == *p)) -      return static_cast<int>(p - ranges); -   return -1; -} - -// -// helper functions: -// -template <class charT> -std::ptrdiff_t global_length(const charT* p) -{ -   std::ptrdiff_t n = 0; -   while(*p) -   { -      ++p; -      ++n; -   } -   return n; -} -template<> -inline std::ptrdiff_t global_length<char>(const char* p) -{ -   return (std::strlen)(p); -} -#ifndef BOOST_NO_WREGEX -template<> -inline std::ptrdiff_t global_length<wchar_t>(const wchar_t* p) -{ -   return (std::wcslen)(p); -} -#endif -template <class charT> -inline charT BOOST_REGEX_CALL global_lower(charT c) -{ -   return c; -} -template <class charT> -inline charT BOOST_REGEX_CALL global_upper(charT c) -{ -   return c; -} - -BOOST_REGEX_DECL char BOOST_REGEX_CALL do_global_lower(char c); -BOOST_REGEX_DECL char BOOST_REGEX_CALL do_global_upper(char c); -#ifndef BOOST_NO_WREGEX -BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL do_global_lower(wchar_t c); -BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL do_global_upper(wchar_t c); -#endif -#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T -BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL do_global_lower(unsigned short c); -BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL do_global_upper(unsigned short c); -#endif -// -// This sucks: declare template specialisations of global_lower/global_upper -// that just forward to the non-template implementation functions.  We do -// this because there is one compiler (Compaq Tru64 C++) that doesn't seem -// to differentiate between templates and non-template overloads.... -// what's more, the primary template, plus all overloads have to be -// defined in the same translation unit (if one is inline they all must be) -// otherwise the "local template instantiation" compiler option can pick -// the wrong instantiation when linking: -// -template<> inline char BOOST_REGEX_CALL global_lower<char>(char c){ return do_global_lower(c); } -template<> inline char BOOST_REGEX_CALL global_upper<char>(char c){ return do_global_upper(c); } -#ifndef BOOST_NO_WREGEX -template<> inline wchar_t BOOST_REGEX_CALL global_lower<wchar_t>(wchar_t c){ return do_global_lower(c); } -template<> inline wchar_t BOOST_REGEX_CALL global_upper<wchar_t>(wchar_t c){ return do_global_upper(c); } -#endif -#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T -template<> inline unsigned short BOOST_REGEX_CALL global_lower<unsigned short>(unsigned short c){ return do_global_lower(c); } -template<> inline unsigned short BOOST_REGEX_CALL global_upper<unsigned short>(unsigned short c){ return do_global_upper(c); } -#endif - -template <class charT> -int global_value(charT c) -{ -   static const charT zero = '0'; -   static const charT nine = '9'; -   static const charT a = 'a'; -   static const charT f = 'f'; -   static const charT A = 'A'; -   static const charT F = 'F'; - -   if(c > f) return -1; -   if(c >= a) return 10 + (c - a); -   if(c > F) return -1; -   if(c >= A) return 10 + (c - A); -   if(c > nine) return -1; -   if(c >= zero) return c - zero; -   return -1; -} -template <class charT, class traits> -int global_toi(const charT*& p1, const charT* p2, int radix, const traits& t) -{ -   (void)t; // warning suppression -   int next_value = t.value(*p1, radix); -   if((p1 == p2) || (next_value < 0) || (next_value >= radix)) -      return -1; -   int result = 0; -   while(p1 != p2) -   { -      next_value = t.value(*p1, radix); -      if((next_value < 0) || (next_value >= radix)) -         break; -      result *= radix; -      result += next_value; -      ++p1; -   } -   return result; -} - -} // re_detail -} // boost - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif diff --git a/3rdParty/Boost/boost/regex/v4/regex_workaround.hpp b/3rdParty/Boost/boost/regex/v4/regex_workaround.hpp deleted file mode 100644 index fc3c212..0000000 --- a/3rdParty/Boost/boost/regex/v4/regex_workaround.hpp +++ /dev/null @@ -1,202 +0,0 @@ -/* - * - * Copyright (c) 1998-2005 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ - - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         regex_workarounds.cpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Declares Misc workarounds. -  */ - -#ifndef BOOST_REGEX_WORKAROUND_HPP -#define BOOST_REGEX_WORKAROUND_HPP - - -#include <new> -#include <cstring> -#include <cstdlib> -#include <cstddef> -#include <cassert> -#include <cstdio> -#include <climits> -#include <string> -#include <stdexcept> -#include <iterator> -#include <algorithm> -#include <iosfwd> -#include <vector> -#include <map> -#include <boost/limits.hpp> -#include <boost/assert.hpp> -#include <boost/cstdint.hpp> -#include <boost/throw_exception.hpp> -#include <boost/scoped_ptr.hpp> -#include <boost/scoped_array.hpp> -#include <boost/shared_ptr.hpp> -#include <boost/mpl/bool_fwd.hpp> -#ifndef BOOST_NO_STD_LOCALE -#   include <locale> -#endif - -#if defined(BOOST_NO_STDC_NAMESPACE) -namespace std{ -   using ::sprintf; using ::strcpy; using ::strcat; using ::strlen; -} -#endif - -namespace boost{ namespace re_detail{ -#ifdef BOOST_NO_STD_DISTANCE -template <class T> -std::ptrdiff_t distance(const T& x, const T& y) -{ return y - x; } -#else -using std::distance; -#endif -}} - - -#ifdef BOOST_REGEX_NO_BOOL -#  define BOOST_REGEX_MAKE_BOOL(x) static_cast<bool>((x) ? true : false) -#else -#  define BOOST_REGEX_MAKE_BOOL(x) static_cast<bool>(x) -#endif - -/***************************************************************************** - * - *  Fix broken broken namespace support: - * - ****************************************************************************/ - -#if defined(BOOST_NO_STDC_NAMESPACE) && defined(__cplusplus) - -namespace std{ -   using ::ptrdiff_t; -   using ::size_t; -   using ::abs; -   using ::memset; -   using ::memcpy; -} - -#endif - -/***************************************************************************** - * - *  helper functions pointer_construct/pointer_destroy: - * - ****************************************************************************/ - -#ifdef __cplusplus -namespace boost{ namespace re_detail{ - -#ifdef BOOST_MSVC -#pragma warning (push) -#pragma warning (disable : 4100) -#endif - -template <class T> -inline void pointer_destroy(T* p) -{ p->~T(); (void)p; } - -#ifdef BOOST_MSVC -#pragma warning (pop) -#endif - -template <class T> -inline void pointer_construct(T* p, const T& t) -{ new (p) T(t); } - -}} // namespaces -#endif - -/***************************************************************************** - * - *  helper function copy: - * - ****************************************************************************/ - -#ifdef __cplusplus -namespace boost{ namespace re_detail{ -#if BOOST_WORKAROUND(BOOST_MSVC,>=1400) && defined(_CPPLIB_VER) && defined(BOOST_DINKUMWARE_STDLIB) && !(defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) -   // -   // MSVC 8 will either emit warnings or else refuse to compile -   // code that makes perfectly legitimate use of std::copy, when -   // the OutputIterator type is a user-defined class (apparently all user  -   // defined iterators are "unsafe").  This code works around that: -   // -   template<class InputIterator, class OutputIterator> -   inline OutputIterator copy( -      InputIterator first,  -      InputIterator last,  -      OutputIterator dest -   ) -   { -      return stdext::unchecked_copy(first, last, dest); -   } -   template<class InputIterator1, class InputIterator2> -   inline bool equal( -      InputIterator1 first,  -      InputIterator1 last,  -      InputIterator2 with -   ) -   { -      return stdext::unchecked_equal(first, last, with); -   } - -#else  -   using std::copy;  -   using std::equal;  -#endif  -#if BOOST_WORKAROUND(BOOST_MSVC,>=1400) && defined(__STDC_WANT_SECURE_LIB__) && __STDC_WANT_SECURE_LIB__  - -   // use safe versions of strcpy etc: -   using ::strcpy_s; -   using ::strcat_s; -#else -   inline std::size_t strcpy_s( -      char *strDestination, -      std::size_t sizeInBytes, -      const char *strSource  -   ) -   { -      if(std::strlen(strSource)+1 > sizeInBytes) -         return 1; -      std::strcpy(strDestination, strSource); -      return 0; -   } -   inline std::size_t strcat_s( -      char *strDestination, -      std::size_t sizeInBytes, -      const char *strSource  -   ) -   { -      if(std::strlen(strSource) + std::strlen(strDestination) + 1 > sizeInBytes) -         return 1; -      std::strcat(strDestination, strSource); -      return 0; -   } - -#endif - -   inline void overflow_error_if_not_zero(std::size_t i) -   { -      if(i) -      { -         std::overflow_error e("String buffer too small"); -         boost::throw_exception(e); -      } -   } - -}} // namespaces - -#endif // __cplusplus - -#endif // include guard - diff --git a/3rdParty/Boost/boost/regex/v4/states.hpp b/3rdParty/Boost/boost/regex/v4/states.hpp deleted file mode 100644 index 44dd2b4..0000000 --- a/3rdParty/Boost/boost/regex/v4/states.hpp +++ /dev/null @@ -1,290 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ - - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         states.cpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Declares internal state machine structures. -  */ - -#ifndef BOOST_REGEX_V4_STATES_HPP -#define BOOST_REGEX_V4_STATES_HPP - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -namespace boost{ -namespace re_detail{ - -/*** mask_type ******************************************************* -Whenever we have a choice of two alternatives, we use an array of bytes -to indicate which of the two alternatives it is possible to take for any -given input character.  If mask_take is set, then we can take the next  -state, and if mask_skip is set then we can take the alternative. -***********************************************************************/ -enum mask_type -{ -   mask_take = 1, -   mask_skip = 2, -   mask_init = 4, -   mask_any = mask_skip | mask_take, -   mask_all = mask_any -}; - -/*** helpers ********************************************************** -These helpers let us use function overload resolution to detect whether -we have narrow or wide character strings: -***********************************************************************/ -struct _narrow_type{}; -struct _wide_type{}; -template <class charT> struct is_byte; -template<>             struct is_byte<char>         { typedef _narrow_type width_type; }; -template<>             struct is_byte<unsigned char>{ typedef _narrow_type width_type; }; -template<>             struct is_byte<signed char>  { typedef _narrow_type width_type; }; -template <class charT> struct is_byte               { typedef _wide_type width_type; }; - -/*** enum syntax_element_type ****************************************** -Every record in the state machine falls into one of the following types: -***********************************************************************/ -enum syntax_element_type -{ -   // start of a marked sub-expression, or perl-style (?...) extension -   syntax_element_startmark = 0, -   // end of a marked sub-expression, or perl-style (?...) extension -   syntax_element_endmark = syntax_element_startmark + 1, -   // any sequence of literal characters -   syntax_element_literal = syntax_element_endmark + 1, -   // start of line assertion: ^ -   syntax_element_start_line = syntax_element_literal + 1, -   // end of line assertion $ -   syntax_element_end_line = syntax_element_start_line + 1, -   // match any character: . -   syntax_element_wild = syntax_element_end_line + 1, -   // end of expression: we have a match when we get here -   syntax_element_match = syntax_element_wild + 1, -   // perl style word boundary: \b -   syntax_element_word_boundary = syntax_element_match + 1, -   // perl style within word boundary: \B -   syntax_element_within_word = syntax_element_word_boundary + 1, -   // start of word assertion: \< -   syntax_element_word_start = syntax_element_within_word + 1, -   // end of word assertion: \> -   syntax_element_word_end = syntax_element_word_start + 1, -   // start of buffer assertion: \` -   syntax_element_buffer_start = syntax_element_word_end + 1, -   // end of buffer assertion: \' -   syntax_element_buffer_end = syntax_element_buffer_start + 1, -   // backreference to previously matched sub-expression -   syntax_element_backref = syntax_element_buffer_end + 1, -   // either a wide character set [..] or one with multicharacter collating elements: -   syntax_element_long_set = syntax_element_backref + 1, -   // narrow character set: [...] -   syntax_element_set = syntax_element_long_set + 1, -   // jump to a new state in the machine: -   syntax_element_jump = syntax_element_set + 1, -   // choose between two production states: -   syntax_element_alt = syntax_element_jump + 1, -   // a repeat -   syntax_element_rep = syntax_element_alt + 1, -   // match a combining character sequence -   syntax_element_combining = syntax_element_rep + 1, -   // perl style soft buffer end: \z -   syntax_element_soft_buffer_end = syntax_element_combining + 1, -   // perl style continuation: \G -   syntax_element_restart_continue = syntax_element_soft_buffer_end + 1, -   // single character repeats: -   syntax_element_dot_rep = syntax_element_restart_continue + 1, -   syntax_element_char_rep = syntax_element_dot_rep + 1, -   syntax_element_short_set_rep = syntax_element_char_rep + 1, -   syntax_element_long_set_rep = syntax_element_short_set_rep + 1, -   // a backstep for lookbehind repeats: -   syntax_element_backstep = syntax_element_long_set_rep + 1, -   // an assertion that a mark was matched: -   syntax_element_assert_backref = syntax_element_backstep + 1, -   syntax_element_toggle_case = syntax_element_assert_backref + 1 -}; - -#ifdef BOOST_REGEX_DEBUG -// dwa 09/26/00 - This is needed to suppress warnings about an ambiguous conversion -std::ostream& operator<<(std::ostream&, syntax_element_type); -#endif - -struct re_syntax_base; - -/*** union offset_type ************************************************ -Points to another state in the machine.  During machine construction -we use integral offsets, but these are converted to pointers before -execution of the machine. -***********************************************************************/ -union offset_type -{ -   re_syntax_base*   p; -   std::ptrdiff_t    i; -}; - -/*** struct re_syntax_base ******************************************** -Base class for all states in the machine. -***********************************************************************/ -struct re_syntax_base -{ -   syntax_element_type   type;         // what kind of state this is -   offset_type           next;         // next state in the machine -}; - -/*** struct re_brace ************************************************** -A marked parenthesis. -***********************************************************************/ -struct re_brace : public re_syntax_base -{ -   // The index to match, can be zero (don't mark the sub-expression) -   // or negative (for perl style (?...) extentions): -   int index; -}; - -/*** struct re_dot ************************************************** -Match anything. -***********************************************************************/ -enum -{ -   dont_care = 1, -   force_not_newline = 0, -   force_newline = 2, - -   test_not_newline = 2, -   test_newline = 3 -}; -struct re_dot : public re_syntax_base -{ -   unsigned char mask; -}; - -/*** struct re_literal ************************************************ -A string of literals, following this structure will be an  -array of characters: charT[length] -***********************************************************************/ -struct re_literal : public re_syntax_base -{ -   unsigned int length; -}; - -/*** struct re_case ************************************************ -Indicates whether we are moving to a case insensive block or not -***********************************************************************/ -struct re_case : public re_syntax_base -{ -   bool icase; -}; - -/*** struct re_set_long *********************************************** -A wide character set of characters, following this structure will be -an array of type charT: -First csingles null-terminated strings -Then 2 * cranges NULL terminated strings -Then cequivalents NULL terminated strings -***********************************************************************/ -template <class mask_type> -struct re_set_long : public re_syntax_base -{ -   unsigned int            csingles, cranges, cequivalents; -   mask_type               cclasses; -   mask_type               cnclasses; -   bool                    isnot; -   bool                    singleton; -}; - -/*** struct re_set **************************************************** -A set of narrow-characters, matches any of _map which is none-zero -***********************************************************************/ -struct re_set : public re_syntax_base -{ -   unsigned char _map[1 << CHAR_BIT]; -}; - -/*** struct re_jump *************************************************** -Jump to a new location in the machine (not next). -***********************************************************************/ -struct re_jump : public re_syntax_base -{ -   offset_type     alt;                 // location to jump to -}; - -/*** struct re_alt *************************************************** -Jump to a new location in the machine (possibly next). -***********************************************************************/ -struct re_alt : public re_jump -{ -   unsigned char   _map[1 << CHAR_BIT]; // which characters can take the jump -   unsigned int    can_be_null;         // true if we match a NULL string -}; - -/*** struct re_repeat ************************************************* -Repeat a section of the machine -***********************************************************************/ -struct re_repeat : public re_alt -{ -   std::size_t   min, max;  // min and max allowable repeats -   int           state_id;        // Unique identifier for this repeat -   bool          leading;   // True if this repeat is at the start of the machine (lets us optimize some searches) -   bool          greedy;    // True if this is a greedy repeat -}; - -/*** enum re_jump_size_type ******************************************* -Provides compiled size of re_jump structure (allowing for trailing alignment). -We provide this so we know how manybytes to insert when constructing the machine -(The value of padding_mask is defined in regex_raw_buffer.hpp). -***********************************************************************/ -enum re_jump_size_type -{ -   re_jump_size = (sizeof(re_jump) + padding_mask) & ~(padding_mask), -   re_repeater_size = (sizeof(re_repeat) + padding_mask) & ~(padding_mask), -   re_alt_size = (sizeof(re_alt) + padding_mask) & ~(padding_mask) -}; - -/*** proc re_is_set_member ********************************************* -Forward declaration: we'll need this one later... -***********************************************************************/ - -template<class charT, class traits> -struct regex_data; - -template <class iterator, class charT, class traits_type, class char_classT> -iterator BOOST_REGEX_CALL re_is_set_member(iterator next,  -                          iterator last,  -                          const re_set_long<char_classT>* set_,  -                          const regex_data<charT, traits_type>& e, bool icase); - -} // namespace re_detail - -} // namespace boost - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif - - diff --git a/3rdParty/Boost/boost/regex/v4/sub_match.hpp b/3rdParty/Boost/boost/regex/v4/sub_match.hpp deleted file mode 100644 index 1c79e39..0000000 --- a/3rdParty/Boost/boost/regex/v4/sub_match.hpp +++ /dev/null @@ -1,509 +0,0 @@ -/* - * - * Copyright (c) 1998-2002 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ - - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         sub_match.cpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Declares template class sub_match. -  */ - -#ifndef BOOST_REGEX_V4_SUB_MATCH_HPP -#define BOOST_REGEX_V4_SUB_MATCH_HPP - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -namespace boost{ - -template <class BidiIterator> -struct sub_match : public std::pair<BidiIterator, BidiIterator> -{ -   typedef typename re_detail::regex_iterator_traits<BidiIterator>::value_type       value_type; -#if defined(BOOST_NO_STD_ITERATOR_TRAITS) || defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) -   typedef          std::ptrdiff_t                                                   difference_type; -#else -   typedef typename re_detail::regex_iterator_traits<BidiIterator>::difference_type  difference_type; -#endif -   typedef          BidiIterator                                                     iterator_type; -   typedef          BidiIterator                                                     iterator; -   typedef          BidiIterator                                                     const_iterator; - -   bool matched; - -   sub_match() : std::pair<BidiIterator, BidiIterator>(), matched(false) {} -   sub_match(BidiIterator i) : std::pair<BidiIterator, BidiIterator>(i, i), matched(false) {} -#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\ -               && !BOOST_WORKAROUND(BOOST_MSVC, < 1310)\ -               && !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551)\ -               && !BOOST_WORKAROUND(__DECCXX_VER, BOOST_TESTED_AT(60590042)) -   template <class T, class A> -   operator std::basic_string<value_type, T, A> ()const -   { -      return std::basic_string<value_type, T, A>(this->first, this->second); -   } -#else -   operator std::basic_string<value_type> ()const -   { -      return str(); -   } -#endif -   difference_type BOOST_REGEX_CALL length()const -   { -      difference_type n = ::boost::re_detail::distance((BidiIterator)this->first, (BidiIterator)this->second); -      return n; -   } -   std::basic_string<value_type> str()const -   { -      std::basic_string<value_type> result; -      std::size_t len = ::boost::re_detail::distance((BidiIterator)this->first, (BidiIterator)this->second); -      result.reserve(len); -      BidiIterator i = this->first; -      while(i != this->second) -      { -         result.append(1, *i); -         ++i; -      } -      return result; -   } -   int compare(const sub_match& s)const -   { -      if(matched != s.matched) -         return static_cast<int>(matched) - static_cast<int>(s.matched); -      return str().compare(s.str()); -   } -   int compare(const std::basic_string<value_type>& s)const -   { -      return str().compare(s); -   } -   int compare(const value_type* p)const -   { -      return str().compare(p); -   } - -   bool operator==(const sub_match& that)const -   { return compare(that) == 0; } -   bool BOOST_REGEX_CALL operator !=(const sub_match& that)const -   { return compare(that) != 0; } -   bool operator<(const sub_match& that)const -   { return compare(that) < 0; } -   bool operator>(const sub_match& that)const -   { return compare(that) > 0; } -   bool operator<=(const sub_match& that)const -   { return compare(that) <= 0; } -   bool operator>=(const sub_match& that)const -   { return compare(that) >= 0; } - -#ifdef BOOST_REGEX_MATCH_EXTRA -   typedef std::vector<sub_match<BidiIterator> > capture_sequence_type; - -   const capture_sequence_type& captures()const -   { -      if(!m_captures)  -         m_captures.reset(new capture_sequence_type()); -      return *m_captures; -   } -   // -   // Private implementation API: DO NOT USE! -   // -   capture_sequence_type& get_captures()const -   { -      if(!m_captures)  -         m_captures.reset(new capture_sequence_type()); -      return *m_captures; -   } - -private: -   mutable boost::scoped_ptr<capture_sequence_type> m_captures; -public: - -#endif -   sub_match(const sub_match& that, bool  -#ifdef BOOST_REGEX_MATCH_EXTRA -      deep_copy -#endif -      = true -      )  -      : std::pair<BidiIterator, BidiIterator>(that),  -        matched(that.matched)  -   { -#ifdef BOOST_REGEX_MATCH_EXTRA -      if(that.m_captures) -         if(deep_copy) -            m_captures.reset(new capture_sequence_type(*(that.m_captures))); -#endif -   } -   sub_match& operator=(const sub_match& that) -   { -      this->first = that.first; -      this->second = that.second; -      matched = that.matched; -#ifdef BOOST_REGEX_MATCH_EXTRA -      if(that.m_captures) -         get_captures() = *(that.m_captures); -#endif -      return *this; -   } - - -#ifdef BOOST_OLD_REGEX_H -   // -   // the following are deprecated, do not use!! -   // -   operator int()const; -   operator unsigned int()const; -   operator short()const -   { -      return (short)(int)(*this); -   } -   operator unsigned short()const -   { -      return (unsigned short)(unsigned int)(*this); -   } -#endif -}; - -typedef sub_match<const char*> csub_match; -typedef sub_match<std::string::const_iterator> ssub_match; -#ifndef BOOST_NO_WREGEX -typedef sub_match<const wchar_t*> wcsub_match; -typedef sub_match<std::wstring::const_iterator> wssub_match; -#endif - -// comparison to std::basic_string<> part 1: -template <class RandomAccessIterator, class traits, class Allocator> -inline bool operator == (const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s, -                  const sub_match<RandomAccessIterator>& m) -{ return s.compare(m.str()) == 0; } -template <class RandomAccessIterator, class traits, class Allocator> -inline bool operator != (const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s, -                  const sub_match<RandomAccessIterator>& m) -{ return s.compare(m.str()) != 0; } -template <class RandomAccessIterator, class traits, class Allocator> -inline bool operator < (const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s, -                 const sub_match<RandomAccessIterator>& m) -{ return s.compare(m.str()) < 0; } -template <class RandomAccessIterator, class traits, class Allocator> -inline bool operator <= (const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s, -                  const sub_match<RandomAccessIterator>& m) -{ return s.compare(m.str()) <= 0; } -template <class RandomAccessIterator, class traits, class Allocator> -inline bool operator >= (const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s, -                  const sub_match<RandomAccessIterator>& m) -{ return s.compare(m.str()) >= 0; } -template <class RandomAccessIterator, class traits, class Allocator> -inline bool operator > (const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s, -                 const sub_match<RandomAccessIterator>& m) -{ return s.compare(m.str()) > 0; } -// comparison to std::basic_string<> part 2: -template <class RandomAccessIterator, class traits, class Allocator> -inline bool operator == (const sub_match<RandomAccessIterator>& m, -                  const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s) -{ return m.str().compare(s) == 0; } -template <class RandomAccessIterator, class traits, class Allocator> -inline bool operator != (const sub_match<RandomAccessIterator>& m, -                  const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s) -{ return m.str().compare(s) != 0; } -template <class RandomAccessIterator, class traits, class Allocator> -inline bool operator < (const sub_match<RandomAccessIterator>& m, -                  const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s) -{ return m.str().compare(s) < 0; } -template <class RandomAccessIterator, class traits, class Allocator> -inline bool operator > (const sub_match<RandomAccessIterator>& m, -                  const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s) -{ return m.str().compare(s) > 0; } -template <class RandomAccessIterator, class traits, class Allocator> -inline bool operator <= (const sub_match<RandomAccessIterator>& m, -                  const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s) -{ return m.str().compare(s) <= 0; } -template <class RandomAccessIterator, class traits, class Allocator> -inline bool operator >= (const sub_match<RandomAccessIterator>& m, -                  const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s) -{ return m.str().compare(s) >= 0; } -// comparison to const charT* part 1: -template <class RandomAccessIterator> -inline bool operator == (const sub_match<RandomAccessIterator>& m, -                  typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s) -{ return m.str().compare(s) == 0; } -template <class RandomAccessIterator> -inline bool operator != (const sub_match<RandomAccessIterator>& m, -                  typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s) -{ return m.str().compare(s) != 0; } -template <class RandomAccessIterator> -inline bool operator > (const sub_match<RandomAccessIterator>& m, -                  typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s) -{ return m.str().compare(s) > 0; } -template <class RandomAccessIterator> -inline bool operator < (const sub_match<RandomAccessIterator>& m, -                  typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s) -{ return m.str().compare(s) < 0; } -template <class RandomAccessIterator> -inline bool operator >= (const sub_match<RandomAccessIterator>& m, -                  typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s) -{ return m.str().compare(s) >= 0; } -template <class RandomAccessIterator> -inline bool operator <= (const sub_match<RandomAccessIterator>& m, -                  typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s) -{ return m.str().compare(s) <= 0; } -// comparison to const charT* part 2: -template <class RandomAccessIterator> -inline bool operator == (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s, -                  const sub_match<RandomAccessIterator>& m) -{ return m.str().compare(s) == 0; } -template <class RandomAccessIterator> -inline bool operator != (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s, -                  const sub_match<RandomAccessIterator>& m) -{ return m.str().compare(s) != 0; } -template <class RandomAccessIterator> -inline bool operator < (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s, -                  const sub_match<RandomAccessIterator>& m) -{ return m.str().compare(s) > 0; } -template <class RandomAccessIterator> -inline bool operator > (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s, -                  const sub_match<RandomAccessIterator>& m) -{ return m.str().compare(s) < 0; } -template <class RandomAccessIterator> -inline bool operator <= (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s, -                  const sub_match<RandomAccessIterator>& m) -{ return m.str().compare(s) >= 0; } -template <class RandomAccessIterator> -inline bool operator >= (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s, -                  const sub_match<RandomAccessIterator>& m) -{ return m.str().compare(s) <= 0; } - -// comparison to const charT& part 1: -template <class RandomAccessIterator> -inline bool operator == (const sub_match<RandomAccessIterator>& m, -                  typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s) -{ return m.str().compare(0, m.length(), &s, 1) == 0; } -template <class RandomAccessIterator> -inline bool operator != (const sub_match<RandomAccessIterator>& m, -                  typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s) -{ return m.str().compare(0, m.length(), &s, 1) != 0; } -template <class RandomAccessIterator> -inline bool operator > (const sub_match<RandomAccessIterator>& m, -                  typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s) -{ return m.str().compare(0, m.length(), &s, 1) > 0; } -template <class RandomAccessIterator> -inline bool operator < (const sub_match<RandomAccessIterator>& m, -                  typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s) -{ return m.str().compare(0, m.length(), &s, 1) < 0; } -template <class RandomAccessIterator> -inline bool operator >= (const sub_match<RandomAccessIterator>& m, -                  typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s) -{ return m.str().compare(0, m.length(), &s, 1) >= 0; } -template <class RandomAccessIterator> -inline bool operator <= (const sub_match<RandomAccessIterator>& m, -                  typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s) -{ return m.str().compare(0, m.length(), &s, 1) <= 0; } -// comparison to const charT* part 2: -template <class RandomAccessIterator> -inline bool operator == (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s, -                  const sub_match<RandomAccessIterator>& m) -{ return m.str().compare(0, m.length(), &s, 1) == 0; } -template <class RandomAccessIterator> -inline bool operator != (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s, -                  const sub_match<RandomAccessIterator>& m) -{ return m.str().compare(0, m.length(), &s, 1) != 0; } -template <class RandomAccessIterator> -inline bool operator < (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s, -                  const sub_match<RandomAccessIterator>& m) -{ return m.str().compare(0, m.length(), &s, 1) > 0; } -template <class RandomAccessIterator> -inline bool operator > (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s, -                  const sub_match<RandomAccessIterator>& m) -{ return m.str().compare(0, m.length(), &s, 1) < 0; } -template <class RandomAccessIterator> -inline bool operator <= (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s, -                  const sub_match<RandomAccessIterator>& m) -{ return m.str().compare(0, m.length(), &s, 1) >= 0; } -template <class RandomAccessIterator> -inline bool operator >= (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s, -                  const sub_match<RandomAccessIterator>& m) -{ return m.str().compare(0, m.length(), &s, 1) <= 0; } - -// addition operators: -template <class RandomAccessIterator, class traits, class Allocator> -inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>  -operator + (const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s, -                  const sub_match<RandomAccessIterator>& m) -{ -   std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator> result; -   result.reserve(s.size() + m.length() + 1); -   return result.append(s).append(m.first, m.second); -} -template <class RandomAccessIterator, class traits, class Allocator> -inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>  -operator + (const sub_match<RandomAccessIterator>& m, -            const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s) -{ -   std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator> result; -   result.reserve(s.size() + m.length() + 1); -   return result.append(m.first, m.second).append(s); -} -#if !(defined(__GNUC__) && defined(BOOST_NO_STD_LOCALE)) -template <class RandomAccessIterator> -inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>  -operator + (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s, -                  const sub_match<RandomAccessIterator>& m) -{ -   std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type> result; -   result.reserve(std::char_traits<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>::length(s) + m.length() + 1); -   return result.append(s).append(m.first, m.second); -} -template <class RandomAccessIterator> -inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>  -operator + (const sub_match<RandomAccessIterator>& m, -            typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const * s) -{ -   std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type> result; -   result.reserve(std::char_traits<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>::length(s) + m.length() + 1); -   return result.append(m.first, m.second).append(s); -} -#else -// worwaround versions: -template <class RandomAccessIterator> -inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>  -operator + (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s, -                  const sub_match<RandomAccessIterator>& m) -{ -   return s + m.str(); -} -template <class RandomAccessIterator> -inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>  -operator + (const sub_match<RandomAccessIterator>& m, -            typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const * s) -{ -   return m.str() + s; -} -#endif -template <class RandomAccessIterator> -inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>  -operator + (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s, -                  const sub_match<RandomAccessIterator>& m) -{ -   std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type> result; -   result.reserve(m.length() + 2); -   return result.append(1, s).append(m.first, m.second); -} -template <class RandomAccessIterator> -inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>  -operator + (const sub_match<RandomAccessIterator>& m, -            typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s) -{ -   std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type> result; -   result.reserve(m.length() + 2); -   return result.append(m.first, m.second).append(1, s); -} -template <class RandomAccessIterator> -inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>  -operator + (const sub_match<RandomAccessIterator>& m1, -            const sub_match<RandomAccessIterator>& m2) -{ -   std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type> result; -   result.reserve(m1.length() + m2.length() + 1); -   return result.append(m1.first, m1.second).append(m2.first, m2.second); -} -#ifndef BOOST_NO_STD_LOCALE -template <class charT, class traits, class RandomAccessIterator> -std::basic_ostream<charT, traits>& -   operator << (std::basic_ostream<charT, traits>& os, -                const sub_match<RandomAccessIterator>& s) -{ -   return (os << s.str()); -} -#else -template <class RandomAccessIterator> -std::ostream& operator << (std::ostream& os, -                           const sub_match<RandomAccessIterator>& s) -{ -   return (os << s.str()); -} -#endif - -#ifdef BOOST_OLD_REGEX_H -namespace re_detail{ -template <class BidiIterator, class charT> -int do_toi(BidiIterator i, BidiIterator j, char c, int radix) -{ -   std::string s(i, j); -   char* p; -   int result = std::strtol(s.c_str(), &p, radix); -   if(*p)raise_regex_exception("Bad sub-expression"); -   return result; -} - -// -// helper: -template <class I, class charT> -int do_toi(I& i, I j, charT c) -{ -   int result = 0; -   while((i != j) && (isdigit(*i))) -   { -      result = result*10 + (*i - '0'); -      ++i; -   } -   return result; -} -} - - -template <class BidiIterator> -sub_match<BidiIterator>::operator int()const -{ -   BidiIterator i = first; -   BidiIterator j = second; -   if(i == j)raise_regex_exception("Bad sub-expression"); -   int neg = 1; -   if((i != j) && (*i == '-')) -   { -      neg = -1; -      ++i; -   } -   neg *= re_detail::do_toi(i, j, *i); -   if(i != j)raise_regex_exception("Bad sub-expression"); -   return neg; -} -template <class BidiIterator> -sub_match<BidiIterator>::operator unsigned int()const -{ -   BidiIterator i = first; -   BidiIterator j = second; -   if(i == j) -      raise_regex_exception("Bad sub-expression"); -   return re_detail::do_toi(i, j, *first); -} -#endif - -} // namespace boost - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif - diff --git a/3rdParty/Boost/boost/regex/v4/syntax_type.hpp b/3rdParty/Boost/boost/regex/v4/syntax_type.hpp deleted file mode 100644 index 92c00d4..0000000 --- a/3rdParty/Boost/boost/regex/v4/syntax_type.hpp +++ /dev/null @@ -1,102 +0,0 @@ -/* - * - * Copyright (c) 2003 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ -  - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         syntax_type.hpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Declares regular expression synatx type enumerator. -  */ - -#ifndef BOOST_REGEX_SYNTAX_TYPE_HPP -#define BOOST_REGEX_SYNTAX_TYPE_HPP - -namespace boost{ -namespace regex_constants{ - -typedef unsigned char syntax_type; - -// -// values chosen are binary compatible with previous version: -// -static const syntax_type syntax_char = 0; -static const syntax_type syntax_open_mark = 1; -static const syntax_type syntax_close_mark = 2; -static const syntax_type syntax_dollar = 3; -static const syntax_type syntax_caret = 4; -static const syntax_type syntax_dot = 5; -static const syntax_type syntax_star = 6; -static const syntax_type syntax_plus = 7; -static const syntax_type syntax_question = 8; -static const syntax_type syntax_open_set = 9; -static const syntax_type syntax_close_set = 10; -static const syntax_type syntax_or = 11; -static const syntax_type syntax_escape = 12; -static const syntax_type syntax_dash = 14; -static const syntax_type syntax_open_brace = 15; -static const syntax_type syntax_close_brace = 16; -static const syntax_type syntax_digit = 17; -static const syntax_type syntax_comma = 27; -static const syntax_type syntax_equal = 37; -static const syntax_type syntax_colon = 36; -static const syntax_type syntax_not = 53; - -// extensions: - -static const syntax_type syntax_hash = 13; -static const syntax_type syntax_newline = 26; - -// escapes: - -typedef syntax_type escape_syntax_type; - -static const escape_syntax_type escape_type_word_assert = 18; -static const escape_syntax_type escape_type_not_word_assert = 19; -static const escape_syntax_type escape_type_control_f = 29; -static const escape_syntax_type escape_type_control_n = 30; -static const escape_syntax_type escape_type_control_r = 31; -static const escape_syntax_type escape_type_control_t = 32; -static const escape_syntax_type escape_type_control_v = 33; -static const escape_syntax_type escape_type_ascii_control = 35; -static const escape_syntax_type escape_type_hex = 34; -static const escape_syntax_type escape_type_unicode = 0; // not used -static const escape_syntax_type escape_type_identity = 0; // not used -static const escape_syntax_type escape_type_backref = syntax_digit; -static const escape_syntax_type escape_type_decimal = syntax_digit; // not used -static const escape_syntax_type escape_type_class = 22;  -static const escape_syntax_type escape_type_not_class = 23;  - -// extensions: - -static const escape_syntax_type escape_type_left_word = 20; -static const escape_syntax_type escape_type_right_word = 21; -static const escape_syntax_type escape_type_start_buffer = 24;                 // for \` -static const escape_syntax_type escape_type_end_buffer = 25;                   // for \' -static const escape_syntax_type escape_type_control_a = 28;                    // for \a -static const escape_syntax_type escape_type_e = 38;                            // for \e -static const escape_syntax_type escape_type_E = 47;                            // for \Q\E -static const escape_syntax_type escape_type_Q = 48;                            // for \Q\E -static const escape_syntax_type escape_type_X = 49;                            // for \X -static const escape_syntax_type escape_type_C = 50;                            // for \C -static const escape_syntax_type escape_type_Z = 51;                            // for \Z -static const escape_syntax_type escape_type_G = 52;                            // for \G - -static const escape_syntax_type escape_type_property = 54;                     // for \p -static const escape_syntax_type escape_type_not_property = 55;                 // for \P -static const escape_syntax_type escape_type_named_char = 56;                   // for \N - -static const escape_syntax_type syntax_max = 57; - -} -} - - -#endif diff --git a/3rdParty/Boost/boost/regex/v4/u32regex_iterator.hpp b/3rdParty/Boost/boost/regex/v4/u32regex_iterator.hpp deleted file mode 100644 index 7e893e6..0000000 --- a/3rdParty/Boost/boost/regex/v4/u32regex_iterator.hpp +++ /dev/null @@ -1,193 +0,0 @@ -/* - * - * Copyright (c) 2003 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ - - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         u32regex_iterator.hpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Provides u32regex_iterator implementation. -  */ - -#ifndef BOOST_REGEX_V4_U32REGEX_ITERATOR_HPP -#define BOOST_REGEX_V4_U32REGEX_ITERATOR_HPP - -namespace boost{ - -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif - -template <class BidirectionalIterator> -class u32regex_iterator_implementation  -{ -   typedef u32regex regex_type; - -   match_results<BidirectionalIterator> what;  // current match -   BidirectionalIterator                base;  // start of sequence -   BidirectionalIterator                end;   // end of sequence -   const regex_type                     re;   // the expression -   match_flag_type                      flags; // flags for matching - -public: -   u32regex_iterator_implementation(const regex_type* p, BidirectionalIterator last, match_flag_type f) -      : base(), end(last), re(*p), flags(f){} -   bool init(BidirectionalIterator first) -   { -      base = first; -      return u32regex_search(first, end, what, re, flags, base); -   } -   bool compare(const u32regex_iterator_implementation& that) -   { -      if(this == &that) return true; -      return (&re.get_data() == &that.re.get_data()) && (end == that.end) && (flags == that.flags) && (what[0].first == that.what[0].first) && (what[0].second == that.what[0].second); -   } -   const match_results<BidirectionalIterator>& get() -   { return what; } -   bool next() -   { -      //if(what.prefix().first != what[0].second) -      //   flags |= match_prev_avail; -      BidirectionalIterator next_start = what[0].second; -      match_flag_type f(flags); -      if(!what.length()) -         f |= regex_constants::match_not_initial_null; -      //if(base != next_start) -      //   f |= regex_constants::match_not_bob; -      bool result = u32regex_search(next_start, end, what, re, f, base); -      if(result) -         what.set_base(base); -      return result; -   } -private: -   u32regex_iterator_implementation& operator=(const u32regex_iterator_implementation&); -}; - -template <class BidirectionalIterator> -class u32regex_iterator  -#ifndef BOOST_NO_STD_ITERATOR -   : public std::iterator< -         std::forward_iterator_tag,  -         match_results<BidirectionalIterator>, -         typename re_detail::regex_iterator_traits<BidirectionalIterator>::difference_type, -         const match_results<BidirectionalIterator>*, -         const match_results<BidirectionalIterator>& >          -#endif -{ -private: -   typedef u32regex_iterator_implementation<BidirectionalIterator> impl; -   typedef shared_ptr<impl> pimpl; -public: -   typedef          u32regex                                                regex_type; -   typedef          match_results<BidirectionalIterator>                    value_type; -   typedef typename re_detail::regex_iterator_traits<BidirectionalIterator>::difference_type  -                                                                            difference_type; -   typedef          const value_type*                                       pointer; -   typedef          const value_type&                                       reference;  -   typedef          std::forward_iterator_tag                               iterator_category; -    -   u32regex_iterator(){} -   u32regex_iterator(BidirectionalIterator a, BidirectionalIterator b,  -                  const regex_type& re,  -                  match_flag_type m = match_default) -                  : pdata(new impl(&re, b, m)) -   { -      if(!pdata->init(a)) -      { -         pdata.reset(); -      } -   } -   u32regex_iterator(const u32regex_iterator& that) -      : pdata(that.pdata) {} -   u32regex_iterator& operator=(const u32regex_iterator& that) -   { -      pdata = that.pdata; -      return *this; -   } -   bool operator==(const u32regex_iterator& that)const -   {  -      if((pdata.get() == 0) || (that.pdata.get() == 0)) -         return pdata.get() == that.pdata.get(); -      return pdata->compare(*(that.pdata.get()));  -   } -   bool operator!=(const u32regex_iterator& that)const -   { return !(*this == that); } -   const value_type& operator*()const -   { return pdata->get(); } -   const value_type* operator->()const -   { return &(pdata->get()); } -   u32regex_iterator& operator++() -   { -      cow(); -      if(0 == pdata->next()) -      { -         pdata.reset(); -      } -      return *this; -   } -   u32regex_iterator operator++(int) -   { -      u32regex_iterator result(*this); -      ++(*this); -      return result; -   } -private: - -   pimpl pdata; - -   void cow() -   { -      // copy-on-write -      if(pdata.get() && !pdata.unique()) -      { -         pdata.reset(new impl(*(pdata.get()))); -      } -   } -}; - -typedef u32regex_iterator<const char*> utf8regex_iterator; -typedef u32regex_iterator<const UChar*> utf16regex_iterator; -typedef u32regex_iterator<const UChar32*> utf32regex_iterator; - -inline u32regex_iterator<const char*> make_u32regex_iterator(const char* p, const u32regex& e, regex_constants::match_flag_type m = regex_constants::match_default) -{ -   return u32regex_iterator<const char*>(p, p+std::strlen(p), e, m); -} -#ifndef BOOST_NO_WREGEX -inline u32regex_iterator<const wchar_t*> make_u32regex_iterator(const wchar_t* p, const u32regex& e, regex_constants::match_flag_type m = regex_constants::match_default) -{ -   return u32regex_iterator<const wchar_t*>(p, p+std::wcslen(p), e, m); -} -#endif -#if !defined(U_WCHAR_IS_UTF16) && (U_SIZEOF_WCHAR_T != 2) -inline u32regex_iterator<const UChar*> make_u32regex_iterator(const UChar* p, const u32regex& e, regex_constants::match_flag_type m = regex_constants::match_default) -{ -   return u32regex_iterator<const UChar*>(p, p+u_strlen(p), e, m); -} -#endif -template <class charT, class Traits, class Alloc> -inline u32regex_iterator<typename std::basic_string<charT, Traits, Alloc>::const_iterator> make_u32regex_iterator(const std::basic_string<charT, Traits, Alloc>& p, const u32regex& e, regex_constants::match_flag_type m = regex_constants::match_default) -{ -   typedef typename std::basic_string<charT, Traits, Alloc>::const_iterator iter_type; -   return u32regex_iterator<iter_type>(p.begin(), p.end(), e, m); -} -inline u32regex_iterator<const UChar*> make_u32regex_iterator(const UnicodeString& s, const u32regex& e, regex_constants::match_flag_type m = regex_constants::match_default) -{ -   return u32regex_iterator<const UChar*>(s.getBuffer(), s.getBuffer() + s.length(), e, m); -} - -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif - -} // namespace boost - -#endif // BOOST_REGEX_V4_REGEX_ITERATOR_HPP - diff --git a/3rdParty/Boost/boost/regex/v4/u32regex_token_iterator.hpp b/3rdParty/Boost/boost/regex/v4/u32regex_token_iterator.hpp deleted file mode 100644 index 2726d48..0000000 --- a/3rdParty/Boost/boost/regex/v4/u32regex_token_iterator.hpp +++ /dev/null @@ -1,377 +0,0 @@ -/* - * - * Copyright (c) 2003 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ - - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         u32regex_token_iterator.hpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Provides u32regex_token_iterator implementation. -  */ - -#ifndef BOOST_REGEX_V4_U32REGEX_TOKEN_ITERATOR_HPP -#define BOOST_REGEX_V4_U32REGEX_TOKEN_ITERATOR_HPP - -#if (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\ -      || BOOST_WORKAROUND(BOOST_MSVC, < 1300) \ -      || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) -// -// Borland C++ Builder 6, and Visual C++ 6, -// can't cope with the array template constructor -// so we have a template member that will accept any type as  -// argument, and then assert that is really is an array: -// -#include <boost/static_assert.hpp> -#include <boost/type_traits/is_array.hpp> -#endif - -namespace boost{ - -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif -#if BOOST_WORKAROUND(BOOST_MSVC, > 1300) -#  pragma warning(push) -#  pragma warning(disable:4700) -#endif - -template <class BidirectionalIterator> -class u32regex_token_iterator_implementation  -{ -   typedef u32regex                              regex_type; -   typedef sub_match<BidirectionalIterator>      value_type; - -   match_results<BidirectionalIterator> what;   // current match -   BidirectionalIterator                end;    // end of search area -   BidirectionalIterator                base;   // start of search area -   const regex_type                     re;     // the expression -   match_flag_type                      flags;  // match flags -   value_type                           result; // the current string result -   int                                  N;      // the current sub-expression being enumerated -   std::vector<int>                     subs;   // the sub-expressions to enumerate - -public: -   u32regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, int sub, match_flag_type f) -      : end(last), re(*p), flags(f){ subs.push_back(sub); } -   u32regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, const std::vector<int>& v, match_flag_type f) -      : end(last), re(*p), flags(f), subs(v){} -#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) -      // can't reliably get this to work.... -#elif (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\ -      || BOOST_WORKAROUND(BOOST_MSVC, < 1300) \ -      || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) \ -      || BOOST_WORKAROUND(__HP_aCC, < 60700) -   template <class T> -   u32regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, const T& submatches, match_flag_type f) -      : end(last), re(*p), flags(f) -   { -      // assert that T really is an array: -      BOOST_STATIC_ASSERT(::boost::is_array<T>::value); -      const std::size_t array_size = sizeof(T) / sizeof(submatches[0]); -      for(std::size_t i = 0; i < array_size; ++i) -      { -         subs.push_back(submatches[i]); -      } -   } -#else -   template <std::size_t CN> -   u32regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, const int (&submatches)[CN], match_flag_type f) -      : end(last), re(*p), flags(f) -   { -      for(std::size_t i = 0; i < CN; ++i) -      { -         subs.push_back(submatches[i]); -      } -   } -#endif - -   bool init(BidirectionalIterator first) -   { -      base = first; -      N = 0; -      if(u32regex_search(first, end, what, re, flags, base) == true) -      { -         N = 0; -         result = ((subs[N] == -1) ? what.prefix() : what[(int)subs[N]]); -         return true; -      } -      else if((subs[N] == -1) && (first != end)) -      { -         result.first = first; -         result.second = end; -         result.matched = (first != end); -         N = -1; -         return true; -      } -      return false; -   } -   bool compare(const u32regex_token_iterator_implementation& that) -   { -      if(this == &that) return true; -      return (&re.get_data() == &that.re.get_data())  -         && (end == that.end)  -         && (flags == that.flags)  -         && (N == that.N)  -         && (what[0].first == that.what[0].first)  -         && (what[0].second == that.what[0].second); -   } -   const value_type& get() -   { return result; } -   bool next() -   { -      if(N == -1) -         return false; -      if(N+1 < (int)subs.size()) -      { -         ++N; -         result =((subs[N] == -1) ? what.prefix() : what[subs[N]]); -         return true; -      } -      //if(what.prefix().first != what[0].second) -      //   flags |= match_prev_avail | regex_constants::match_not_bob; -      BidirectionalIterator last_end(what[0].second); -      if(u32regex_search(last_end, end, what, re, ((what[0].first == what[0].second) ? flags | regex_constants::match_not_initial_null : flags), base)) -      { -         N =0; -         result =((subs[N] == -1) ? what.prefix() : what[subs[N]]); -         return true; -      } -      else if((last_end != end) && (subs[0] == -1)) -      { -         N =-1; -         result.first = last_end; -         result.second = end; -         result.matched = (last_end != end); -         return true; -      } -      return false; -   } -private: -   u32regex_token_iterator_implementation& operator=(const u32regex_token_iterator_implementation&); -}; - -template <class BidirectionalIterator> -class u32regex_token_iterator  -#ifndef BOOST_NO_STD_ITERATOR -   : public std::iterator< -         std::forward_iterator_tag,  -         sub_match<BidirectionalIterator>, -         typename re_detail::regex_iterator_traits<BidirectionalIterator>::difference_type, -         const sub_match<BidirectionalIterator>*, -         const sub_match<BidirectionalIterator>& >          -#endif -{ -private: -   typedef u32regex_token_iterator_implementation<BidirectionalIterator> impl; -   typedef shared_ptr<impl> pimpl; -public: -   typedef          u32regex                                                regex_type; -   typedef          sub_match<BidirectionalIterator>                        value_type; -   typedef typename re_detail::regex_iterator_traits<BidirectionalIterator>::difference_type  -                                                                            difference_type; -   typedef          const value_type*                                       pointer; -   typedef          const value_type&                                       reference;  -   typedef          std::forward_iterator_tag                               iterator_category; -    -   u32regex_token_iterator(){} -   u32regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re,  -                        int submatch = 0, match_flag_type m = match_default) -                        : pdata(new impl(&re, b, submatch, m)) -   { -      if(!pdata->init(a)) -         pdata.reset(); -   } -   u32regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re,  -                        const std::vector<int>& submatches, match_flag_type m = match_default) -                        : pdata(new impl(&re, b, submatches, m)) -   { -      if(!pdata->init(a)) -         pdata.reset(); -   } -#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) -      // can't reliably get this to work.... -#elif (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\ -      || BOOST_WORKAROUND(BOOST_MSVC, < 1300) \ -      || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) \ -      || BOOST_WORKAROUND(__HP_aCC, < 60700) -   template <class T> -   u32regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re, -                        const T& submatches, match_flag_type m = match_default) -                        : pdata(new impl(&re, b, submatches, m)) -   { -      if(!pdata->init(a)) -         pdata.reset(); -   } -#else -   template <std::size_t N> -   u32regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re, -                        const int (&submatches)[N], match_flag_type m = match_default) -                        : pdata(new impl(&re, b, submatches, m)) -   { -      if(!pdata->init(a)) -         pdata.reset(); -   } -#endif -   u32regex_token_iterator(const u32regex_token_iterator& that) -      : pdata(that.pdata) {} -   u32regex_token_iterator& operator=(const u32regex_token_iterator& that) -   { -      pdata = that.pdata; -      return *this; -   } -   bool operator==(const u32regex_token_iterator& that)const -   {  -      if((pdata.get() == 0) || (that.pdata.get() == 0)) -         return pdata.get() == that.pdata.get(); -      return pdata->compare(*(that.pdata.get()));  -   } -   bool operator!=(const u32regex_token_iterator& that)const -   { return !(*this == that); } -   const value_type& operator*()const -   { return pdata->get(); } -   const value_type* operator->()const -   { return &(pdata->get()); } -   u32regex_token_iterator& operator++() -   { -      cow(); -      if(0 == pdata->next()) -      { -         pdata.reset(); -      } -      return *this; -   } -   u32regex_token_iterator operator++(int) -   { -      u32regex_token_iterator result(*this); -      ++(*this); -      return result; -   } -private: - -   pimpl pdata; - -   void cow() -   { -      // copy-on-write -      if(pdata.get() && !pdata.unique()) -      { -         pdata.reset(new impl(*(pdata.get()))); -      } -   } -}; - -typedef u32regex_token_iterator<const char*> utf8regex_token_iterator; -typedef u32regex_token_iterator<const UChar*> utf16regex_token_iterator; -typedef u32regex_token_iterator<const UChar32*> utf32regex_token_iterator; - -// construction from an integral sub_match state_id: -inline u32regex_token_iterator<const char*> make_u32regex_token_iterator(const char* p, const u32regex& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default) -{ -   return u32regex_token_iterator<const char*>(p, p+std::strlen(p), e, submatch, m); -} -#ifndef BOOST_NO_WREGEX -inline u32regex_token_iterator<const wchar_t*> make_u32regex_token_iterator(const wchar_t* p, const u32regex& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default) -{ -   return u32regex_token_iterator<const wchar_t*>(p, p+std::wcslen(p), e, submatch, m); -} -#endif -#if !defined(U_WCHAR_IS_UTF16) && (U_SIZEOF_WCHAR_T != 2) -inline u32regex_token_iterator<const UChar*> make_u32regex_token_iterator(const UChar* p, const u32regex& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default) -{ -   return u32regex_token_iterator<const UChar*>(p, p+u_strlen(p), e, submatch, m); -} -#endif -template <class charT, class Traits, class Alloc> -inline u32regex_token_iterator<typename std::basic_string<charT, Traits, Alloc>::const_iterator> make_u32regex_token_iterator(const std::basic_string<charT, Traits, Alloc>& p, const u32regex& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default) -{ -   typedef typename std::basic_string<charT, Traits, Alloc>::const_iterator iter_type; -   return u32regex_token_iterator<iter_type>(p.begin(), p.end(), e, m); -} -inline u32regex_token_iterator<const UChar*> make_u32regex_token_iterator(const UnicodeString& s, const u32regex& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default) -{ -   return u32regex_token_iterator<const UChar*>(s.getBuffer(), s.getBuffer() + s.length(), e, submatch, m); -} - -#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300) -// construction from a reference to an array: -template <std::size_t N> -inline u32regex_token_iterator<const char*> make_u32regex_token_iterator(const char* p, const u32regex& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default) -{ -   return u32regex_token_iterator<const char*>(p, p+std::strlen(p), e, submatch, m); -} -#ifndef BOOST_NO_WREGEX -template <std::size_t N> -inline u32regex_token_iterator<const wchar_t*> make_u32regex_token_iterator(const wchar_t* p, const u32regex& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default) -{ -   return u32regex_token_iterator<const wchar_t*>(p, p+std::wcslen(p), e, submatch, m); -} -#endif -#if !defined(U_WCHAR_IS_UTF16) && (U_SIZEOF_WCHAR_T != 2) -template <std::size_t N> -inline u32regex_token_iterator<const UChar*> make_u32regex_token_iterator(const UChar* p, const u32regex& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default) -{ -   return u32regex_token_iterator<const UChar*>(p, p+u_strlen(p), e, m); -} -#endif -template <class charT, class Traits, class Alloc, std::size_t N> -inline u32regex_token_iterator<typename std::basic_string<charT, Traits, Alloc>::const_iterator> make_u32regex_token_iterator(const std::basic_string<charT, Traits, Alloc>& p, const u32regex& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default) -{ -   typedef typename std::basic_string<charT, Traits, Alloc>::const_iterator iter_type; -   return u32regex_token_iterator<iter_type>(p.begin(), p.end(), e, m); -} -template <std::size_t N> -inline u32regex_token_iterator<const UChar*> make_u32regex_token_iterator(const UnicodeString& s, const u32regex& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default) -{ -   return u32regex_token_iterator<const UChar*>(s.getBuffer(), s.getBuffer() + s.length(), e, submatch, m); -} -#endif // BOOST_MSVC < 1300 - -// construction from a vector of sub_match state_id's: -inline u32regex_token_iterator<const char*> make_u32regex_token_iterator(const char* p, const u32regex& e, const std::vector<int>& submatch, regex_constants::match_flag_type m = regex_constants::match_default) -{ -   return u32regex_token_iterator<const char*>(p, p+std::strlen(p), e, submatch, m); -} -#ifndef BOOST_NO_WREGEX -inline u32regex_token_iterator<const wchar_t*> make_u32regex_token_iterator(const wchar_t* p, const u32regex& e, const std::vector<int>& submatch, regex_constants::match_flag_type m = regex_constants::match_default) -{ -   return u32regex_token_iterator<const wchar_t*>(p, p+std::wcslen(p), e, submatch, m); -} -#endif -#if !defined(U_WCHAR_IS_UTF16) && (U_SIZEOF_WCHAR_T != 2) -inline u32regex_token_iterator<const UChar*> make_u32regex_token_iterator(const UChar* p, const u32regex& e, const std::vector<int>& submatch, regex_constants::match_flag_type m = regex_constants::match_default) -{ -   return u32regex_token_iterator<const UChar*>(p, p+u_strlen(p), e, submatch, m); -} -#endif -template <class charT, class Traits, class Alloc> -inline u32regex_token_iterator<typename std::basic_string<charT, Traits, Alloc>::const_iterator> make_u32regex_token_iterator(const std::basic_string<charT, Traits, Alloc>& p, const u32regex& e, const std::vector<int>& submatch, regex_constants::match_flag_type m = regex_constants::match_default) -{ -   typedef typename std::basic_string<charT, Traits, Alloc>::const_iterator iter_type; -   return u32regex_token_iterator<iter_type>(p.begin(), p.end(), e, m); -} -inline u32regex_token_iterator<const UChar*> make_u32regex_token_iterator(const UnicodeString& s, const u32regex& e, const std::vector<int>& submatch, regex_constants::match_flag_type m = regex_constants::match_default) -{ -   return u32regex_token_iterator<const UChar*>(s.getBuffer(), s.getBuffer() + s.length(), e, submatch, m); -} - -#if BOOST_WORKAROUND(BOOST_MSVC, == 1310) -#  pragma warning(pop) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif - -} // namespace boost - -#endif // BOOST_REGEX_V4_REGEX_TOKEN_ITERATOR_HPP - - - - diff --git a/3rdParty/Boost/boost/regex/v4/w32_regex_traits.hpp b/3rdParty/Boost/boost/regex/v4/w32_regex_traits.hpp deleted file mode 100644 index 21a9694..0000000 --- a/3rdParty/Boost/boost/regex/v4/w32_regex_traits.hpp +++ /dev/null @@ -1,731 +0,0 @@ -/* - * - * Copyright (c) 2004 - * John Maddock - * - * Use, modification and distribution are 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) - * - */ -  - /* -  *   LOCATION:    see http://www.boost.org for most recent version. -  *   FILE         w32_regex_traits.hpp -  *   VERSION      see <boost/version.hpp> -  *   DESCRIPTION: Declares regular expression traits class w32_regex_traits. -  */ - -#ifndef BOOST_W32_REGEX_TRAITS_HPP_INCLUDED -#define BOOST_W32_REGEX_TRAITS_HPP_INCLUDED - -#ifndef BOOST_RE_PAT_EXCEPT_HPP -#include <boost/regex/pattern_except.hpp> -#endif -#ifndef BOOST_REGEX_TRAITS_DEFAULTS_HPP_INCLUDED -#include <boost/regex/v4/regex_traits_defaults.hpp> -#endif -#ifdef BOOST_HAS_THREADS -#include <boost/regex/pending/static_mutex.hpp> -#endif -#ifndef BOOST_REGEX_PRIMARY_TRANSFORM -#include <boost/regex/v4/primary_transform.hpp> -#endif -#ifndef BOOST_REGEX_OBJECT_CACHE_HPP -#include <boost/regex/pending/object_cache.hpp> -#endif - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_PREFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4786) -#pragma warning(disable:4800) -#endif - -namespace boost{  - -// -// forward declaration is needed by some compilers: -// -template <class charT> -class w32_regex_traits; -    -namespace re_detail{ - -// -// start by typedeffing the types we'll need: -// -typedef ::boost::uint32_t lcid_type;   // placeholder for LCID. -typedef ::boost::shared_ptr<void> cat_type; // placeholder for dll HANDLE. - -// -// then add wrappers around the actual Win32 API's (ie implementation hiding): -// -BOOST_REGEX_DECL lcid_type BOOST_REGEX_CALL w32_get_default_locale(); -BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_lower(char, lcid_type); -#ifndef BOOST_NO_WREGEX -BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_lower(wchar_t, lcid_type); -#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T -BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_lower(unsigned short ca, lcid_type state_id); -#endif -#endif -BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_upper(char, lcid_type); -#ifndef BOOST_NO_WREGEX -BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_upper(wchar_t, lcid_type); -#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T -BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_upper(unsigned short ca, lcid_type state_id); -#endif -#endif -BOOST_REGEX_DECL cat_type BOOST_REGEX_CALL w32_cat_open(const std::string& name); -BOOST_REGEX_DECL std::string BOOST_REGEX_CALL w32_cat_get(const cat_type& cat, lcid_type state_id, int i, const std::string& def); -#ifndef BOOST_NO_WREGEX -BOOST_REGEX_DECL std::wstring BOOST_REGEX_CALL w32_cat_get(const cat_type& cat, lcid_type state_id, int i, const std::wstring& def); -#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T -BOOST_REGEX_DECL std::basic_string<unsigned short> BOOST_REGEX_CALL w32_cat_get(const cat_type& cat, lcid_type, int i, const std::basic_string<unsigned short>& def); -#endif -#endif -BOOST_REGEX_DECL std::string BOOST_REGEX_CALL w32_transform(lcid_type state_id, const char* p1, const char* p2); -#ifndef BOOST_NO_WREGEX -BOOST_REGEX_DECL std::wstring BOOST_REGEX_CALL w32_transform(lcid_type state_id, const wchar_t* p1, const wchar_t* p2); -#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T -BOOST_REGEX_DECL std::basic_string<unsigned short> BOOST_REGEX_CALL w32_transform(lcid_type state_id, const unsigned short* p1, const unsigned short* p2); -#endif -#endif -BOOST_REGEX_DECL char BOOST_REGEX_CALL w32_tolower(char c, lcid_type); -#ifndef BOOST_NO_WREGEX -BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL w32_tolower(wchar_t c, lcid_type); -#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T -BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL w32_tolower(unsigned short c, lcid_type state_id); -#endif -#endif -BOOST_REGEX_DECL char BOOST_REGEX_CALL w32_toupper(char c, lcid_type); -#ifndef BOOST_NO_WREGEX -BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL w32_toupper(wchar_t c, lcid_type); -#endif -BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is(lcid_type, boost::uint32_t mask, char c); -#ifndef BOOST_NO_WREGEX -BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is(lcid_type, boost::uint32_t mask, wchar_t c); -#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T -BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is(lcid_type state_id, boost::uint32_t m, unsigned short c); -#endif -#endif -// -// class w32_regex_traits_base: -// acts as a container for locale and the facets we are using. -// -template <class charT> -struct w32_regex_traits_base -{ -   w32_regex_traits_base(lcid_type l) -   { imbue(l); } -   lcid_type imbue(lcid_type l); - -   lcid_type m_locale; -}; - -template <class charT> -inline lcid_type w32_regex_traits_base<charT>::imbue(lcid_type l) -{ -   lcid_type result(m_locale); -   m_locale = l; -   return result; -} - -// -// class w32_regex_traits_char_layer: -// implements methods that require specialisation for narrow characters: -// -template <class charT> -class w32_regex_traits_char_layer : public w32_regex_traits_base<charT> -{ -   typedef std::basic_string<charT> string_type; -   typedef std::map<charT, regex_constants::syntax_type> map_type; -   typedef typename map_type::const_iterator map_iterator_type; -public: -   w32_regex_traits_char_layer(const lcid_type l); - -   regex_constants::syntax_type syntax_type(charT c)const -   { -      map_iterator_type i = m_char_map.find(c); -      return ((i == m_char_map.end()) ? 0 : i->second); -   } -   regex_constants::escape_syntax_type escape_syntax_type(charT c) const -   { -      map_iterator_type i = m_char_map.find(c); -      if(i == m_char_map.end()) -      { -         if(::boost::re_detail::w32_is_lower(c, this->m_locale)) return regex_constants::escape_type_class; -         if(::boost::re_detail::w32_is_upper(c, this->m_locale)) return regex_constants::escape_type_not_class; -         return 0; -      } -      return i->second; -   } -   charT tolower(charT c)const -   { -      return ::boost::re_detail::w32_tolower(c, this->m_locale); -   } -   bool isctype(boost::uint32_t mask, charT c)const -   { -      return ::boost::re_detail::w32_is(this->m_locale, mask, c); -   } - -private: -   string_type get_default_message(regex_constants::syntax_type); -   // TODO: use a hash table when available! -   map_type m_char_map; -}; - -template <class charT> -w32_regex_traits_char_layer<charT>::w32_regex_traits_char_layer(::boost::re_detail::lcid_type l)  -   : w32_regex_traits_base<charT>(l) -{ -   // we need to start by initialising our syntax map so we know which -   // character is used for which purpose: -   cat_type cat; -   std::string cat_name(w32_regex_traits<charT>::get_catalog_name()); -   if(cat_name.size()) -   { -      cat = ::boost::re_detail::w32_cat_open(cat_name); -      if(!cat) -      { -         std::string m("Unable to open message catalog: "); -         std::runtime_error err(m + cat_name); -         boost::re_detail::raise_runtime_error(err); -      } -   } -   // -   // if we have a valid catalog then load our messages: -   // -   if(cat) -   { -      for(regex_constants::syntax_type i = 1; i < regex_constants::syntax_max; ++i) -      { -         string_type mss = ::boost::re_detail::w32_cat_get(cat, this->m_locale, i, get_default_message(i)); -         for(typename string_type::size_type j = 0; j < mss.size(); ++j) -         { -            this->m_char_map[mss[j]] = i; -         } -      } -   } -   else -   { -      for(regex_constants::syntax_type i = 1; i < regex_constants::syntax_max; ++i) -      { -         const char* ptr = get_default_syntax(i); -         while(ptr && *ptr) -         { -            this->m_char_map[static_cast<charT>(*ptr)] = i; -            ++ptr; -         } -      } -   } -} - -template <class charT> -typename w32_regex_traits_char_layer<charT>::string_type  -   w32_regex_traits_char_layer<charT>::get_default_message(regex_constants::syntax_type i) -{ -   const char* ptr = get_default_syntax(i); -   string_type result; -   while(ptr && *ptr) -   { -      result.append(1, static_cast<charT>(*ptr)); -      ++ptr; -   } -   return result; -} - -// -// specialised version for narrow characters: -// -template <> -class BOOST_REGEX_DECL w32_regex_traits_char_layer<char> : public w32_regex_traits_base<char> -{ -   typedef std::string string_type; -public: -   w32_regex_traits_char_layer(::boost::re_detail::lcid_type l) -   : w32_regex_traits_base<char>(l) -   { -      init(); -   } - -   regex_constants::syntax_type syntax_type(char c)const -   { -      return m_char_map[static_cast<unsigned char>(c)]; -   } -   regex_constants::escape_syntax_type escape_syntax_type(char c) const -   { -      return m_char_map[static_cast<unsigned char>(c)]; -   } -   char tolower(char c)const -   { -      return m_lower_map[static_cast<unsigned char>(c)]; -   } -   bool isctype(boost::uint32_t mask, char c)const -   { -      return m_type_map[static_cast<unsigned char>(c)] & mask; -   } - -private: -   regex_constants::syntax_type m_char_map[1u << CHAR_BIT]; -   char m_lower_map[1u << CHAR_BIT]; -   boost::uint16_t m_type_map[1u << CHAR_BIT]; -   void init(); -}; - -// -// class w32_regex_traits_implementation: -// provides pimpl implementation for w32_regex_traits. -// -template <class charT> -class w32_regex_traits_implementation : public w32_regex_traits_char_layer<charT> -{ -public: -   typedef typename w32_regex_traits<charT>::char_class_type char_class_type; -   BOOST_STATIC_CONSTANT(char_class_type, mask_word = 0x0400); // must be C1_DEFINED << 1 -   BOOST_STATIC_CONSTANT(char_class_type, mask_unicode = 0x0800); // must be C1_DEFINED << 2 -   BOOST_STATIC_CONSTANT(char_class_type, mask_base = 0x3ff);  // all the masks used by the CT_CTYPE1 group - -   typedef std::basic_string<charT> string_type; -   typedef charT char_type; -   w32_regex_traits_implementation(::boost::re_detail::lcid_type l); -   std::string error_string(regex_constants::error_type n) const -   { -      if(!m_error_strings.empty()) -      { -         std::map<int, std::string>::const_iterator p = m_error_strings.find(n); -         return (p == m_error_strings.end()) ? std::string(get_default_error_string(n)) : p->second; -      } -      return get_default_error_string(n); -   } -   char_class_type lookup_classname(const charT* p1, const charT* p2) const -   { -      char_class_type result = lookup_classname_imp(p1, p2); -      if(result == 0) -      { -         typedef typename string_type::size_type size_type; -         string_type temp(p1, p2); -         for(size_type i = 0; i < temp.size(); ++i) -            temp[i] = this->tolower(temp[i]); -         result = lookup_classname_imp(&*temp.begin(), &*temp.begin() + temp.size()); -      } -      return result; -   } -   string_type lookup_collatename(const charT* p1, const charT* p2) const; -   string_type transform_primary(const charT* p1, const charT* p2) const; -   string_type transform(const charT* p1, const charT* p2) const -   { -      return ::boost::re_detail::w32_transform(this->m_locale, p1, p2); -   } -private: -   std::map<int, std::string>     m_error_strings;   // error messages indexed by numberic ID -   std::map<string_type, char_class_type>  m_custom_class_names; // character class names -   std::map<string_type, string_type>      m_custom_collate_names; // collating element names -   unsigned                       m_collate_type;    // the form of the collation string -   charT                          m_collate_delim;   // the collation group delimiter -   // -   // helpers: -   // -   char_class_type lookup_classname_imp(const charT* p1, const charT* p2) const; -}; - -template <class charT> -typename w32_regex_traits_implementation<charT>::string_type  -   w32_regex_traits_implementation<charT>::transform_primary(const charT* p1, const charT* p2) const -{ -   string_type result; -   // -   // What we do here depends upon the format of the sort key returned by -   // sort key returned by this->transform: -   // -   switch(m_collate_type) -   { -   case sort_C: -   case sort_unknown: -      // the best we can do is translate to lower case, then get a regular sort key: -      { -         result.assign(p1, p2); -         typedef typename string_type::size_type size_type; -         for(size_type i = 0; i < result.size(); ++i) -            result[i] = this->tolower(result[i]); -         result = this->transform(&*result.begin(), &*result.begin() + result.size()); -         break; -      } -   case sort_fixed: -      { -         // get a regular sort key, and then truncate it: -         result.assign(this->transform(p1, p2)); -         result.erase(this->m_collate_delim); -         break; -      } -   case sort_delim: -         // get a regular sort key, and then truncate everything after the delim: -         result.assign(this->transform(p1, p2)); -         std::size_t i; -         for(i = 0; i < result.size(); ++i) -         { -            if(result[i] == m_collate_delim) -               break; -         } -         result.erase(i); -         break; -   } -   if(result.empty()) -      result = string_type(1, charT(0)); -   return result; -} - -template <class charT> -typename w32_regex_traits_implementation<charT>::string_type  -   w32_regex_traits_implementation<charT>::lookup_collatename(const charT* p1, const charT* p2) const -{ -   typedef typename std::map<string_type, string_type>::const_iterator iter_type; -   if(m_custom_collate_names.size()) -   { -      iter_type pos = m_custom_collate_names.find(string_type(p1, p2)); -      if(pos != m_custom_collate_names.end()) -         return pos->second; -   } -#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\ -               && !BOOST_WORKAROUND(BOOST_MSVC, < 1300)\ -               && !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551) -   std::string name(p1, p2); -#else -   std::string name; -   const charT* p0 = p1; -   while(p0 != p2) -      name.append(1, char(*p0++)); -#endif -   name = lookup_default_collate_name(name); -#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\ -               && !BOOST_WORKAROUND(BOOST_MSVC, < 1300)\ -               && !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551) -   if(name.size()) -      return string_type(name.begin(), name.end()); -#else -   if(name.size()) -   { -      string_type result; -      typedef std::string::const_iterator iter; -      iter b = name.begin(); -      iter e = name.end(); -      while(b != e) -         result.append(1, charT(*b++)); -      return result; -   } -#endif -   if(p2 - p1 == 1) -      return string_type(1, *p1); -   return string_type(); -} - -template <class charT> -w32_regex_traits_implementation<charT>::w32_regex_traits_implementation(::boost::re_detail::lcid_type l) -: w32_regex_traits_char_layer<charT>(l) -{ -   cat_type cat; -   std::string cat_name(w32_regex_traits<charT>::get_catalog_name()); -   if(cat_name.size()) -   { -      cat = ::boost::re_detail::w32_cat_open(cat_name); -      if(!cat) -      { -         std::string m("Unable to open message catalog: "); -         std::runtime_error err(m + cat_name); -         boost::re_detail::raise_runtime_error(err); -      } -   } -   // -   // if we have a valid catalog then load our messages: -   // -   if(cat) -   { -      // -      // Error messages: -      // -      for(boost::regex_constants::error_type i = static_cast<boost::regex_constants::error_type>(0);  -         i <= boost::regex_constants::error_unknown;  -         i = static_cast<boost::regex_constants::error_type>(i + 1)) -      { -         const char* p = get_default_error_string(i); -         string_type default_message; -         while(*p) -         { -            default_message.append(1, static_cast<charT>(*p)); -            ++p; -         } -         string_type s = ::boost::re_detail::w32_cat_get(cat, this->m_locale, i+200, default_message); -         std::string result; -         for(std::string::size_type j = 0; j < s.size(); ++j) -         { -            result.append(1, static_cast<char>(s[j])); -         } -         m_error_strings[i] = result; -      } -      // -      // Custom class names: -      // -      static const char_class_type masks[14] =  -      { -         0x0104u, // C1_ALPHA | C1_DIGIT -         0x0100u, // C1_ALPHA -         0x0020u, // C1_CNTRL -         0x0004u, // C1_DIGIT -         (~(0x0020u|0x0008u) & 0x01ffu) | 0x0400u, // not C1_CNTRL or C1_SPACE -         0x0002u, // C1_LOWER -         (~0x0020u & 0x01ffu) | 0x0400, // not C1_CNTRL -         0x0010u, // C1_PUNCT -         0x0008u, // C1_SPACE -         0x0001u, // C1_UPPER -         0x0080u, // C1_XDIGIT -         0x0040u, // C1_BLANK -         w32_regex_traits_implementation<charT>::mask_word, -         w32_regex_traits_implementation<charT>::mask_unicode, -      }; -      static const string_type null_string; -      for(unsigned int j = 0; j <= 13; ++j) -      { -         string_type s(::boost::re_detail::w32_cat_get(cat, this->m_locale, j+300, null_string)); -         if(s.size()) -            this->m_custom_class_names[s] = masks[j]; -      } -   } -   // -   // get the collation format used by m_pcollate: -   // -   m_collate_type = re_detail::find_sort_syntax(this, &m_collate_delim); -} - -template <class charT> -typename w32_regex_traits_implementation<charT>::char_class_type  -   w32_regex_traits_implementation<charT>::lookup_classname_imp(const charT* p1, const charT* p2) const -{ -   static const char_class_type masks[20] =  -   { -      0, -      0x0104u, // C1_ALPHA | C1_DIGIT -      0x0100u, // C1_ALPHA -      0x0040u, // C1_BLANK -      0x0020u, // C1_CNTRL -      0x0004u, // C1_DIGIT -      0x0004u, // C1_DIGIT -      (~(0x0020u|0x0008u|0x0040) & 0x01ffu) | 0x0400u, // not C1_CNTRL or C1_SPACE or C1_BLANK -      0x0002u, // C1_LOWER -      0x0002u, // C1_LOWER -      (~0x0020u & 0x01ffu) | 0x0400, // not C1_CNTRL -      0x0010u, // C1_PUNCT -      0x0008u, // C1_SPACE -      0x0008u, // C1_SPACE -      0x0001u, // C1_UPPER -      w32_regex_traits_implementation<charT>::mask_unicode, -      0x0001u, // C1_UPPER -      0x0104u | w32_regex_traits_implementation<charT>::mask_word,  -      0x0104u | w32_regex_traits_implementation<charT>::mask_word,  -      0x0080u, // C1_XDIGIT -   }; -   if(m_custom_class_names.size()) -   { -      typedef typename std::map<std::basic_string<charT>, char_class_type>::const_iterator map_iter; -      map_iter pos = m_custom_class_names.find(string_type(p1, p2)); -      if(pos != m_custom_class_names.end()) -         return pos->second; -   } -   std::size_t state_id = 1 + re_detail::get_default_class_id(p1, p2); -   if(state_id < sizeof(masks) / sizeof(masks[0])) -      return masks[state_id]; -   return masks[0]; -} - - -template <class charT> -boost::shared_ptr<const w32_regex_traits_implementation<charT> > create_w32_regex_traits(::boost::re_detail::lcid_type l BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(charT)) -{ -   // TODO: create a cache for previously constructed objects. -   return boost::object_cache< ::boost::re_detail::lcid_type, w32_regex_traits_implementation<charT> >::get(l, 5); -} - -} // re_detail - -template <class charT> -class w32_regex_traits -{ -public: -   typedef charT                         char_type; -   typedef std::size_t                   size_type; -   typedef std::basic_string<char_type>  string_type; -   typedef ::boost::re_detail::lcid_type locale_type; -   typedef boost::uint_least32_t         char_class_type; - -   struct boost_extensions_tag{}; - -   w32_regex_traits() -      : m_pimpl(re_detail::create_w32_regex_traits<charT>(::boost::re_detail::w32_get_default_locale())) -   { } -   static size_type length(const char_type* p) -   { -      return std::char_traits<charT>::length(p); -   } -   regex_constants::syntax_type syntax_type(charT c)const -   { -      return m_pimpl->syntax_type(c); -   } -   regex_constants::escape_syntax_type escape_syntax_type(charT c) const -   { -      return m_pimpl->escape_syntax_type(c); -   } -   charT translate(charT c) const -   { -      return c; -   } -   charT translate_nocase(charT c) const -   { -      return this->m_pimpl->tolower(c); -   } -   charT translate(charT c, bool icase) const -   { -      return icase ? this->m_pimpl->tolower(c) : c; -   } -   charT tolower(charT c) const -   { -      return this->m_pimpl->tolower(c); -   } -   charT toupper(charT c) const -   { -      return ::boost::re_detail::w32_toupper(c, this->m_pimpl->m_locale); -   } -   string_type transform(const charT* p1, const charT* p2) const -   { -      return ::boost::re_detail::w32_transform(this->m_pimpl->m_locale, p1, p2); -   } -   string_type transform_primary(const charT* p1, const charT* p2) const -   { -      return m_pimpl->transform_primary(p1, p2); -   } -   char_class_type lookup_classname(const charT* p1, const charT* p2) const -   { -      return m_pimpl->lookup_classname(p1, p2); -   } -   string_type lookup_collatename(const charT* p1, const charT* p2) const -   { -      return m_pimpl->lookup_collatename(p1, p2); -   } -   bool isctype(charT c, char_class_type f) const -   { -      if((f & re_detail::w32_regex_traits_implementation<charT>::mask_base)  -         && (this->m_pimpl->isctype(f & re_detail::w32_regex_traits_implementation<charT>::mask_base, c))) -         return true; -      else if((f & re_detail::w32_regex_traits_implementation<charT>::mask_unicode) && re_detail::is_extended(c)) -         return true; -      else if((f & re_detail::w32_regex_traits_implementation<charT>::mask_word) && (c == '_')) -         return true; -      return false; -   } -   int toi(const charT*& p1, const charT* p2, int radix)const -   { -      return ::boost::re_detail::global_toi(p1, p2, radix, *this); -   } -   int value(charT c, int radix)const -   { -      int result = ::boost::re_detail::global_value(c); -      return result < radix ? result : -1; -   } -   locale_type imbue(locale_type l) -   { -      ::boost::re_detail::lcid_type result(getloc()); -      m_pimpl = re_detail::create_w32_regex_traits<charT>(l); -      return result; -   } -   locale_type getloc()const -   { -      return m_pimpl->m_locale; -   } -   std::string error_string(regex_constants::error_type n) const -   { -      return m_pimpl->error_string(n); -   } - -   // -   // extension: -   // set the name of the message catalog in use (defaults to "boost_regex"). -   // -   static std::string catalog_name(const std::string& name); -   static std::string get_catalog_name(); - -private: -   boost::shared_ptr<const re_detail::w32_regex_traits_implementation<charT> > m_pimpl; -   // -   // catalog name handler: -   // -   static std::string& get_catalog_name_inst(); - -#ifdef BOOST_HAS_THREADS -   static static_mutex& get_mutex_inst(); -#endif -}; - -template <class charT> -std::string w32_regex_traits<charT>::catalog_name(const std::string& name) -{ -#ifdef BOOST_HAS_THREADS -   static_mutex::scoped_lock lk(get_mutex_inst()); -#endif -   std::string result(get_catalog_name_inst()); -   get_catalog_name_inst() = name; -   return result; -} - -template <class charT> -std::string& w32_regex_traits<charT>::get_catalog_name_inst() -{ -   static std::string s_name; -   return s_name; -} - -template <class charT> -std::string w32_regex_traits<charT>::get_catalog_name() -{ -#ifdef BOOST_HAS_THREADS -   static_mutex::scoped_lock lk(get_mutex_inst()); -#endif -   std::string result(get_catalog_name_inst()); -   return result; -} - -#ifdef BOOST_HAS_THREADS -template <class charT> -static_mutex& w32_regex_traits<charT>::get_mutex_inst() -{ -   static static_mutex s_mutex = BOOST_STATIC_MUTEX_INIT; -   return s_mutex; -} -#endif - - -} // boost - -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable: 4103) -#endif -#ifdef BOOST_HAS_ABI_HEADERS -#  include BOOST_ABI_SUFFIX -#endif -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - -#endif  | 
 Swift