summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '3rdParty/Boost/libs')
m---------3rdParty/Boost0
-rw-r--r--3rdParty/Boost/libs/date_time/src/gregorian/date_generators.cpp38
-rw-r--r--3rdParty/Boost/libs/date_time/src/gregorian/greg_month.cpp173
-rw-r--r--3rdParty/Boost/libs/date_time/src/gregorian/greg_names.hpp43
-rw-r--r--3rdParty/Boost/libs/date_time/src/gregorian/greg_weekday.cpp50
-rw-r--r--3rdParty/Boost/libs/date_time/src/gregorian/gregorian_types.cpp62
-rw-r--r--3rdParty/Boost/libs/date_time/src/posix_time/posix_time_types.cpp35
-rw-r--r--3rdParty/Boost/libs/detail/utf8_codecvt_facet.cpp269
-rw-r--r--3rdParty/Boost/libs/filesystem/src/operations.cpp1367
-rw-r--r--3rdParty/Boost/libs/filesystem/src/path.cpp163
-rw-r--r--3rdParty/Boost/libs/filesystem/src/portability.cpp115
-rw-r--r--3rdParty/Boost/libs/filesystem/src/utf8_codecvt_facet.cpp20
-rw-r--r--3rdParty/Boost/libs/filesystem/src/utf8_codecvt_facet.hpp24
-rw-r--r--3rdParty/Boost/libs/regex/src/c_regex_traits.cpp206
-rw-r--r--3rdParty/Boost/libs/regex/src/cpp_regex_traits.cpp117
-rw-r--r--3rdParty/Boost/libs/regex/src/cregex.cpp648
-rw-r--r--3rdParty/Boost/libs/regex/src/fileiter.cpp908
-rw-r--r--3rdParty/Boost/libs/regex/src/icu.cpp495
-rw-r--r--3rdParty/Boost/libs/regex/src/instances.cpp32
-rw-r--r--3rdParty/Boost/libs/regex/src/posix_api.cpp288
-rw-r--r--3rdParty/Boost/libs/regex/src/regex.cpp239
-rw-r--r--3rdParty/Boost/libs/regex/src/regex_debug.cpp59
-rw-r--r--3rdParty/Boost/libs/regex/src/regex_raw_buffer.cpp70
-rw-r--r--3rdParty/Boost/libs/regex/src/regex_traits_defaults.cpp688
-rw-r--r--3rdParty/Boost/libs/regex/src/static_mutex.cpp179
-rw-r--r--3rdParty/Boost/libs/regex/src/usinstances.cpp77
-rw-r--r--3rdParty/Boost/libs/regex/src/w32_regex_traits.cpp650
-rw-r--r--3rdParty/Boost/libs/regex/src/wc_regex_traits.cpp313
-rw-r--r--3rdParty/Boost/libs/regex/src/wide_posix_api.cpp310
-rw-r--r--3rdParty/Boost/libs/regex/src/winstances.cpp35
-rw-r--r--3rdParty/Boost/libs/signals/src/connection.cpp155
-rw-r--r--3rdParty/Boost/libs/signals/src/named_slot_map.cpp134
-rw-r--r--3rdParty/Boost/libs/signals/src/signal_base.cpp189
-rw-r--r--3rdParty/Boost/libs/signals/src/slot.cpp71
-rw-r--r--3rdParty/Boost/libs/signals/src/trackable.cpp59
-rw-r--r--3rdParty/Boost/libs/system/src/error_code.cpp433
-rw-r--r--3rdParty/Boost/libs/thread/src/pthread/exceptions.cpp124
-rw-r--r--3rdParty/Boost/libs/thread/src/pthread/once.cpp51
-rw-r--r--3rdParty/Boost/libs/thread/src/pthread/thread.cpp678
-rw-r--r--3rdParty/Boost/libs/thread/src/pthread/timeconv.inl130
-rw-r--r--3rdParty/Boost/libs/thread/src/tss_null.cpp34
-rw-r--r--3rdParty/Boost/libs/thread/src/win32/exceptions.cpp124
-rw-r--r--3rdParty/Boost/libs/thread/src/win32/thread.cpp597
-rw-r--r--3rdParty/Boost/libs/thread/src/win32/timeconv.inl130
-rw-r--r--3rdParty/Boost/libs/thread/src/win32/tss_dll.cpp72
-rw-r--r--3rdParty/Boost/libs/thread/src/win32/tss_pe.cpp287
46 files changed, 0 insertions, 10941 deletions
diff --git a/3rdParty/Boost b/3rdParty/Boost
new file mode 160000
+Subproject 3bbdbc8cf1996f23d9a366da8bac0f97be6ad79
diff --git a/3rdParty/Boost/libs/date_time/src/gregorian/date_generators.cpp b/3rdParty/Boost/libs/date_time/src/gregorian/date_generators.cpp
deleted file mode 100644
index bbef7f6..0000000
--- a/3rdParty/Boost/libs/date_time/src/gregorian/date_generators.cpp
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
- * Use, modification and distribution is subject to the
- * Boost Software License, Version 1.0. (See accompanying
- * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
- * Author: Jeff Garland, Bart Garst
- * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
- */
-
-
-
-#ifndef BOOST_DATE_TIME_SOURCE
-#define BOOST_DATE_TIME_SOURCE
-#endif
-#include "boost/date_time/date_generators.hpp"
-
-namespace boost {
-namespace date_time {
-
- const char* const _nth_as_str[] = {"out of range", "first", "second",
- "third", "fourth", "fifth"};
-
- //! Returns nth arg as string. 1 -> "first", 2 -> "second", max is 5.
- BOOST_DATE_TIME_DECL const char* nth_as_str(int ele)
- {
- if(ele >= 1 || ele <= 5) {
- return _nth_as_str[ele];
- }
- else {
- return _nth_as_str[0];
- }
- }
-
-} } //namespace date_time
-
-
-
-
-
diff --git a/3rdParty/Boost/libs/date_time/src/gregorian/greg_month.cpp b/3rdParty/Boost/libs/date_time/src/gregorian/greg_month.cpp
deleted file mode 100644
index efca973..0000000
--- a/3rdParty/Boost/libs/date_time/src/gregorian/greg_month.cpp
+++ /dev/null
@@ -1,173 +0,0 @@
-/* Copyright (c) 2002-2005 CrystalClear Software, Inc.
- * Use, modification and distribution is subject to the
- * Boost Software License, Version 1.0. (See accompanying
- * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
- * Author: Jeff Garland, Bart Garst
- * $Date: 2008-11-23 06:13:35 -0500 (Sun, 23 Nov 2008) $
- */
-
-
-
-#ifndef BOOST_DATE_TIME_SOURCE
-#define BOOST_DATE_TIME_SOURCE
-#endif
-#include "boost/date_time/gregorian/greg_month.hpp"
-#include "boost/date_time/gregorian/greg_facet.hpp"
-#include "boost/date_time/date_format_simple.hpp"
-#include "boost/date_time/compiler_config.hpp"
-#if defined(BOOST_DATE_TIME_INCLUDE_LIMITED_HEADERS)
-#include "boost/date_time/gregorian/formatters_limited.hpp"
-#else
-#include "boost/date_time/gregorian/formatters.hpp"
-#endif
-#include "boost/date_time/date_parsing.hpp"
-#include "boost/date_time/gregorian/parsers.hpp"
-
-#include "greg_names.hpp"
-namespace boost {
-namespace gregorian {
-
- /*! Returns a shared pointer to a map of Month strings & numbers.
- * Strings are both full names and abbreviations.
- * Ex. ("jan",1), ("february",2), etc...
- * Note: All characters are lowercase - for case insensitivity
- */
- greg_month::month_map_ptr_type greg_month::get_month_map_ptr()
- {
- static month_map_ptr_type month_map_ptr(new greg_month::month_map_type());
-
- if(month_map_ptr->empty()) {
- std::string s("");
- for(unsigned short i = 1; i <= 12; ++i) {
- greg_month m(static_cast<month_enum>(i));
- s = m.as_long_string();
- s = date_time::convert_to_lower(s);
- month_map_ptr->insert(std::make_pair(s, i));
- s = m.as_short_string();
- s = date_time::convert_to_lower(s);
- month_map_ptr->insert(std::make_pair(s, i));
- }
- }
- return month_map_ptr;
- }
-
-
- //! Returns 3 char english string for the month ex: Jan, Feb, Mar, Apr
- const char*
- greg_month::as_short_string() const
- {
- return short_month_names[value_-1];
- }
-
- //! Returns full name of month as string in english ex: January, February
- const char*
- greg_month::as_long_string() const
- {
- return long_month_names[value_-1];
- }
-
- //! Return special_value from string argument
- /*! Return special_value from string argument. If argument is
- * not one of the special value names (defined in names.hpp),
- * return 'not_special' */
- special_values special_value_from_string(const std::string& s) {
- short i = date_time::find_match(special_value_names,
- special_value_names,
- date_time::NumSpecialValues,
- s);
- if(i >= date_time::NumSpecialValues) { // match not found
- return not_special;
- }
- else {
- return static_cast<special_values>(i);
- }
- }
-
-
-#ifndef BOOST_NO_STD_WSTRING
- //! Returns 3 wchar_t english string for the month ex: Jan, Feb, Mar, Apr
- const wchar_t*
- greg_month::as_short_wstring() const
- {
- return w_short_month_names[value_-1];
- }
-
- //! Returns full name of month as wchar_t string in english ex: January, February
- const wchar_t*
- greg_month::as_long_wstring() const
- {
- return w_long_month_names[value_-1];
- }
-#endif // BOOST_NO_STD_WSTRING
-
-#ifndef BOOST_DATE_TIME_NO_LOCALE
- /*! creates an all_date_names_put object with the correct set of names.
- * This function is only called in the event of an exception where
- * the imbued locale containing the needed facet is for some reason
- * unreachable.
- */
- BOOST_DATE_TIME_DECL
- boost::date_time::all_date_names_put<greg_facet_config, char>*
- create_facet_def(char type)
- {
- typedef
- boost::date_time::all_date_names_put<greg_facet_config, char> facet_def;
-
- return new facet_def(short_month_names,
- long_month_names,
- special_value_names,
- short_weekday_names,
- long_weekday_names);
- }
-
- //! generates a locale with the set of gregorian name-strings of type char*
- BOOST_DATE_TIME_DECL std::locale generate_locale(std::locale& loc, char type){
- typedef boost::date_time::all_date_names_put<greg_facet_config, char> facet_def;
- return std::locale(loc, new facet_def(short_month_names,
- long_month_names,
- special_value_names,
- short_weekday_names,
- long_weekday_names)
- );
- }
-
-#ifndef BOOST_NO_STD_WSTRING
- /*! creates an all_date_names_put object with the correct set of names.
- * This function is only called in the event of an exception where
- * the imbued locale containing the needed facet is for some reason
- * unreachable.
- */
- BOOST_DATE_TIME_DECL
- boost::date_time::all_date_names_put<greg_facet_config, wchar_t>*
- create_facet_def(wchar_t type)
- {
- typedef
- boost::date_time::all_date_names_put<greg_facet_config,wchar_t> facet_def;
-
- return new facet_def(w_short_month_names,
- w_long_month_names,
- w_special_value_names,
- w_short_weekday_names,
- w_long_weekday_names);
- }
-
- //! generates a locale with the set of gregorian name-strings of type wchar_t*
- BOOST_DATE_TIME_DECL std::locale generate_locale(std::locale& loc, wchar_t type){
- typedef boost::date_time::all_date_names_put<greg_facet_config, wchar_t> facet_def;
- return std::locale(loc, new facet_def(w_short_month_names,
- w_long_month_names,
- w_special_value_names,
- w_short_weekday_names,
- w_long_weekday_names)
- );
- }
-#endif // BOOST_NO_STD_WSTRING
-#endif // BOOST_DATE_TIME_NO_LOCALE
-
-} } //namespace gregorian
-
-
-
-
-
-
diff --git a/3rdParty/Boost/libs/date_time/src/gregorian/greg_names.hpp b/3rdParty/Boost/libs/date_time/src/gregorian/greg_names.hpp
deleted file mode 100644
index 76a1a24..0000000
--- a/3rdParty/Boost/libs/date_time/src/gregorian/greg_names.hpp
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Copyright (c) 2002-2004 CrystalClear Software, Inc.
- * Use, modification and distribution is subject to the
- * Boost Software License, Version 1.0. (See accompanying
- * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
- * Author: Jeff Garland, Bart Garst
- * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
- */
-
-
-
-#ifndef DATE_TIME_SRC_GREG_NAMES_HPP___
-#define DATE_TIME_SRC_GREG_NAMES_HPP___
-
-#include "boost/date_time/gregorian/greg_month.hpp"
-#include "boost/date_time/special_defs.hpp"
-namespace boost {
-namespace gregorian {
-
-
- const char* const short_month_names[NumMonths]={"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec", "NAM"};
- const char* const long_month_names[NumMonths]={"January","February","March","April","May","June","July","August","September","October","November","December","NotAMonth"};
- const char* const special_value_names[date_time::NumSpecialValues]={"not-a-date-time","-infinity","+infinity","min_date_time","max_date_time","not_special"};
-
-
- const char* const short_weekday_names[]={"Sun", "Mon", "Tue",
- "Wed", "Thu", "Fri", "Sat"};
- const char* const long_weekday_names[]= {"Sunday","Monday","Tuesday",
- "Wednesday", "Thursday",
- "Friday", "Saturday"};
-
-#ifndef BOOST_NO_STD_WSTRING
- const wchar_t* const w_short_month_names[NumMonths]={L"Jan",L"Feb",L"Mar",L"Apr",L"May",L"Jun",L"Jul",L"Aug",L"Sep",L"Oct",L"Nov",L"Dec",L"NAM"};
- const wchar_t* const w_long_month_names[NumMonths]={L"January",L"February",L"March",L"April",L"May",L"June",L"July",L"August",L"September",L"October",L"November",L"December",L"NotAMonth"};
- const wchar_t* const w_special_value_names[date_time::NumSpecialValues]={L"not-a-date-time",L"-infinity",L"+infinity",L"min_date_time",L"max_date_time",L"not_special"};
-
- const wchar_t* const w_short_weekday_names[]={L"Sun", L"Mon", L"Tue",
- L"Wed", L"Thu", L"Fri", L"Sat"};
- const wchar_t* const w_long_weekday_names[]= {L"Sunday",L"Monday",L"Tuesday",
- L"Wednesday", L"Thursday",
- L"Friday", L"Saturday"};
-#endif // BOOST_NO_STD_WSTRING
-} } // boost::gregorian
-#endif // DATE_TIME_SRC_GREG_NAMES_HPP___
diff --git a/3rdParty/Boost/libs/date_time/src/gregorian/greg_weekday.cpp b/3rdParty/Boost/libs/date_time/src/gregorian/greg_weekday.cpp
deleted file mode 100644
index 4057d29..0000000
--- a/3rdParty/Boost/libs/date_time/src/gregorian/greg_weekday.cpp
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Copyright (c) 2002-2004 CrystalClear Software, Inc.
- * Use, modification and distribution is subject to the
- * Boost Software License, Version 1.0. (See accompanying
- * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
- * Author: Jeff Garland, Bart Garst
- * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
- */
-
-
-
-#ifndef BOOST_DATE_TIME_SOURCE
-#define BOOST_DATE_TIME_SOURCE
-#endif
-#include "boost/date_time/gregorian/greg_weekday.hpp"
-
-#include "greg_names.hpp"
-
-namespace boost {
-namespace gregorian {
-
- //! Return a 3 digit english string of the day of week (eg: Sun)
- const char*
- greg_weekday::as_short_string() const
- {
- return short_weekday_names[value_];
- }
- //! Return a point to a long english string representing day of week
- const char*
- greg_weekday::as_long_string() const
- {
- return long_weekday_names[value_];
- }
-
-#ifndef BOOST_NO_STD_WSTRING
- //! Return a 3 digit english wchar_t string of the day of week (eg: Sun)
- const wchar_t*
- greg_weekday::as_short_wstring() const
- {
- return w_short_weekday_names[value_];
- }
- //! Return a point to a long english wchar_t string representing day of week
- const wchar_t*
- greg_weekday::as_long_wstring() const
- {
- return w_long_weekday_names[value_];
- }
-#endif // BOOST_NO_STD_WSTRING
-
-} } //namespace gregorian
-
diff --git a/3rdParty/Boost/libs/date_time/src/gregorian/gregorian_types.cpp b/3rdParty/Boost/libs/date_time/src/gregorian/gregorian_types.cpp
deleted file mode 100644
index a856e79..0000000
--- a/3rdParty/Boost/libs/date_time/src/gregorian/gregorian_types.cpp
+++ /dev/null
@@ -1,62 +0,0 @@
-/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
- * Use, modification and distribution is subject to the
- * Boost Software License, Version 1.0. (See accompanying
- * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
- * Author: Jeff Garland
- * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
- */
-
-
-/** @defgroup date_basics Date Basics
- This page summarizes some of the key user types and functions needed
- to write programs using the gregorian date system. This is not a
- comprehensive list, but rather some key types to start exploring.
-
-
-**/
-
-/** @defgroup date_alg Date Algorithms / Generators
- Date algorithms or generators are tools for generating other dates or
- schedules of dates. A generator function starts with some part of a
- date such as a month and day and is supplied another part to then
- generate a final date.
-
-**/
-
-/** @defgroup date_format Date Formatting
- The functions on these page are some of the key formatting functions
- for dates.
-**/
-
-
-//File doesn't have a current purpose except to generate docs
-//and keep it changeable without recompiles
-/*! @example days_alive.cpp
- Calculate the number of days you have been living using durations and dates.
-*/
-/*! @example days_till_new_year.cpp
- Calculate the number of days till new years
-*/
-/*! @example print_month.cpp
- Simple utility to print out days of the month with the days of a month. Demontstrates date iteration (date_time::date_itr).
-*/
-/*! @example localization.cpp
- An example showing localized stream-based I/O.
-*/
-/*! @example dates_as_strings.cpp
- Various parsing and output of strings (mostly supported for
- compilers that do not support localized streams).
-*/
-/*! @example period_calc.cpp
- Calculates if a date is in an 'irregular' collection of periods using
- period calculation functions.
-*/
-/*! @example print_holidays.cpp
- This is an example of using functors to define a holiday schedule
- */
-/*! @example localization.cpp
- Demonstrates the use of facets to localize date output for Gregorian dates.
- */
-
-
-
diff --git a/3rdParty/Boost/libs/date_time/src/posix_time/posix_time_types.cpp b/3rdParty/Boost/libs/date_time/src/posix_time/posix_time_types.cpp
deleted file mode 100644
index 06ef563..0000000
--- a/3rdParty/Boost/libs/date_time/src/posix_time/posix_time_types.cpp
+++ /dev/null
@@ -1,35 +0,0 @@
-
-/* Copyright (c) 2002-2004 CrystalClear Software, Inc.
- * Use, modification and distribution is subject to the
- * Boost Software License, Version 1.0. (See accompanying
- * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
- * Author: Jeff Garland
- * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
- */
-
-
-//File doesn't have a current purpose except to generate docs
-//and keep it changeable without recompiles
-
-/** @defgroup time_basics Time Basics
-
-**/
-
-/** @defgroup time_format Time Formatting
-
-**/
-
-
-
-/*! @example local_utc_conversion.cpp
- Demonstrate utc to local and local to utc calculations including dst.
-*/
-/*! @example time_periods.cpp Demonstrate some simple uses of time periods.
-*/
-/*! @example print_hours.cpp Demonstrate time iteration, clock retrieval, and simple calculation.
- */
-/*! @example time_math.cpp Various types of calculations with times and time durations.
- */
-
-
-
diff --git a/3rdParty/Boost/libs/detail/utf8_codecvt_facet.cpp b/3rdParty/Boost/libs/detail/utf8_codecvt_facet.cpp
deleted file mode 100644
index 658ab6a..0000000
--- a/3rdParty/Boost/libs/detail/utf8_codecvt_facet.cpp
+++ /dev/null
@@ -1,269 +0,0 @@
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// utf8_codecvt_facet.cpp
-
-// Copyright (c) 2001 Ronald Garcia, Indiana University (garcia@osl.iu.edu)
-// Andrew Lumsdaine, Indiana University (lums@osl.iu.edu).
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// Please see the comments in <boost/detail/utf8_codecvt_facet.hpp> to
-// learn how this file should be used.
-
-#include <boost/detail/utf8_codecvt_facet.hpp>
-
-#include <cstdlib> // for multi-byte converson routines
-#include <cassert>
-
-#include <boost/limits.hpp>
-#include <boost/config.hpp>
-
-// If we don't have wstring, then Unicode support
-// is not available anyway, so we don't need to even
-// compiler this file. This also fixes the problem
-// with mingw, which can compile this file, but will
-// generate link error when building DLL.
-#ifndef BOOST_NO_STD_WSTRING
-
-BOOST_UTF8_BEGIN_NAMESPACE
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// implementation for wchar_t
-
-// Translate incoming UTF-8 into UCS-4
-std::codecvt_base::result utf8_codecvt_facet::do_in(
- std::mbstate_t& /*state*/,
- const char * from,
- const char * from_end,
- const char * & from_next,
- wchar_t * to,
- wchar_t * to_end,
- wchar_t * & to_next
-) const {
- // Basic algorithm: The first octet determines how many
- // octets total make up the UCS-4 character. The remaining
- // "continuing octets" all begin with "10". To convert, subtract
- // the amount that specifies the number of octets from the first
- // octet. Subtract 0x80 (1000 0000) from each continuing octet,
- // then mash the whole lot together. Note that each continuing
- // octet only uses 6 bits as unique values, so only shift by
- // multiples of 6 to combine.
- while (from != from_end && to != to_end) {
-
- // Error checking on the first octet
- if (invalid_leading_octet(*from)){
- from_next = from;
- to_next = to;
- return std::codecvt_base::error;
- }
-
- // The first octet is adjusted by a value dependent upon
- // the number of "continuing octets" encoding the character
- const int cont_octet_count = get_cont_octet_count(*from);
- const wchar_t octet1_modifier_table[] = {
- 0x00, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc
- };
-
- // The unsigned char conversion is necessary in case char is
- // signed (I learned this the hard way)
- wchar_t ucs_result =
- (unsigned char)(*from++) - octet1_modifier_table[cont_octet_count];
-
- // Invariants :
- // 1) At the start of the loop, 'i' continuing characters have been
- // processed
- // 2) *from points to the next continuing character to be processed.
- int i = 0;
- while(i != cont_octet_count && from != from_end) {
-
- // Error checking on continuing characters
- if (invalid_continuing_octet(*from)) {
- from_next = from;
- to_next = to;
- return std::codecvt_base::error;
- }
-
- ucs_result *= (1 << 6);
-
- // each continuing character has an extra (10xxxxxx)b attached to
- // it that must be removed.
- ucs_result += (unsigned char)(*from++) - 0x80;
- ++i;
- }
-
- // If the buffer ends with an incomplete unicode character...
- if (from == from_end && i != cont_octet_count) {
- // rewind "from" to before the current character translation
- from_next = from - (i+1);
- to_next = to;
- return std::codecvt_base::partial;
- }
- *to++ = ucs_result;
- }
- from_next = from;
- to_next = to;
-
- // Were we done converting or did we run out of destination space?
- if(from == from_end) return std::codecvt_base::ok;
- else return std::codecvt_base::partial;
-}
-
-std::codecvt_base::result utf8_codecvt_facet::do_out(
- std::mbstate_t& /*state*/,
- const wchar_t * from,
- const wchar_t * from_end,
- const wchar_t * & from_next,
- char * to,
- char * to_end,
- char * & to_next
-) const
-{
- // RG - consider merging this table with the other one
- const wchar_t octet1_modifier_table[] = {
- 0x00, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc
- };
-
- wchar_t max_wchar = (std::numeric_limits<wchar_t>::max)();
- while (from != from_end && to != to_end) {
-
- // Check for invalid UCS-4 character
- if (*from > max_wchar) {
- from_next = from;
- to_next = to;
- return std::codecvt_base::error;
- }
-
- int cont_octet_count = get_cont_octet_out_count(*from);
-
- // RG - comment this formula better
- int shift_exponent = (cont_octet_count) * 6;
-
- // Process the first character
- *to++ = static_cast<char>(octet1_modifier_table[cont_octet_count] +
- (unsigned char)(*from / (1 << shift_exponent)));
-
- // Process the continuation characters
- // Invariants: At the start of the loop:
- // 1) 'i' continuing octets have been generated
- // 2) '*to' points to the next location to place an octet
- // 3) shift_exponent is 6 more than needed for the next octet
- int i = 0;
- while (i != cont_octet_count && to != to_end) {
- shift_exponent -= 6;
- *to++ = static_cast<char>(0x80 + ((*from / (1 << shift_exponent)) % (1 << 6)));
- ++i;
- }
- // If we filled up the out buffer before encoding the character
- if(to == to_end && i != cont_octet_count) {
- from_next = from;
- to_next = to - (i+1);
- return std::codecvt_base::partial;
- }
- *from++;
- }
- from_next = from;
- to_next = to;
- // Were we done or did we run out of destination space
- if(from == from_end) return std::codecvt_base::ok;
- else return std::codecvt_base::partial;
-}
-
-// How many char objects can I process to get <= max_limit
-// wchar_t objects?
-int utf8_codecvt_facet::do_length(
- BOOST_CODECVT_DO_LENGTH_CONST std::mbstate_t &,
- const char * from,
- const char * from_end,
- std::size_t max_limit
-#if BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600))
-) const throw()
-#else
-) const
-#endif
-{
- // RG - this code is confusing! I need a better way to express it.
- // and test cases.
-
- // Invariants:
- // 1) last_octet_count has the size of the last measured character
- // 2) char_count holds the number of characters shown to fit
- // within the bounds so far (no greater than max_limit)
- // 3) from_next points to the octet 'last_octet_count' before the
- // last measured character.
- int last_octet_count=0;
- std::size_t char_count = 0;
- const char* from_next = from;
- // Use "<" because the buffer may represent incomplete characters
- while (from_next+last_octet_count <= from_end && char_count <= max_limit) {
- from_next += last_octet_count;
- last_octet_count = (get_octet_count(*from_next));
- ++char_count;
- }
- return static_cast<int>(from_next-from_end);
-}
-
-unsigned int utf8_codecvt_facet::get_octet_count(
- unsigned char lead_octet
-){
- // if the 0-bit (MSB) is 0, then 1 character
- if (lead_octet <= 0x7f) return 1;
-
- // Otherwise the count number of consecutive 1 bits starting at MSB
-// assert(0xc0 <= lead_octet && lead_octet <= 0xfd);
-
- if (0xc0 <= lead_octet && lead_octet <= 0xdf) return 2;
- else if (0xe0 <= lead_octet && lead_octet <= 0xef) return 3;
- else if (0xf0 <= lead_octet && lead_octet <= 0xf7) return 4;
- else if (0xf8 <= lead_octet && lead_octet <= 0xfb) return 5;
- else return 6;
-}
-BOOST_UTF8_END_NAMESPACE
-
-namespace {
-template<std::size_t s>
-int get_cont_octet_out_count_impl(wchar_t word){
- if (word < 0x80) {
- return 0;
- }
- if (word < 0x800) {
- return 1;
- }
- return 2;
-}
-
-// note the following code will generate on some platforms where
-// wchar_t is defined as UCS2. The warnings are superfluous as
-// the specialization is never instantitiated with such compilers.
-template<>
-int get_cont_octet_out_count_impl<4>(wchar_t word){
- if (word < 0x80) {
- return 0;
- }
- if (word < 0x800) {
- return 1;
- }
- if (word < 0x10000) {
- return 2;
- }
- if (word < 0x200000) {
- return 3;
- }
- if (word < 0x4000000) {
- return 4;
- }
- return 5;
-}
-
-} // namespace anonymous
-
-BOOST_UTF8_BEGIN_NAMESPACE
-// How many "continuing octets" will be needed for this word
-// == total octets - 1.
-int utf8_codecvt_facet::get_cont_octet_out_count(
- wchar_t word
-) const {
- return get_cont_octet_out_count_impl<sizeof(wchar_t)>(word);
-}
-BOOST_UTF8_END_NAMESPACE
-
-#endif
diff --git a/3rdParty/Boost/libs/filesystem/src/operations.cpp b/3rdParty/Boost/libs/filesystem/src/operations.cpp
deleted file mode 100644
index 0c74504..0000000
--- a/3rdParty/Boost/libs/filesystem/src/operations.cpp
+++ /dev/null
@@ -1,1367 +0,0 @@
-// operations.cpp ----------------------------------------------------------//
-
-// Copyright 2002-2005 Beman Dawes
-// Copyright 2001 Dietmar Kuehl
-// Use, modification, and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy
-// at http://www.boost.org/LICENSE_1_0.txt)
-
-// See library home page at http://www.boost.org/libs/filesystem
-
-//----------------------------------------------------------------------------//
-
-// define BOOST_FILESYSTEM_SOURCE so that <boost/filesystem/config.hpp> knows
-// the library is being built (possibly exporting rather than importing code)
-#define BOOST_FILESYSTEM_SOURCE
-
-#define _POSIX_PTHREAD_SEMANTICS // Sun readdir_r() needs this
-
-// enable the XPG-compliant version of readdir_r() on AIX
-#if defined(_AIX)
-# define _LINUX_SOURCE_COMPAT
-#endif
-
-#if !(defined(__HP_aCC) && defined(_ILP32) && \
- !defined(_STATVFS_ACPP_PROBLEMS_FIXED))
-#define _FILE_OFFSET_BITS 64 // at worst, these defines may have no effect,
-#endif
-#define __USE_FILE_OFFSET64 // but that is harmless on Windows and on POSIX
- // 64-bit systems or on 32-bit systems which don't have files larger
- // than can be represented by a traditional POSIX/UNIX off_t type.
- // OTOH, defining them should kick in 64-bit off_t's (and thus
- // st_size) on 32-bit systems that provide the Large File
- // Support (LFS) interface, such as Linux, Solaris, and IRIX.
- // The defines are given before any headers are included to
- // ensure that they are available to all included headers.
- // That is required at least on Solaris, and possibly on other
- // systems as well.
-
-// for some compilers (CodeWarrior, for example), windows.h
-// is getting included by some other boost header, so do this early:
-#if !defined(_WIN32_WINNT)
-#define _WIN32_WINNT 0x0500 // Default to Windows 2K or later
-#endif
-
-
-#include <boost/filesystem/operations.hpp>
-#include <boost/scoped_array.hpp>
-#include <boost/throw_exception.hpp>
-#include <boost/detail/workaround.hpp>
-
-namespace fs = boost::filesystem;
-using boost::system::error_code;
-using boost::system::system_category;
-
-# if defined(BOOST_WINDOWS_API)
-# include <windows.h>
-# if defined(__BORLANDC__) || defined(__MWERKS__)
-# if defined(__BORLANDC__)
- using std::time_t;
-# endif
-# include <utime.h>
-# else
-# include <sys/utime.h>
-# endif
-
-# else // BOOST_POSIX_API
-# include <sys/types.h>
-# if !defined(__APPLE__) && !defined(__OpenBSD__)
-# include <sys/statvfs.h>
-# define BOOST_STATVFS statvfs
-# define BOOST_STATVFS_F_FRSIZE vfs.f_frsize
-# else
-#ifdef __OpenBSD__
-# include <sys/param.h>
-#endif
-# include <sys/mount.h>
-# define BOOST_STATVFS statfs
-# define BOOST_STATVFS_F_FRSIZE static_cast<boost::uintmax_t>( vfs.f_bsize )
-# endif
-# include <dirent.h>
-# include <unistd.h>
-# include <fcntl.h>
-# include <utime.h>
-# include "limits.h"
-# endif
-
-// BOOST_FILESYSTEM_STATUS_CACHE enables file_status cache in
-// dir_itr_increment. The config tests are placed here because some of the
-// macros being tested come from dirent.h.
-//
-// TODO: find out what macros indicate dirent::d_type present in more libraries
-# if defined(BOOST_WINDOWS_API) \
- || (defined(_DIRENT_HAVE_D_TYPE) /* defined by GNU C library if d_type present */ \
- && !(defined(__SUNPRO_CC) && !defined(__sun))) // _DIRENT_HAVE_D_TYPE wrong for Sun compiler on Linux
-# define BOOST_FILESYSTEM_STATUS_CACHE
-# endif
-
-#include <sys/stat.h> // even on Windows some functions use stat()
-#include <string>
-#include <cstring>
-#include <cstdio> // for remove, rename
-#include <cerrno>
-#include <cassert>
-// #include <iostream> // for debugging only; comment out when not in use
-
-#ifdef BOOST_NO_STDC_NAMESPACE
-namespace std { using ::strcmp; using ::remove; using ::rename; }
-#endif
-
-// helpers -----------------------------------------------------------------//
-
-namespace
-{
- const error_code ok;
-
- bool is_empty_directory( const std::string & dir_path )
- {
- static const fs::directory_iterator end_itr;
- return fs::directory_iterator(fs::path(dir_path)) == end_itr;
- }
-
-#ifdef BOOST_WINDOWS_API
-
-// For Windows, the xxxA form of various function names is used to avoid
-// inadvertently getting wide forms of the functions. (The undecorated
-// forms are actually macros, so can misfire if the user has various
-// other macros defined. There was a bug report of this happening.)
-
- inline DWORD get_file_attributes( const char * ph )
- { return ::GetFileAttributesA( ph ); }
-
-# ifndef BOOST_FILESYSTEM_NARROW_ONLY
-
- inline DWORD get_file_attributes( const wchar_t * ph )
- { return ::GetFileAttributesW( ph ); }
-
- bool is_empty_directory( const std::wstring & dir_path )
- {
- static const fs::wdirectory_iterator wend_itr;
- return fs::wdirectory_iterator(fs::wpath(dir_path)) == wend_itr;
- }
-
- inline BOOL get_file_attributes_ex( const wchar_t * ph,
- WIN32_FILE_ATTRIBUTE_DATA & fad )
- { return ::GetFileAttributesExW( ph, ::GetFileExInfoStandard, &fad ); }
-
- HANDLE create_file( const wchar_t * ph, DWORD dwDesiredAccess,
- DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes,
- DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes,
- HANDLE hTemplateFile )
- {
- return ::CreateFileW( ph, dwDesiredAccess, dwShareMode,
- lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes,
- hTemplateFile );
- }
-
- inline DWORD get_current_directory( DWORD sz, wchar_t * buf )
- { return ::GetCurrentDirectoryW( sz, buf ); }
-
- inline bool set_current_directory( const wchar_t * buf )
- { return ::SetCurrentDirectoryW( buf ) != 0 ; }
-
- inline bool get_free_disk_space( const std::wstring & ph,
- PULARGE_INTEGER avail, PULARGE_INTEGER total, PULARGE_INTEGER free )
- { return ::GetDiskFreeSpaceExW( ph.c_str(), avail, total, free ) != 0; }
-
- inline std::size_t get_full_path_name(
- const std::wstring & ph, std::size_t len, wchar_t * buf, wchar_t ** p )
- {
- return static_cast<std::size_t>(
- ::GetFullPathNameW( ph.c_str(),
- static_cast<DWORD>(len), buf, p ));
- }
-
- inline bool remove_directory( const std::wstring & ph )
- { return ::RemoveDirectoryW( ph.c_str() ) != 0; }
-
- inline bool delete_file( const std::wstring & ph )
- { return ::DeleteFileW( ph.c_str() ) != 0; }
-
- inline bool create_directory( const std::wstring & dir )
- { return ::CreateDirectoryW( dir.c_str(), 0 ) != 0; }
-
-#if _WIN32_WINNT >= 0x500
- inline bool create_hard_link( const std::wstring & to_ph,
- const std::wstring & from_ph )
- { return ::CreateHardLinkW( from_ph.c_str(), to_ph.c_str(), 0 ) != 0; }
-#endif
-
-# endif // ifndef BOOST_FILESYSTEM_NARROW_ONLY
-
- template< class String >
- fs::file_status status_template( const String & ph, error_code & ec )
- {
- DWORD attr( get_file_attributes( ph.c_str() ) );
- if ( attr == 0xFFFFFFFF )
- {
- ec = error_code( ::GetLastError(), system_category );
- if ((ec.value() == ERROR_FILE_NOT_FOUND)
- || (ec.value() == ERROR_PATH_NOT_FOUND)
- || (ec.value() == ERROR_INVALID_NAME) // "tools/jam/src/:sys:stat.h", "//foo"
- || (ec.value() == ERROR_INVALID_DRIVE) // USB card reader with no card inserted
- || (ec.value() == ERROR_INVALID_PARAMETER) // ":sys:stat.h"
- || (ec.value() == ERROR_BAD_PATHNAME) // "//nosuch" on Win64
- || (ec.value() == ERROR_BAD_NETPATH)) // "//nosuch" on Win32
- {
- ec = ok; // these are not considered errors;
- // the status is considered not found
- return fs::file_status( fs::file_not_found );
- }
- else if ((ec.value() == ERROR_SHARING_VIOLATION))
- {
- ec = ok; // these are not considered errors;
- // the file exists but the type is not known
- return fs::file_status( fs::type_unknown );
- }
- return fs::file_status( fs::status_unknown );
- }
- ec = ok;;
- return (attr & FILE_ATTRIBUTE_DIRECTORY)
- ? fs::file_status( fs::directory_file )
- : fs::file_status( fs::regular_file );
- }
-
- BOOL get_file_attributes_ex( const char * ph,
- WIN32_FILE_ATTRIBUTE_DATA & fad )
- { return ::GetFileAttributesExA( ph, ::GetFileExInfoStandard, &fad ); }
-
- template< class String >
- boost::filesystem::detail::query_pair
- is_empty_template( const String & ph )
- {
- WIN32_FILE_ATTRIBUTE_DATA fad;
- if ( get_file_attributes_ex( ph.c_str(), fad ) == 0 )
- return std::make_pair( error_code( ::GetLastError(), system_category ), false );
- return std::make_pair( ok,
- ( fad.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
- ? is_empty_directory( ph )
- :( !fad.nFileSizeHigh && !fad.nFileSizeLow ) );
- }
-
- HANDLE create_file( const char * ph, DWORD dwDesiredAccess,
- DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes,
- DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes,
- HANDLE hTemplateFile )
- {
- return ::CreateFileA( ph, dwDesiredAccess, dwShareMode,
- lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes,
- hTemplateFile );
- }
-
- // Thanks to Jeremy Maitin-Shepard for much help and for permission to
- // base the equivalent() implementation on portions of his
- // file-equivalence-win32.cpp experimental code.
- struct handle_wrapper
- {
- HANDLE handle;
- handle_wrapper( HANDLE h )
- : handle(h) {}
- ~handle_wrapper()
- {
- if ( handle != INVALID_HANDLE_VALUE )
- ::CloseHandle(handle);
- }
- };
-
- template< class String >
- boost::filesystem::detail::query_pair
- equivalent_template( const String & ph1, const String & ph2 )
- {
- // Note well: Physical location on external media is part of the
- // equivalence criteria. If there are no open handles, physical location
- // can change due to defragmentation or other relocations. Thus handles
- // must be held open until location information for both paths has
- // been retrieved.
- handle_wrapper p1(
- create_file(
- ph1.c_str(),
- 0,
- FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
- 0,
- OPEN_EXISTING,
- FILE_FLAG_BACKUP_SEMANTICS,
- 0 ) );
- int error1(0); // save error code in case we have to throw
- if ( p1.handle == INVALID_HANDLE_VALUE )
- error1 = ::GetLastError();
- handle_wrapper p2(
- create_file(
- ph2.c_str(),
- 0,
- FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
- 0,
- OPEN_EXISTING,
- FILE_FLAG_BACKUP_SEMANTICS,
- 0 ) );
- if ( p1.handle == INVALID_HANDLE_VALUE
- || p2.handle == INVALID_HANDLE_VALUE )
- {
- if ( p1.handle != INVALID_HANDLE_VALUE
- || p2.handle != INVALID_HANDLE_VALUE )
- { return std::make_pair( ok, false ); }
- assert( p1.handle == INVALID_HANDLE_VALUE
- && p2.handle == INVALID_HANDLE_VALUE );
- { return std::make_pair( error_code( error1, system_category), false ); }
- }
- // at this point, both handles are known to be valid
- BY_HANDLE_FILE_INFORMATION info1, info2;
- if ( !::GetFileInformationByHandle( p1.handle, &info1 ) )
- { return std::make_pair( error_code( ::GetLastError(), system_category ), false ); }
- if ( !::GetFileInformationByHandle( p2.handle, &info2 ) )
- { return std::make_pair( error_code( ::GetLastError(), system_category ), false ); }
- // In theory, volume serial numbers are sufficient to distinguish between
- // devices, but in practice VSN's are sometimes duplicated, so last write
- // time and file size are also checked.
- return std::make_pair( ok,
- info1.dwVolumeSerialNumber == info2.dwVolumeSerialNumber
- && info1.nFileIndexHigh == info2.nFileIndexHigh
- && info1.nFileIndexLow == info2.nFileIndexLow
- && info1.nFileSizeHigh == info2.nFileSizeHigh
- && info1.nFileSizeLow == info2.nFileSizeLow
- && info1.ftLastWriteTime.dwLowDateTime
- == info2.ftLastWriteTime.dwLowDateTime
- && info1.ftLastWriteTime.dwHighDateTime
- == info2.ftLastWriteTime.dwHighDateTime );
- }
-
- template< class String >
- boost::filesystem::detail::uintmax_pair
- file_size_template( const String & ph )
- {
- WIN32_FILE_ATTRIBUTE_DATA fad;
- // by now, intmax_t is 64-bits on all Windows compilers
- if ( get_file_attributes_ex( ph.c_str(), fad ) == 0 )
- return std::make_pair( error_code( ::GetLastError(), system_category ), 0 );
- if ( (fad.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) !=0 )
- return std::make_pair( error_code( ERROR_FILE_NOT_FOUND, system_category), 0 );
- return std::make_pair( ok,
- (static_cast<boost::uintmax_t>(fad.nFileSizeHigh)
- << (sizeof(fad.nFileSizeLow)*8))
- + fad.nFileSizeLow );
- }
-
- inline bool get_free_disk_space( const std::string & ph,
- PULARGE_INTEGER avail, PULARGE_INTEGER total, PULARGE_INTEGER free )
- { return ::GetDiskFreeSpaceExA( ph.c_str(), avail, total, free ) != 0; }
-
- template< class String >
- boost::filesystem::detail::space_pair
- space_template( String & ph )
- {
- ULARGE_INTEGER avail, total, free;
- boost::filesystem::detail::space_pair result;
- if ( get_free_disk_space( ph, &avail, &total, &free ) )
- {
- result.first = ok;
- result.second.capacity
- = (static_cast<boost::uintmax_t>(total.HighPart) << 32)
- + total.LowPart;
- result.second.free
- = (static_cast<boost::uintmax_t>(free.HighPart) << 32)
- + free.LowPart;
- result.second.available
- = (static_cast<boost::uintmax_t>(avail.HighPart) << 32)
- + avail.LowPart;
- }
- else
- {
- result.first = error_code( ::GetLastError(), system_category );
- result.second.capacity = result.second.free
- = result.second.available = 0;
- }
- return result;
- }
-
- inline DWORD get_current_directory( DWORD sz, char * buf )
- { return ::GetCurrentDirectoryA( sz, buf ); }
-
- template< class String >
- error_code
- get_current_path_template( String & ph )
- {
- DWORD sz;
- if ( (sz = get_current_directory( 0,
- static_cast<typename String::value_type*>(0) )) == 0 )
- { sz = 1; }
- typedef typename String::value_type value_type;
- boost::scoped_array<value_type> buf( new value_type[sz] );
- if ( get_current_directory( sz, buf.get() ) == 0 )
- return error_code( ::GetLastError(), system_category );
- ph = buf.get();
- return ok;
- }
-
- inline bool set_current_directory( const char * buf )
- { return ::SetCurrentDirectoryA( buf ) != 0; }
-
- template< class String >
- error_code
- set_current_path_template( const String & ph )
- {
- return error_code( set_current_directory( ph.c_str() )
- ? 0 : ::GetLastError(), system_category );
- }
-
- inline std::size_t get_full_path_name(
- const std::string & ph, std::size_t len, char * buf, char ** p )
- {
- return static_cast<std::size_t>(
- ::GetFullPathNameA( ph.c_str(),
- static_cast<DWORD>(len), buf, p ));
- }
-
- const std::size_t buf_size( 128 );
-
- template<class String>
- error_code
- get_full_path_name_template( const String & ph, String & target )
- {
- typename String::value_type buf[buf_size];
- typename String::value_type * pfn;
- std::size_t len = get_full_path_name( ph,
- buf_size , buf, &pfn );
- if ( len == 0 ) return error_code( ::GetLastError(), system_category );
- if ( len > buf_size )
- {
- typedef typename String::value_type value_type;
- boost::scoped_array<value_type> big_buf( new value_type[len] );
- if ( (len=get_full_path_name( ph, len , big_buf.get(), &pfn ))
- == 0 ) return error_code( ::GetLastError(), system_category );
- big_buf[len] = '\0';
- target = big_buf.get();
- return ok;
- }
- buf[len] = '\0';
- target = buf;
- return ok;
- }
-
- template<class String>
- error_code
- get_file_write_time( const String & ph, FILETIME & last_write_time )
- {
- handle_wrapper hw(
- create_file( ph.c_str(), 0,
- FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, 0,
- OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0 ) );
- if ( hw.handle == INVALID_HANDLE_VALUE )
- return error_code( ::GetLastError(), system_category );
- return error_code( ::GetFileTime( hw.handle, 0, 0, &last_write_time ) != 0
- ? 0 : ::GetLastError(), system_category );
- }
-
- template<class String>
- error_code
- set_file_write_time( const String & ph, const FILETIME & last_write_time )
- {
- handle_wrapper hw(
- create_file( ph.c_str(), FILE_WRITE_ATTRIBUTES,
- FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, 0,
- OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0 ) );
- if ( hw.handle == INVALID_HANDLE_VALUE )
- return error_code( ::GetLastError(), system_category );
- return error_code( ::SetFileTime( hw.handle, 0, 0, &last_write_time ) != 0
- ? 0 : ::GetLastError(), system_category );
- }
-
- // these constants come from inspecting some Microsoft sample code
- std::time_t to_time_t( const FILETIME & ft )
- {
- __int64 t = (static_cast<__int64>( ft.dwHighDateTime ) << 32)
- + ft.dwLowDateTime;
-# if !defined( BOOST_MSVC ) || BOOST_MSVC > 1300 // > VC++ 7.0
- t -= 116444736000000000LL;
-# else
- t -= 116444736000000000;
-# endif
- t /= 10000000;
- return static_cast<std::time_t>( t );
- }
-
- void to_FILETIME( std::time_t t, FILETIME & ft )
- {
- __int64 temp = t;
- temp *= 10000000;
-# if !defined( BOOST_MSVC ) || BOOST_MSVC > 1300 // > VC++ 7.0
- temp += 116444736000000000LL;
-# else
- temp += 116444736000000000;
-# endif
- ft.dwLowDateTime = static_cast<DWORD>( temp );
- ft.dwHighDateTime = static_cast<DWORD>( temp >> 32 );
- }
-
- template<class String>
- boost::filesystem::detail::time_pair
- last_write_time_template( const String & ph )
- {
- FILETIME lwt;
- error_code ec(
- get_file_write_time( ph, lwt ) );
- return std::make_pair( ec, to_time_t( lwt ) );
- }
-
- template<class String>
- error_code
- last_write_time_template( const String & ph, const std::time_t new_time )
- {
- FILETIME lwt;
- to_FILETIME( new_time, lwt );
- return set_file_write_time( ph, lwt );
- }
-
- bool remove_directory( const std::string & ph )
- { return ::RemoveDirectoryA( ph.c_str() ) != 0; }
-
- bool delete_file( const std::string & ph )
- { return ::DeleteFileA( ph.c_str() ) != 0; }
-
- template<class String>
- error_code
- remove_template( const String & ph )
- {
- // TODO: test this code in the presence of Vista symlinks,
- // including dangling, self-referal, and cyclic symlinks
- error_code ec;
- fs::file_status sf( fs::detail::status_api( ph, ec ) );
- if ( ec )
- return ec;
- if ( sf.type() == fs::file_not_found )
- return ok;
- if ( fs::is_directory( sf ) )
- {
- if ( !remove_directory( ph ) )
- return error_code(::GetLastError(), system_category);
- }
- else
- {
- if ( !delete_file( ph ) ) return error_code(::GetLastError(), system_category);
- }
- return ok;
- }
-
- inline bool create_directory( const std::string & dir )
- { return ::CreateDirectoryA( dir.c_str(), 0 ) != 0; }
-
- template<class String>
- boost::filesystem::detail::query_pair
- create_directory_template( const String & dir_ph )
- {
- error_code error, dummy;
- if ( create_directory( dir_ph ) ) return std::make_pair( error, true );
- error = error_code( ::GetLastError(), system_category );
- // an error here may simply mean the postcondition is already met
- if ( error.value() == ERROR_ALREADY_EXISTS
- && fs::is_directory( fs::detail::status_api( dir_ph, dummy ) ) )
- return std::make_pair( ok, false );
- return std::make_pair( error, false );
- }
-
-#if _WIN32_WINNT >= 0x500
- inline bool create_hard_link( const std::string & to_ph,
- const std::string & from_ph )
- { return ::CreateHardLinkA( from_ph.c_str(), to_ph.c_str(), 0 ) != 0; }
-#endif
-
-#if _WIN32_WINNT >= 0x500
- template<class String>
- error_code
- create_hard_link_template( const String & to_ph,
- const String & from_ph )
- {
- return error_code( create_hard_link( to_ph.c_str(), from_ph.c_str() )
- ? 0 : ::GetLastError(), system_category );
- }
-#endif
-
-#else // BOOST_POSIX_API
-
- int posix_remove( const char * p )
- {
-# if defined(__QNXNTO__) || (defined(__MSL__) && (defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__)))
- // Some Metrowerks C library versions fail on directories because of a
- // known Metrowerks coding error in ::remove. Workaround is to call
- // rmdir() or unlink() as indicated.
- // Same bug also reported for QNX, with the same fix.
- int err = ::unlink( p );
- if ( err == 0 || errno != EPERM )
- return err;
- return ::rmdir( p );
-# else
- return std::remove( p );
-# endif
- }
-
-#endif
-} // unnamed namespace
-
-namespace boost
-{
- namespace filesystem
- {
- namespace detail
- {
- BOOST_FILESYSTEM_DECL system::error_code throws;
-
-// free functions ----------------------------------------------------------//
-
- BOOST_FILESYSTEM_DECL error_code not_found_error()
- {
-# ifdef BOOST_WINDOWS_API
- return error_code(ERROR_PATH_NOT_FOUND, system_category);
-# else
- return error_code(ENOENT, system_category);
-# endif
- }
-
- BOOST_FILESYSTEM_DECL bool possible_large_file_size_support()
- {
-# ifdef BOOST_POSIX_API
- struct stat lcl_stat;
- return sizeof( lcl_stat.st_size ) > 4;
-# else
- return true;
-# endif
- }
-
-# ifdef BOOST_WINDOWS_API
-
- BOOST_FILESYSTEM_DECL fs::file_status
- status_api( const std::string & ph, error_code & ec )
- { return status_template( ph, ec ); }
-
-# ifndef BOOST_FILESYSTEM_NARROW_ONLY
-
- BOOST_FILESYSTEM_DECL fs::file_status
- status_api( const std::wstring & ph, error_code & ec )
- { return status_template( ph, ec ); }
-
- BOOST_FILESYSTEM_DECL bool symbolic_link_exists_api( const std::wstring & )
- { return false; }
-
- BOOST_FILESYSTEM_DECL
- fs::detail::query_pair is_empty_api( const std::wstring & ph )
- { return is_empty_template( ph ); }
-
- BOOST_FILESYSTEM_DECL
- fs::detail::query_pair
- equivalent_api( const std::wstring & ph1, const std::wstring & ph2 )
- { return equivalent_template( ph1, ph2 ); }
-
- BOOST_FILESYSTEM_DECL
- fs::detail::uintmax_pair file_size_api( const std::wstring & ph )
- { return file_size_template( ph ); }
-
- BOOST_FILESYSTEM_DECL
- fs::detail::space_pair space_api( const std::wstring & ph )
- { return space_template( ph ); }
-
- BOOST_FILESYSTEM_DECL
- error_code
- get_current_path_api( std::wstring & ph )
- { return get_current_path_template( ph ); }
-
- BOOST_FILESYSTEM_DECL
- error_code
- set_current_path_api( const std::wstring & ph )
- { return set_current_path_template( ph ); }
-
- BOOST_FILESYSTEM_DECL error_code
- get_full_path_name_api( const std::wstring & ph, std::wstring & target )
- { return get_full_path_name_template( ph, target ); }
-
- BOOST_FILESYSTEM_DECL time_pair
- last_write_time_api( const std::wstring & ph )
- { return last_write_time_template( ph ); }
-
- BOOST_FILESYSTEM_DECL error_code
- last_write_time_api( const std::wstring & ph, std::time_t new_value )
- { return last_write_time_template( ph, new_value ); }
-
- BOOST_FILESYSTEM_DECL fs::detail::query_pair
- create_directory_api( const std::wstring & ph )
- { return create_directory_template( ph ); }
-
-#if _WIN32_WINNT >= 0x500
- BOOST_FILESYSTEM_DECL error_code
- create_hard_link_api( const std::wstring & to_ph,
- const std::wstring & from_ph )
- { return create_hard_link_template( to_ph, from_ph ); }
-#endif
-
- BOOST_FILESYSTEM_DECL error_code
- create_symlink_api( const std::wstring & /*to_ph*/,
- const std::wstring & /*from_ph*/ )
- { return error_code( ERROR_NOT_SUPPORTED, system_category ); }
-
- BOOST_FILESYSTEM_DECL error_code
- remove_api( const std::wstring & ph ) { return remove_template( ph ); }
-
- BOOST_FILESYSTEM_DECL error_code
- rename_api( const std::wstring & from, const std::wstring & to )
- {
- return error_code( ::MoveFileW( from.c_str(), to.c_str() )
- ? 0 : ::GetLastError(), system_category );
- }
-
- BOOST_FILESYSTEM_DECL error_code
- copy_file_api( const std::wstring & from, const std::wstring & to )
- {
- return error_code( ::CopyFileW( from.c_str(), to.c_str(), /*fail_if_exists=*/true )
- ? 0 : ::GetLastError(), system_category );
- }
-
- BOOST_FILESYSTEM_DECL bool create_file_api( const std::wstring & ph,
- std::ios_base::openmode mode ) // true if succeeds
- {
- DWORD access(
- ((mode & std::ios_base::in) == 0 ? 0 : GENERIC_READ)
- | ((mode & std::ios_base::out) == 0 ? 0 : GENERIC_WRITE) );
-
- DWORD disposition(0); // see 27.8.1.3 Table 92
- if ( (mode&~std::ios_base::binary)
- == (std::ios_base::out|std::ios_base::app) )
- disposition = OPEN_ALWAYS;
- else if ( (mode&~(std::ios_base::binary|std::ios_base::out))
- == std::ios_base::in ) disposition = OPEN_EXISTING;
- else if ( ((mode&~(std::ios_base::binary|std::ios_base::trunc))
- == std::ios_base::out )
- || ((mode&~std::ios_base::binary)
- == (std::ios_base::in|std::ios_base::out|std::ios_base::trunc)) )
- disposition = CREATE_ALWAYS;
- else assert( 0 && "invalid mode argument" );
-
- HANDLE handle ( ::CreateFileW( ph.c_str(), access,
- FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, 0,
- disposition, (mode &std::ios_base::out) != 0
- ? FILE_ATTRIBUTE_ARCHIVE : FILE_ATTRIBUTE_NORMAL, 0 ) );
- if ( handle == INVALID_HANDLE_VALUE ) return false;
- ::CloseHandle( handle );
- return true;
- }
-
- BOOST_FILESYSTEM_DECL std::string narrow_path_api(
- const std::wstring & ph ) // return is empty if fails
- {
- std::string narrow_short_form;
- std::wstring short_form;
- for ( DWORD buf_sz( static_cast<DWORD>( ph.size()+1 ));; )
- {
- boost::scoped_array<wchar_t> buf( new wchar_t[buf_sz] );
- DWORD sz( ::GetShortPathNameW( ph.c_str(), buf.get(), buf_sz ) );
- if ( sz == 0 ) return narrow_short_form;
- if ( sz <= buf_sz )
- {
- short_form += buf.get();
- break;
- }
- buf_sz = sz + 1;
- }
- // contributed by Takeshi Mouri:
- int narrow_sz( ::WideCharToMultiByte( CP_ACP, 0,
- short_form.c_str(), static_cast<int>(short_form.size()), 0, 0, 0, 0 ) );
- boost::scoped_array<char> narrow_buf( new char[narrow_sz] );
- ::WideCharToMultiByte( CP_ACP, 0,
- short_form.c_str(), static_cast<int>(short_form.size()),
- narrow_buf.get(), narrow_sz, 0, 0 );
- narrow_short_form.assign(narrow_buf.get(), narrow_sz);
-
- return narrow_short_form;
- }
-
- BOOST_FILESYSTEM_DECL error_code
- dir_itr_first( void *& handle, const std::wstring & dir,
- std::wstring & target, file_status & sf, file_status & symlink_sf )
- {
- // use a form of search Sebastian Martel reports will work with Win98
- std::wstring dirpath( dir );
- dirpath += (dirpath.empty()
- || dirpath[dirpath.size()-1] != L'\\') ? L"\\*" : L"*";
-
- WIN32_FIND_DATAW data;
- if ( (handle = ::FindFirstFileW( dirpath.c_str(), &data ))
- == INVALID_HANDLE_VALUE )
- {
- handle = 0;
- return error_code( ::GetLastError() == ERROR_FILE_NOT_FOUND
- ? 0 : ::GetLastError(), system_category );
- }
- target = data.cFileName;
- if ( data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
- { sf.type( directory_file ); symlink_sf.type( directory_file ); }
- else { sf.type( regular_file ); symlink_sf.type( regular_file ); }
- return ok;
- }
-
- BOOST_FILESYSTEM_DECL error_code
- dir_itr_increment( void *& handle, std::wstring & target,
- file_status & sf, file_status & symlink_sf )
- {
- WIN32_FIND_DATAW data;
- if ( ::FindNextFileW( handle, &data ) == 0 ) // fails
- {
- int error = ::GetLastError();
- dir_itr_close( handle );
- return error_code( error == ERROR_NO_MORE_FILES ? 0 : error, system_category );
- }
- target = data.cFileName;
- if ( data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
- { sf.type( directory_file ); symlink_sf.type( directory_file ); }
- else { sf.type( regular_file ); symlink_sf.type( regular_file ); }
- return ok;
- }
-
-# endif // ifndef BOOST_FILESYSTEM_NARROW_ONLY
-
- // suggested by Walter Landry
- BOOST_FILESYSTEM_DECL bool symbolic_link_exists_api( const std::string & )
- { return false; }
-
- BOOST_FILESYSTEM_DECL
- fs::detail::query_pair is_empty_api( const std::string & ph )
- { return is_empty_template( ph ); }
-
- BOOST_FILESYSTEM_DECL
- fs::detail::query_pair
- equivalent_api( const std::string & ph1, const std::string & ph2 )
- { return equivalent_template( ph1, ph2 ); }
-
- BOOST_FILESYSTEM_DECL
- fs::detail::uintmax_pair file_size_api( const std::string & ph )
- { return file_size_template( ph ); }
-
- BOOST_FILESYSTEM_DECL
- fs::detail::space_pair space_api( const std::string & ph )
- { return space_template( ph ); }
-
- BOOST_FILESYSTEM_DECL
- error_code
- get_current_path_api( std::string & ph )
- { return get_current_path_template( ph ); }
-
- BOOST_FILESYSTEM_DECL
- error_code
- set_current_path_api( const std::string & ph )
- { return set_current_path_template( ph ); }
-
- BOOST_FILESYSTEM_DECL error_code
- get_full_path_name_api( const std::string & ph, std::string & target )
- { return get_full_path_name_template( ph, target ); }
-
- BOOST_FILESYSTEM_DECL time_pair
- last_write_time_api( const std::string & ph )
- { return last_write_time_template( ph ); }
-
- BOOST_FILESYSTEM_DECL error_code
- last_write_time_api( const std::string & ph, std::time_t new_value )
- { return last_write_time_template( ph, new_value ); }
-
- BOOST_FILESYSTEM_DECL fs::detail::query_pair
- create_directory_api( const std::string & ph )
- { return create_directory_template( ph ); }
-
-#if _WIN32_WINNT >= 0x500
- BOOST_FILESYSTEM_DECL error_code
- create_hard_link_api( const std::string & to_ph,
- const std::string & from_ph )
- {
- return create_hard_link_template( to_ph, from_ph );
- }
-#endif
-
- BOOST_FILESYSTEM_DECL error_code
- create_symlink_api( const std::string & /*to_ph*/,
- const std::string & /*from_ph*/ )
- { return error_code( ERROR_NOT_SUPPORTED, system_category ); }
-
- BOOST_FILESYSTEM_DECL error_code
- remove_api( const std::string & ph ) { return remove_template( ph ); }
-
- BOOST_FILESYSTEM_DECL error_code
- rename_api( const std::string & from, const std::string & to )
- {
- return error_code( ::MoveFileA( from.c_str(), to.c_str() )
- ? 0 : ::GetLastError(), system_category );
- }
-
- BOOST_FILESYSTEM_DECL error_code
- copy_file_api( const std::string & from, const std::string & to )
- {
- return error_code( ::CopyFileA( from.c_str(), to.c_str(), /*fail_if_exists=*/true )
- ? 0 : ::GetLastError(), system_category );
- }
-
- BOOST_FILESYSTEM_DECL error_code
- dir_itr_first( void *& handle, const std::string & dir,
- std::string & target, file_status & sf, file_status & symlink_sf )
- // Note: an empty root directory has no "." or ".." entries, so this
- // causes a ERROR_FILE_NOT_FOUND error which we do not considered an
- // error. It is treated as eof instead.
- {
- // use a form of search Sebastian Martel reports will work with Win98
- std::string dirpath( dir );
- dirpath += (dirpath.empty()
- || (dirpath[dirpath.size()-1] != '\\'
- && dirpath[dirpath.size()-1] != ':')) ? "\\*" : "*";
-
- WIN32_FIND_DATAA data;
- if ( (handle = ::FindFirstFileA( dirpath.c_str(), &data ))
- == INVALID_HANDLE_VALUE )
- {
- handle = 0;
- return error_code( ::GetLastError() == ERROR_FILE_NOT_FOUND
- ? 0 : ::GetLastError(), system_category );
- }
- target = data.cFileName;
- if ( data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
- { sf.type( directory_file ); symlink_sf.type( directory_file ); }
- else { sf.type( regular_file ); symlink_sf.type( regular_file ); }
- return ok;
- }
-
- BOOST_FILESYSTEM_DECL error_code
- dir_itr_close( void *& handle )
- {
- if ( handle != 0 )
- {
- bool ok = ::FindClose( handle ) != 0;
- handle = 0;
- return error_code( ok ? 0 : ::GetLastError(), system_category );
- }
- return ok;
- }
-
- BOOST_FILESYSTEM_DECL error_code
- dir_itr_increment( void *& handle, std::string & target,
- file_status & sf, file_status & symlink_sf )
- {
- WIN32_FIND_DATAA data;
- if ( ::FindNextFileA( handle, &data ) == 0 ) // fails
- {
- int error = ::GetLastError();
- dir_itr_close( handle );
- return error_code( error == ERROR_NO_MORE_FILES ? 0 : error, system_category );
- }
- target = data.cFileName;
- if ( data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
- { sf.type( directory_file ); symlink_sf.type( directory_file ); }
- else { sf.type( regular_file ); symlink_sf.type( regular_file ); }
- return ok;
- }
-
-# else // BOOST_POSIX_API
-
- BOOST_FILESYSTEM_DECL fs::file_status
- status_api( const std::string & ph, error_code & ec )
- {
- struct stat path_stat;
- if ( ::stat( ph.c_str(), &path_stat ) != 0 )
- {
- if ( errno == ENOENT || errno == ENOTDIR )
- {
- ec = ok;
- return fs::file_status( fs::file_not_found );
- }
- ec = error_code( errno, system_category );
- return fs::file_status( fs::status_unknown );
- }
- ec = ok;
- if ( S_ISDIR( path_stat.st_mode ) )
- return fs::file_status( fs::directory_file );
- if ( S_ISREG( path_stat.st_mode ) )
- return fs::file_status( fs::regular_file );
- if ( S_ISBLK( path_stat.st_mode ) )
- return fs::file_status( fs::block_file );
- if ( S_ISCHR( path_stat.st_mode ) )
- return fs::file_status( fs::character_file );
- if ( S_ISFIFO( path_stat.st_mode ) )
- return fs::file_status( fs::fifo_file );
- if ( S_ISSOCK( path_stat.st_mode ) )
- return fs::file_status( fs::socket_file );
- return fs::file_status( fs::type_unknown );
- }
-
- BOOST_FILESYSTEM_DECL fs::file_status
- symlink_status_api( const std::string & ph, error_code & ec )
- {
- struct stat path_stat;
- if ( ::lstat( ph.c_str(), &path_stat ) != 0 )
- {
- if ( errno == ENOENT || errno == ENOTDIR )
- {
- ec = ok;
- return fs::file_status( fs::file_not_found );
- }
- ec = error_code( errno, system_category );
- return fs::file_status( fs::status_unknown );
- }
- ec = ok;
- if ( S_ISREG( path_stat.st_mode ) )
- return fs::file_status( fs::regular_file );
- if ( S_ISDIR( path_stat.st_mode ) )
- return fs::file_status( fs::directory_file );
- if ( S_ISLNK( path_stat.st_mode ) )
- return fs::file_status( fs::symlink_file );
- if ( S_ISBLK( path_stat.st_mode ) )
- return fs::file_status( fs::block_file );
- if ( S_ISCHR( path_stat.st_mode ) )
- return fs::file_status( fs::character_file );
- if ( S_ISFIFO( path_stat.st_mode ) )
- return fs::file_status( fs::fifo_file );
- if ( S_ISSOCK( path_stat.st_mode ) )
- return fs::file_status( fs::socket_file );
- return fs::file_status( fs::type_unknown );
- }
-
- // suggested by Walter Landry
- BOOST_FILESYSTEM_DECL bool
- symbolic_link_exists_api( const std::string & ph )
- {
- struct stat path_stat;
- return ::lstat( ph.c_str(), &path_stat ) == 0
- && S_ISLNK( path_stat.st_mode );
- }
-
- BOOST_FILESYSTEM_DECL query_pair
- is_empty_api( const std::string & ph )
- {
- struct stat path_stat;
- if ( (::stat( ph.c_str(), &path_stat )) != 0 )
- return std::make_pair( error_code( errno, system_category ), false );
- return std::make_pair( ok, S_ISDIR( path_stat.st_mode )
- ? is_empty_directory( ph )
- : path_stat.st_size == 0 );
- }
-
- BOOST_FILESYSTEM_DECL query_pair
- equivalent_api( const std::string & ph1, const std::string & ph2 )
- {
- struct stat s2;
- int e2( ::stat( ph2.c_str(), &s2 ) );
- struct stat s1;
- int e1( ::stat( ph1.c_str(), &s1 ) );
- if ( e1 != 0 || e2 != 0 )
- return std::make_pair( error_code( e1 != 0 && e2 != 0 ? errno : 0, system_category ), false );
- // at this point, both stats are known to be valid
- return std::make_pair( ok,
- s1.st_dev == s2.st_dev
- && s1.st_ino == s2.st_ino
- // According to the POSIX stat specs, "The st_ino and st_dev fields
- // taken together uniquely identify the file within the system."
- // Just to be sure, size and mod time are also checked.
- && s1.st_size == s2.st_size
- && s1.st_mtime == s2.st_mtime );
- }
-
- BOOST_FILESYSTEM_DECL uintmax_pair
- file_size_api( const std::string & ph )
- {
- struct stat path_stat;
- if ( ::stat( ph.c_str(), &path_stat ) != 0 )
- return std::make_pair( error_code( errno, system_category ), 0 );
- if ( !S_ISREG( path_stat.st_mode ) )
- return std::make_pair( error_code( EPERM, system_category ), 0 );
- return std::make_pair( ok,
- static_cast<boost::uintmax_t>(path_stat.st_size) );
- }
-
- BOOST_FILESYSTEM_DECL space_pair
- space_api( const std::string & ph )
- {
- struct BOOST_STATVFS vfs;
- space_pair result;
- if ( ::BOOST_STATVFS( ph.c_str(), &vfs ) != 0 )
- {
- result.first = error_code( errno, system_category );
- result.second.capacity = result.second.free
- = result.second.available = 0;
- }
- else
- {
- result.first = ok;
- result.second.capacity
- = static_cast<boost::uintmax_t>(vfs.f_blocks) * BOOST_STATVFS_F_FRSIZE;
- result.second.free
- = static_cast<boost::uintmax_t>(vfs.f_bfree) * BOOST_STATVFS_F_FRSIZE;
- result.second.available
- = static_cast<boost::uintmax_t>(vfs.f_bavail) * BOOST_STATVFS_F_FRSIZE;
- }
- return result;
- }
-
- BOOST_FILESYSTEM_DECL time_pair
- last_write_time_api( const std::string & ph )
- {
- struct stat path_stat;
- if ( ::stat( ph.c_str(), &path_stat ) != 0 )
- return std::make_pair( error_code( errno, system_category ), 0 );
- return std::make_pair( ok, path_stat.st_mtime );
- }
-
- BOOST_FILESYSTEM_DECL error_code
- last_write_time_api( const std::string & ph, std::time_t new_value )
- {
- struct stat path_stat;
- if ( ::stat( ph.c_str(), &path_stat ) != 0 )
- return error_code( errno, system_category );
- ::utimbuf buf;
- buf.actime = path_stat.st_atime; // utime() updates access time too:-(
- buf.modtime = new_value;
- return error_code( ::utime( ph.c_str(), &buf ) != 0 ? errno : 0, system_category );
- }
-
- BOOST_FILESYSTEM_DECL error_code
- get_current_path_api( std::string & ph )
- {
- for ( long path_max = 32;; path_max *=2 ) // loop 'til buffer large enough
- {
- boost::scoped_array<char>
- buf( new char[static_cast<std::size_t>(path_max)] );
- if ( ::getcwd( buf.get(), static_cast<std::size_t>(path_max) ) == 0 )
- {
- if ( errno != ERANGE
- // bug in some versions of the Metrowerks C lib on the Mac: wrong errno set
-# if defined(__MSL__) && (defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__))
- && errno != 0
-# endif
- ) return error_code( errno, system_category );
- }
- else
- {
- ph = buf.get();
- break;
- }
- }
- return ok;
- }
-
- BOOST_FILESYSTEM_DECL error_code
- set_current_path_api( const std::string & ph )
- {
- return error_code( ::chdir( ph.c_str() )
- ? errno : 0, system_category );
- }
-
- BOOST_FILESYSTEM_DECL fs::detail::query_pair
- create_directory_api( const std::string & ph )
- {
- if ( ::mkdir( ph.c_str(), S_IRWXU|S_IRWXG|S_IRWXO ) == 0 )
- { return std::make_pair( ok, true ); }
- int ec=errno;
- error_code dummy;
- if ( ec != EEXIST
- || !fs::is_directory( status_api( ph, dummy ) ) )
- { return std::make_pair( error_code( ec, system_category ), false ); }
- return std::make_pair( ok, false );
- }
-
- BOOST_FILESYSTEM_DECL error_code
- create_hard_link_api( const std::string & to_ph,
- const std::string & from_ph )
- {
- return error_code( ::link( to_ph.c_str(), from_ph.c_str() ) == 0
- ? 0 : errno, system_category );
- }
-
- BOOST_FILESYSTEM_DECL error_code
- create_symlink_api( const std::string & to_ph,
- const std::string & from_ph )
- {
- return error_code( ::symlink( to_ph.c_str(), from_ph.c_str() ) == 0
- ? 0 : errno, system_category );
- }
-
- BOOST_FILESYSTEM_DECL error_code
- remove_api( const std::string & ph )
- {
- if ( posix_remove( ph.c_str() ) == 0 )
- return ok;
- int error = errno;
- // POSIX says "If the directory is not an empty directory, rmdir()
- // shall fail and set errno to EEXIST or ENOTEMPTY."
- // Linux uses ENOTEMPTY, Solaris uses EEXIST.
- if ( error == EEXIST ) error = ENOTEMPTY;
-
- error_code ec;
-
- // ignore errors if post-condition satisfied
- return status_api(ph, ec).type() == file_not_found
- ? ok : error_code( error, system_category ) ;
- }
-
- BOOST_FILESYSTEM_DECL error_code
- rename_api( const std::string & from, const std::string & to )
- {
- // POSIX is too permissive so must check
- error_code dummy;
- if ( fs::exists( status_api( to, dummy ) ) )
- return error_code( EEXIST, system_category );
- return error_code( std::rename( from.c_str(), to.c_str() ) != 0
- ? errno : 0, system_category );
- }
-
- BOOST_FILESYSTEM_DECL error_code
- copy_file_api( const std::string & from_file_ph,
- const std::string & to_file_ph )
- {
- const std::size_t buf_sz = 32768;
- boost::scoped_array<char> buf( new char [buf_sz] );
- int infile=-1, outfile=-1; // -1 means not open
- struct stat from_stat;
-
- if ( ::stat( from_file_ph.c_str(), &from_stat ) != 0
- || (infile = ::open( from_file_ph.c_str(),
- O_RDONLY )) < 0
- || (outfile = ::open( to_file_ph.c_str(),
- O_WRONLY | O_CREAT | O_EXCL,
- from_stat.st_mode )) < 0 )
- {
- if ( infile >= 0 ) ::close( infile );
- return error_code( errno, system_category );
- }
-
- ssize_t sz, sz_read=1, sz_write;
- while ( sz_read > 0
- && (sz_read = ::read( infile, buf.get(), buf_sz )) > 0 )
- {
- // Allow for partial writes - see Advanced Unix Programming (2nd Ed.),
- // Marc Rochkind, Addison-Wesley, 2004, page 94
- sz_write = 0;
- do
- {
- if ( (sz = ::write( outfile, buf.get() + sz_write,
- sz_read - sz_write )) < 0 )
- {
- sz_read = sz; // cause read loop termination
- break; // and error to be thrown after closes
- }
- sz_write += sz;
- } while ( sz_write < sz_read );
- }
-
- if ( ::close( infile) < 0 ) sz_read = -1;
- if ( ::close( outfile) < 0 ) sz_read = -1;
-
- return error_code( sz_read < 0 ? errno : 0, system_category );
- }
-
- // this code is based on Stevens and Rago, Advanced Programming in the
- // UNIX envirnment, 2nd Ed., ISBN 0-201-43307-9, page 49
- error_code path_max( std::size_t & result )
- {
-# ifdef PATH_MAX
- static std::size_t max = PATH_MAX;
-# else
- static std::size_t max = 0;
-# endif
- if ( max == 0 )
- {
- errno = 0;
- long tmp = ::pathconf( "/", _PC_NAME_MAX );
- if ( tmp < 0 )
- {
- if ( errno == 0 ) // indeterminate
- max = 4096; // guess
- else return error_code( errno, system_category );
- }
- else max = static_cast<std::size_t>( tmp + 1 ); // relative root
- }
- result = max;
- return ok;
- }
-
- BOOST_FILESYSTEM_DECL error_code
- dir_itr_first( void *& handle, void *& buffer,
- const std::string & dir, std::string & target,
- file_status &, file_status & )
- {
- if ( (handle = ::opendir( dir.c_str() )) == 0 )
- return error_code( errno, system_category );
- target = std::string( "." ); // string was static but caused trouble
- // when iteration called from dtor, after
- // static had already been destroyed
- std::size_t path_size;
- error_code ec = path_max( path_size );
- if ( ec ) return ec;
- dirent de;
- buffer = std::malloc( (sizeof(dirent) - sizeof(de.d_name))
- + path_size + 1 ); // + 1 for "/0"
- return ok;
- }
-
- BOOST_FILESYSTEM_DECL error_code
- dir_itr_close( void *& handle, void*& buffer )
- {
- std::free( buffer );
- buffer = 0;
- if ( handle == 0 ) return ok;
- DIR * h( static_cast<DIR*>(handle) );
- handle = 0;
- return error_code( ::closedir( h ) == 0 ? 0 : errno, system_category );
- }
-
- // warning: the only dirent member updated is d_name
- inline int readdir_r_simulator( DIR * dirp, struct dirent * entry,
- struct dirent ** result ) // *result set to 0 on end of directory
- {
- errno = 0;
-
- # if !defined(__CYGWIN__) \
- && defined(_POSIX_THREAD_SAFE_FUNCTIONS) \
- && defined(_SC_THREAD_SAFE_FUNCTIONS) \
- && (_POSIX_THREAD_SAFE_FUNCTIONS+0 >= 0) \
- && (!defined(__hpux) || (defined(__hpux) && defined(_REENTRANT)))
- if ( ::sysconf( _SC_THREAD_SAFE_FUNCTIONS ) >= 0 )
- { return ::readdir_r( dirp, entry, result ); }
- # endif
-
- struct dirent * p;
- *result = 0;
- if ( (p = ::readdir( dirp )) == 0 )
- return errno;
- std::strcpy( entry->d_name, p->d_name );
- *result = entry;
- return 0;
- }
-
- BOOST_FILESYSTEM_DECL error_code
- dir_itr_increment( void *& handle, void *& buffer,
- std::string & target, file_status & sf, file_status & symlink_sf )
- {
- BOOST_ASSERT( buffer != 0 );
- dirent * entry( static_cast<dirent *>(buffer) );
- dirent * result;
- int return_code;
- if ( (return_code = readdir_r_simulator( static_cast<DIR*>(handle),
- entry, &result )) != 0 ) return error_code( errno, system_category );
- if ( result == 0 ) return dir_itr_close( handle, buffer );
- target = entry->d_name;
-# ifdef BOOST_FILESYSTEM_STATUS_CACHE
- if ( entry->d_type == DT_UNKNOWN ) // filesystem does not supply d_type value
- {
- sf = symlink_sf = fs::file_status(fs::status_unknown);
- }
- else // filesystem supplies d_type value
- {
- if ( entry->d_type == DT_DIR )
- sf = symlink_sf = fs::file_status( fs::directory_file );
- else if ( entry->d_type == DT_REG )
- sf = symlink_sf = fs::file_status( fs::regular_file );
- else if ( entry->d_type == DT_LNK )
- {
- sf = fs::file_status( fs::status_unknown );
- symlink_sf = fs::file_status( fs::symlink_file );
- }
- else sf = symlink_sf = fs::file_status( fs::status_unknown );
- }
-# else
- sf = symlink_sf = fs::file_status( fs::status_unknown );
-# endif
- return ok;
- }
-
-# endif
- } // namespace detail
- } // namespace filesystem
-} // namespace boost
diff --git a/3rdParty/Boost/libs/filesystem/src/path.cpp b/3rdParty/Boost/libs/filesystem/src/path.cpp
deleted file mode 100644
index 6d7d40c..0000000
--- a/3rdParty/Boost/libs/filesystem/src/path.cpp
+++ /dev/null
@@ -1,163 +0,0 @@
-// path.cpp ----------------------------------------------------------------//
-
-// Copyright 2005 Beman Dawes
-
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See library home page at http://www.boost.org/libs/filesystem
-
-//----------------------------------------------------------------------------//
-
-// define BOOST_FILESYSTEM_SOURCE so that <boost/filesystem/config.hpp> knows
-// the library is being built (possibly exporting rather than importing code)
-#define BOOST_FILESYSTEM_SOURCE
-
-#include <boost/filesystem/config.hpp>
-
-#ifndef BOOST_FILESYSTEM_NARROW_ONLY
-
-#include <boost/filesystem/path.hpp>
-#include <boost/scoped_array.hpp>
-
-#include <locale>
-#include <boost/cerrno.hpp>
-#include <boost/system/error_code.hpp>
-
-#include <cwchar> // for std::mbstate_t
-
-namespace
-{
- // std::locale construction can throw (if LC_MESSAGES is wrong, for example),
- // so a static at function scope is used to ensure that exceptions can be
- // caught. (A previous version was at namespace scope, so initialization
- // occurred before main(), preventing exceptions from being caught.)
- std::locale & loc()
- {
-#if !defined(macintosh) && !defined(__APPLE__) && !defined(__APPLE_CC__)
- // ISO C calls this "the locale-specific native environment":
- static std::locale lc("");
-#else
- static std::locale lc = std::locale(); // Mac OS doesn't support locale("")
-#endif
- return lc;
- }
-
- const std::codecvt<wchar_t, char, std::mbstate_t> *&
- converter()
- {
- static const std::codecvt<wchar_t, char, std::mbstate_t> *
- cvtr(
- &std::use_facet<std::codecvt<wchar_t, char, std::mbstate_t> >
- ( loc() ) );
- return cvtr;
- }
-
- bool locked(false);
-} // unnamed namespace
-
-namespace boost
-{
- namespace filesystem
- {
- bool wpath_traits::imbue( const std::locale & new_loc, const std::nothrow_t & )
- {
- if ( locked ) return false;
- locked = true;
- loc() = new_loc;
- converter() = &std::use_facet
- <std::codecvt<wchar_t, char, std::mbstate_t> >( loc() );
- return true;
- }
-
- void wpath_traits::imbue( const std::locale & new_loc )
- {
- if ( locked ) boost::throw_exception(
- wfilesystem_error(
- "boost::filesystem::wpath_traits::imbue() after lockdown",
- make_error_code( system::posix::not_supported ) ) );
- imbue( new_loc, std::nothrow );
- }
-
- //namespace detail
- //{
- // BOOST_FILESYSTEM_DECL
- // const char * what( const char * sys_err_what,
- // const path & path1, const path & path2, std::string & target)
- // {
- // try
- // {
- // if ( target.empty() )
- // {
- // target = sys_err_what;
- // if ( !path1.empty() )
- // {
- // target += ": \"";
- // target += path1.file_string();
- // target += "\"";
- // }
- // if ( !path2.empty() )
- // {
- // target += ", \"";
- // target += path2.file_string();
- // target += "\"";
- // }
- // }
- // return target.c_str();
- // }
- // catch (...)
- // {
- // return sys_err_what;
- // }
- // }
- //}
-
-# ifdef BOOST_POSIX_API
-
-// Because this is POSIX only code, we don't have to worry about ABI issues
-// described in http://www.boost.org/more/separate_compilation.html
-
- wpath_traits::external_string_type
- wpath_traits::to_external( const wpath & ph,
- const internal_string_type & src )
- {
- locked = true;
- std::size_t work_size( converter()->max_length() * (src.size()+1) );
- boost::scoped_array<char> work( new char[ work_size ] );
- std::mbstate_t state = std::mbstate_t(); // perhaps unneeded, but cuts bug reports
- const internal_string_type::value_type * from_next;
- external_string_type::value_type * to_next;
- if ( converter()->out(
- state, src.c_str(), src.c_str()+src.size(), from_next, work.get(),
- work.get()+work_size, to_next ) != std::codecvt_base::ok )
- boost::throw_exception( boost::filesystem::wfilesystem_error(
- "boost::filesystem::wpath::to_external conversion error",
- ph, system::error_code( system::posix::invalid_argument, system::system_category ) ) );
- *to_next = '\0';
- return external_string_type( work.get() );
- }
-
- wpath_traits::internal_string_type
- wpath_traits::to_internal( const external_string_type & src )
- {
- locked = true;
- std::size_t work_size( src.size()+1 );
- boost::scoped_array<wchar_t> work( new wchar_t[ work_size ] );
- std::mbstate_t state = std::mbstate_t(); // perhaps unneeded, but cuts bug reports
- const external_string_type::value_type * from_next;
- internal_string_type::value_type * to_next;
- if ( converter()->in(
- state, src.c_str(), src.c_str()+src.size(), from_next, work.get(),
- work.get()+work_size, to_next ) != std::codecvt_base::ok )
- boost::throw_exception( boost::filesystem::wfilesystem_error(
- "boost::filesystem::wpath::to_internal conversion error",
- system::error_code( system::posix::invalid_argument, system::system_category ) ) );
- *to_next = L'\0';
- return internal_string_type( work.get() );
- }
-# endif // BOOST_POSIX_API
-
- } // namespace filesystem
-} // namespace boost
-
-#endif // ifndef BOOST_FILESYSTEM_NARROW_ONLY
diff --git a/3rdParty/Boost/libs/filesystem/src/portability.cpp b/3rdParty/Boost/libs/filesystem/src/portability.cpp
deleted file mode 100644
index 347180a..0000000
--- a/3rdParty/Boost/libs/filesystem/src/portability.cpp
+++ /dev/null
@@ -1,115 +0,0 @@
-// portability.cpp ---------------------------------------------------------//
-
-// Copyright 2002-2005 Beman Dawes
-// Use, modification, and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy
-// at http://www.boost.org/LICENSE_1_0.txt)
-
-// See library home page at http://www.boost.org/libs/filesystem
-
-//----------------------------------------------------------------------------//
-
-// define BOOST_FILESYSTEM_SOURCE so that <boost/filesystem/config.hpp> knows
-// the library is being built (possibly exporting rather than importing code)
-#define BOOST_FILESYSTEM_SOURCE
-
-#include <boost/filesystem/config.hpp>
-#include <boost/filesystem/path.hpp>
-
-namespace fs = boost::filesystem;
-
-#include <cstring> // SGI MIPSpro compilers need this
-
-# ifdef BOOST_NO_STDC_NAMESPACE
- namespace std { using ::strerror; }
-# endif
-
-//----------------------------------------------------------------------------//
-
-namespace
-{
- const char invalid_chars[] =
- "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F"
- "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F"
- "<>:\"/\\|";
- // note that the terminating '\0' is part of the string - thus the size below
- // is sizeof(invalid_chars) rather than sizeof(invalid_chars)-1. I
- const std::string windows_invalid_chars( invalid_chars, sizeof(invalid_chars) );
-
- const std::string valid_posix(
- "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._-" );
-
-} // unnamed namespace
-
-namespace boost
-{
- namespace filesystem
- {
-
- // name_check functions ----------------------------------------------//
-
-# ifdef BOOST_WINDOWS
- BOOST_FILESYSTEM_DECL bool native( const std::string & name )
- {
- return windows_name( name );
- }
-# else
- BOOST_FILESYSTEM_DECL bool native( const std::string & name )
- {
- return name.size() != 0
- && name[0] != ' '
- && name.find('/') == std::string::npos;
- }
-# endif
-
- BOOST_FILESYSTEM_DECL bool portable_posix_name( const std::string & name )
- {
- return name.size() != 0
- && name.find_first_not_of( valid_posix ) == std::string::npos;
- }
-
- BOOST_FILESYSTEM_DECL bool windows_name( const std::string & name )
- {
- return name.size() != 0
- && name[0] != ' '
- && name.find_first_of( windows_invalid_chars ) == std::string::npos
- && *(name.end()-1) != ' '
- && (*(name.end()-1) != '.'
- || name.length() == 1 || name == "..");
- }
-
- BOOST_FILESYSTEM_DECL bool portable_name( const std::string & name )
- {
- return
- name.size() != 0
- && ( name == "."
- || name == ".."
- || (windows_name( name )
- && portable_posix_name( name )
- && name[0] != '.' && name[0] != '-'));
- }
-
- BOOST_FILESYSTEM_DECL bool portable_directory_name( const std::string & name )
- {
- return
- name == "."
- || name == ".."
- || (portable_name( name )
- && name.find('.') == std::string::npos);
- }
-
- BOOST_FILESYSTEM_DECL bool portable_file_name( const std::string & name )
- {
- std::string::size_type pos;
- return
- portable_name( name )
- && name != "."
- && name != ".."
- && ( (pos = name.find( '.' )) == std::string::npos
- || (name.find( '.', pos+1 ) == std::string::npos
- && (pos + 5) > name.length() ))
- ;
- }
-
- } // namespace filesystem
-} // namespace boost
diff --git a/3rdParty/Boost/libs/filesystem/src/utf8_codecvt_facet.cpp b/3rdParty/Boost/libs/filesystem/src/utf8_codecvt_facet.cpp
deleted file mode 100644
index 3fe3e95..0000000
--- a/3rdParty/Boost/libs/filesystem/src/utf8_codecvt_facet.cpp
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright Vladimir Prus 2004.
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-// or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#define BOOST_FILESYSTEM_SOURCE
-#include <boost/filesystem/config.hpp>
-
-#define BOOST_UTF8_BEGIN_NAMESPACE \
- namespace boost { namespace filesystem { namespace detail {
-
-#define BOOST_UTF8_END_NAMESPACE }}}
-#define BOOST_UTF8_DECL BOOST_FILESYSTEM_DECL
-
-#include "libs/detail/utf8_codecvt_facet.cpp"
-
-
-#undef BOOST_UTF8_BEGIN_NAMESPACE
-#undef BOOST_UTF8_END_NAMESPACE
-#undef BOOST_UTF8_DECL
diff --git a/3rdParty/Boost/libs/filesystem/src/utf8_codecvt_facet.hpp b/3rdParty/Boost/libs/filesystem/src/utf8_codecvt_facet.hpp
deleted file mode 100644
index 3b78fb1..0000000
--- a/3rdParty/Boost/libs/filesystem/src/utf8_codecvt_facet.hpp
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2001 Ronald Garcia, Indiana University (garcia@osl.iu.edu)
-// Andrew Lumsdaine, Indiana University (lums@osl.iu.edu).
-
-// Distributed under the Boost Software License, Version 1.0.
-// (See http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_FILESYSTEM_UTF8_CODECVT_FACET_HPP
-#define BOOST_FILESYSTEM_UTF8_CODECVT_FACET_HPP
-
-#include <boost/filesystem/config.hpp>
-
-#define BOOST_UTF8_BEGIN_NAMESPACE \
- namespace boost { namespace filesystem { namespace detail {
-
-#define BOOST_UTF8_END_NAMESPACE }}}
-#define BOOST_UTF8_DECL BOOST_FILESYSTEM_DECL
-
-#include <boost/detail/utf8_codecvt_facet.hpp>
-
-#undef BOOST_UTF8_BEGIN_NAMESPACE
-#undef BOOST_UTF8_END_NAMESPACE
-#undef BOOST_UTF8_DECL
-
-#endif
diff --git a/3rdParty/Boost/libs/regex/src/c_regex_traits.cpp b/3rdParty/Boost/libs/regex/src/c_regex_traits.cpp
deleted file mode 100644
index da960eb..0000000
--- a/3rdParty/Boost/libs/regex/src/c_regex_traits.cpp
+++ /dev/null
@@ -1,206 +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.cpp
- * VERSION: see <boost/version.hpp>
- * DESCRIPTION: Implements out of line c_regex_traits<char> members
- */
-
-
-#define BOOST_REGEX_SOURCE
-
-#include <boost/config.hpp>
-#include <boost/detail/workaround.hpp>
-
-#if !BOOST_WORKAROUND(__BORLANDC__, < 0x560)
-
-#include <boost/regex/v4/c_regex_traits.hpp>
-#include <boost/regex/v4/primary_transform.hpp>
-#include <boost/regex/v4/regex_traits_defaults.hpp>
-
-#ifdef BOOST_NO_STDC_NAMESPACE
-namespace std{
- using ::strxfrm; using ::isspace;
- using ::ispunct; using ::isalpha;
- using ::isalnum; using ::iscntrl;
- using ::isprint; using ::isupper;
- using ::islower; using ::isdigit;
- using ::isxdigit; using ::strtol;
-}
-#endif
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace boost{
-
-c_regex_traits<char>::string_type BOOST_REGEX_CALL c_regex_traits<char>::transform(const char* p1, const char* p2)
-{
- std::string result(10, ' ');
- std::size_t s = result.size();
- std::size_t r;
- std::string src(p1, p2);
- while(s < (r = std::strxfrm(&*result.begin(), src.c_str(), s)))
- {
- result.append(r - s + 3, ' ');
- s = result.size();
- }
- result.erase(r);
- return result;
-}
-
-c_regex_traits<char>::string_type BOOST_REGEX_CALL c_regex_traits<char>::transform_primary(const char* p1, const char* p2)
-{
- static char s_delim;
- static const int s_collate_type = ::boost::re_detail::find_sort_syntax(static_cast<c_regex_traits<char>*>(0), &s_delim);
- std::string result;
- //
- // What we do here depends upon the format of the sort key returned by
- // sort key returned by this->transform:
- //
- switch(s_collate_type)
- {
- case ::boost::re_detail::sort_C:
- case ::boost::re_detail::sort_unknown:
- // the best we can do is translate to lower case, then get a regular sort key:
- {
- result.assign(p1, p2);
- for(std::string::size_type i = 0; i < result.size(); ++i)
- result[i] = static_cast<char>((std::tolower)(static_cast<unsigned char>(result[i])));
- result = transform(&*result.begin(), &*result.begin() + result.size());
- break;
- }
- case ::boost::re_detail::sort_fixed:
- {
- // get a regular sort key, and then truncate it:
- result = transform(p1, p2);
- result.erase(s_delim);
- break;
- }
- case ::boost::re_detail::sort_delim:
- // get a regular sort key, and then truncate everything after the delim:
- result = transform(p1, p2);
- if(result.size() && (result[0] == s_delim))
- break;
- std::size_t i;
- for(i = 0; i < result.size(); ++i)
- {
- if(result[i] == s_delim)
- break;
- }
- result.erase(i);
- break;
- }
- if(result.empty())
- result = std::string(1, char(0));
- return result;
-}
-
-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
-};
-
-c_regex_traits<char>::char_class_type BOOST_REGEX_CALL c_regex_traits<char>::lookup_classname(const char* p1, const char* p2)
-{
- static const char_class_type masks[] =
- {
- 0,
- char_class_alnum,
- char_class_alpha,
- char_class_blank,
- char_class_cntrl,
- char_class_digit,
- char_class_digit,
- char_class_graph,
- char_class_lower,
- char_class_lower,
- char_class_print,
- char_class_punct,
- char_class_space,
- char_class_space,
- char_class_upper,
- char_class_unicode,
- char_class_upper,
- char_class_alnum | char_class_word,
- char_class_alnum | char_class_word,
- char_class_xdigit,
- };
-
- int id = ::boost::re_detail::get_default_class_id(p1, p2);
- if(id < 0)
- {
- std::string s(p1, p2);
- for(std::string::size_type i = 0; i < s.size(); ++i)
- s[i] = static_cast<char>((std::tolower)(static_cast<unsigned char>(s[i])));
- id = ::boost::re_detail::get_default_class_id(&*s.begin(), &*s.begin() + s.size());
- }
- BOOST_ASSERT(std::size_t(id+1) < sizeof(masks) / sizeof(masks[0]));
- return masks[id+1];
-}
-
-bool BOOST_REGEX_CALL c_regex_traits<char>::isctype(char c, char_class_type mask)
-{
- return
- ((mask & char_class_space) && (std::isspace)(static_cast<unsigned char>(c)))
- || ((mask & char_class_print) && (std::isprint)(static_cast<unsigned char>(c)))
- || ((mask & char_class_cntrl) && (std::iscntrl)(static_cast<unsigned char>(c)))
- || ((mask & char_class_upper) && (std::isupper)(static_cast<unsigned char>(c)))
- || ((mask & char_class_lower) && (std::islower)(static_cast<unsigned char>(c)))
- || ((mask & char_class_alpha) && (std::isalpha)(static_cast<unsigned char>(c)))
- || ((mask & char_class_digit) && (std::isdigit)(static_cast<unsigned char>(c)))
- || ((mask & char_class_punct) && (std::ispunct)(static_cast<unsigned char>(c)))
- || ((mask & char_class_xdigit) && (std::isxdigit)(static_cast<unsigned char>(c)))
- || ((mask & char_class_blank) && (std::isspace)(static_cast<unsigned char>(c)) && !::boost::re_detail::is_separator(c))
- || ((mask & char_class_word) && (c == '_'));
-}
-
-c_regex_traits<char>::string_type BOOST_REGEX_CALL c_regex_traits<char>::lookup_collatename(const char* p1, const char* p2)
-{
- std::string s(p1, p2);
- s = ::boost::re_detail::lookup_default_collate_name(s);
- if(s.empty() && (p2-p1 == 1))
- s.append(1, *p1);
- return s;
-}
-
-int BOOST_REGEX_CALL c_regex_traits<char>::value(char c, int radix)
-{
- char b[2] = { c, '\0', };
- char* ep;
- int result = std::strtol(b, &ep, radix);
- if(ep == b)
- return -1;
- return result;
-}
-
-}
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif
diff --git a/3rdParty/Boost/libs/regex/src/cpp_regex_traits.cpp b/3rdParty/Boost/libs/regex/src/cpp_regex_traits.cpp
deleted file mode 100644
index 9ed66be..0000000
--- a/3rdParty/Boost/libs/regex/src/cpp_regex_traits.cpp
+++ /dev/null
@@ -1,117 +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.cpp
- * VERSION see <boost/version.hpp>
- * DESCRIPTION: Implements cpp_regex_traits<char> (and associated helper classes).
- */
-
-#define BOOST_REGEX_SOURCE
-#include <boost/config.hpp>
-#ifndef BOOST_NO_STD_LOCALE
-#include <boost/regex/regex_traits.hpp>
-#include <boost/regex/pattern_except.hpp>
-
-#ifdef BOOST_NO_STDC_NAMESPACE
-namespace std{
- using ::memset;
-}
-#endif
-
-namespace boost{ namespace re_detail{
-
-void cpp_regex_traits_char_layer<char>::init()
-{
- // we need to start by initialising our syntax map so we know which
- // character is used for which purpose:
- std::memset(m_char_map, 0, sizeof(m_char_map));
-#ifndef BOOST_NO_STD_MESSAGES
-#ifndef __IBMCPP__
- std::messages<char>::catalog cat = static_cast<std::messages<char>::catalog>(-1);
-#else
- std::messages<char>::catalog cat = reinterpret_cast<std::messages<char>::catalog>(-1);
-#endif
- std::string cat_name(cpp_regex_traits<char>::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_syntax(i));
- for(string_type::size_type j = 0; j < mss.size(); ++j)
- {
- m_char_map[static_cast<unsigned char>(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 j = 1; j < regex_constants::syntax_max; ++j)
- {
- const char* ptr = get_default_syntax(j);
- while(ptr && *ptr)
- {
- m_char_map[static_cast<unsigned char>(*ptr)] = j;
- ++ptr;
- }
- }
-#ifndef BOOST_NO_STD_MESSAGES
- }
-#endif
- //
- // finish off by calculating our escape types:
- //
- unsigned char i = 'A';
- do
- {
- if(m_char_map[i] == 0)
- {
- if(this->m_pctype->is(std::ctype_base::lower, i))
- m_char_map[i] = regex_constants::escape_type_class;
- else if(this->m_pctype->is(std::ctype_base::upper, i))
- m_char_map[i] = regex_constants::escape_type_not_class;
- }
- }while(0xFF != i++);
-}
-
-} // re_detail
-} // boost
-#endif
-
diff --git a/3rdParty/Boost/libs/regex/src/cregex.cpp b/3rdParty/Boost/libs/regex/src/cregex.cpp
deleted file mode 100644
index fb12373..0000000
--- a/3rdParty/Boost/libs/regex/src/cregex.cpp
+++ /dev/null
@@ -1,648 +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: Implements high level class boost::RexEx
- */
-
-
-#define BOOST_REGEX_SOURCE
-
-#include <boost/regex.hpp>
-#include <boost/cregex.hpp>
-#if !defined(BOOST_NO_STD_STRING)
-#include <map>
-#include <list>
-#include <boost/regex/v4/fileiter.hpp>
-typedef boost::match_flag_type match_flag_type;
-#include <cstdio>
-
-#ifdef BOOST_MSVC
-#pragma warning(disable:4309)
-#endif
-
-namespace boost{
-
-#ifdef __BORLANDC__
-#if __BORLANDC__ < 0x530
-//
-// we need to instantiate the vector classes we use
-// since declaring a reference to type doesn't seem to
-// do the job...
-std::vector<std::size_t> inst1;
-std::vector<std::string> inst2;
-#endif
-#endif
-
-namespace{
-
-template <class iterator>
-std::string to_string(iterator i, iterator j)
-{
- std::string s;
- while(i != j)
- {
- s.append(1, *i);
- ++i;
- }
- return s;
-}
-
-inline std::string to_string(const char* i, const char* j)
-{
- return std::string(i, j);
-}
-
-}
-namespace re_detail{
-
-class RegExData
-{
-public:
- enum type
- {
- type_pc,
- type_pf,
- type_copy
- };
- regex e;
- cmatch m;
-#ifndef BOOST_REGEX_NO_FILEITER
- match_results<mapfile::iterator> fm;
-#endif
- type t;
- const char* pbase;
-#ifndef BOOST_REGEX_NO_FILEITER
- mapfile::iterator fbase;
-#endif
- std::map<int, std::string, std::less<int> > strings;
- std::map<int, std::ptrdiff_t, std::less<int> > positions;
- void update();
- void clean();
- RegExData() : e(), m(),
-#ifndef BOOST_REGEX_NO_FILEITER
- fm(),
-#endif
- t(type_copy), pbase(0),
-#ifndef BOOST_REGEX_NO_FILEITER
- fbase(),
-#endif
- strings(), positions() {}
-};
-
-void RegExData::update()
-{
- strings.erase(strings.begin(), strings.end());
- positions.erase(positions.begin(), positions.end());
- if(t == type_pc)
- {
- for(unsigned int i = 0; i < m.size(); ++i)
- {
- if(m[i].matched) strings[i] = std::string(m[i].first, m[i].second);
- positions[i] = m[i].matched ? m[i].first - pbase : -1;
- }
- }
-#ifndef BOOST_REGEX_NO_FILEITER
- else
- {
- for(unsigned int i = 0; i < fm.size(); ++i)
- {
- if(fm[i].matched) strings[i] = to_string(fm[i].first, fm[i].second);
- positions[i] = fm[i].matched ? fm[i].first - fbase : -1;
- }
- }
-#endif
- t = type_copy;
-}
-
-void RegExData::clean()
-{
-#ifndef BOOST_REGEX_NO_FILEITER
- fbase = mapfile::iterator();
- fm = match_results<mapfile::iterator>();
-#endif
-}
-
-} // namespace
-
-RegEx::RegEx()
-{
- pdata = new re_detail::RegExData();
-}
-
-RegEx::RegEx(const RegEx& o)
-{
- pdata = new re_detail::RegExData(*(o.pdata));
-}
-
-RegEx::~RegEx()
-{
- delete pdata;
-}
-
-RegEx::RegEx(const char* c, bool icase)
-{
- pdata = new re_detail::RegExData();
- SetExpression(c, icase);
-}
-
-RegEx::RegEx(const std::string& s, bool icase)
-{
- pdata = new re_detail::RegExData();
- SetExpression(s.c_str(), icase);
-}
-
-RegEx& RegEx::operator=(const RegEx& o)
-{
- *pdata = *(o.pdata);
- return *this;
-}
-
-RegEx& RegEx::operator=(const char* p)
-{
- SetExpression(p, false);
- return *this;
-}
-
-unsigned int RegEx::SetExpression(const char* p, bool icase)
-{
- boost::uint_fast32_t f = icase ? regex::normal | regex::icase : regex::normal;
- return pdata->e.set_expression(p, f);
-}
-
-unsigned int RegEx::error_code()const
-{
- return pdata->e.error_code();
-}
-
-
-std::string RegEx::Expression()const
-{
- return pdata->e.expression();
-}
-
-//
-// now matching operators:
-//
-bool RegEx::Match(const char* p, match_flag_type flags)
-{
- pdata->t = re_detail::RegExData::type_pc;
- pdata->pbase = p;
- const char* end = p;
- while(*end)++end;
-
- if(regex_match(p, end, pdata->m, pdata->e, flags))
- {
- pdata->update();
- return true;
- }
- return false;
-}
-
-bool RegEx::Search(const char* p, match_flag_type flags)
-{
- pdata->t = re_detail::RegExData::type_pc;
- pdata->pbase = p;
- const char* end = p;
- while(*end)++end;
-
- if(regex_search(p, end, pdata->m, pdata->e, flags))
- {
- pdata->update();
- return true;
- }
- return false;
-}
-namespace re_detail{
-struct pred1
-{
- GrepCallback cb;
- RegEx* pe;
- pred1(GrepCallback c, RegEx* i) : cb(c), pe(i) {}
- bool operator()(const cmatch& m)
- {
- pe->pdata->m = m;
- return cb(*pe);
- }
-};
-}
-unsigned int RegEx::Grep(GrepCallback cb, const char* p, match_flag_type flags)
-{
- pdata->t = re_detail::RegExData::type_pc;
- pdata->pbase = p;
- const char* end = p;
- while(*end)++end;
-
- unsigned int result = regex_grep(re_detail::pred1(cb, this), p, end, pdata->e, flags);
- if(result)
- pdata->update();
- return result;
-}
-namespace re_detail{
-struct pred2
-{
- std::vector<std::string>& v;
- RegEx* pe;
- pred2(std::vector<std::string>& o, RegEx* e) : v(o), pe(e) {}
- bool operator()(const cmatch& m)
- {
- pe->pdata->m = m;
- v.push_back(std::string(m[0].first, m[0].second));
- return true;
- }
-private:
- pred2& operator=(const pred2&);
-};
-}
-
-unsigned int RegEx::Grep(std::vector<std::string>& v, const char* p, match_flag_type flags)
-{
- pdata->t = re_detail::RegExData::type_pc;
- pdata->pbase = p;
- const char* end = p;
- while(*end)++end;
-
- unsigned int result = regex_grep(re_detail::pred2(v, this), p, end, pdata->e, flags);
- if(result)
- pdata->update();
- return result;
-}
-namespace re_detail{
-struct pred3
-{
- std::vector<std::size_t>& v;
- const char* base;
- RegEx* pe;
- pred3(std::vector<std::size_t>& o, const char* pb, RegEx* p) : v(o), base(pb), pe(p) {}
- bool operator()(const cmatch& m)
- {
- pe->pdata->m = m;
- v.push_back(static_cast<std::size_t>(m[0].first - base));
- return true;
- }
-private:
- pred3& operator=(const pred3&);
-};
-}
-unsigned int RegEx::Grep(std::vector<std::size_t>& v, const char* p, match_flag_type flags)
-{
- pdata->t = re_detail::RegExData::type_pc;
- pdata->pbase = p;
- const char* end = p;
- while(*end)++end;
-
- unsigned int result = regex_grep(re_detail::pred3(v, p, this), p, end, pdata->e, flags);
- if(result)
- pdata->update();
- return result;
-}
-#ifndef BOOST_REGEX_NO_FILEITER
-namespace re_detail{
-struct pred4
-{
- GrepFileCallback cb;
- RegEx* pe;
- const char* file;
- bool ok;
- pred4(GrepFileCallback c, RegEx* i, const char* f) : cb(c), pe(i), file(f), ok(true) {}
- bool operator()(const match_results<mapfile::iterator>& m)
- {
- pe->pdata->t = RegExData::type_pf;
- pe->pdata->fm = m;
- pe->pdata->update();
- ok = cb(file, *pe);
- return ok;
- }
-};
-}
-namespace{
-void BuildFileList(std::list<std::string>* pl, const char* files, bool recurse)
-{
- file_iterator start(files);
- file_iterator end;
- if(recurse)
- {
- // go through sub directories:
- char buf[MAX_PATH];
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(buf, MAX_PATH, start.root()));
- if(*buf == 0)
- {
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(buf, MAX_PATH, "."));
- re_detail::overflow_error_if_not_zero(re_detail::strcat_s(buf, MAX_PATH, directory_iterator::separator()));
- re_detail::overflow_error_if_not_zero(re_detail::strcat_s(buf, MAX_PATH, "*"));
- }
- else
- {
- re_detail::overflow_error_if_not_zero(re_detail::strcat_s(buf, MAX_PATH, directory_iterator::separator()));
- re_detail::overflow_error_if_not_zero(re_detail::strcat_s(buf, MAX_PATH, "*"));
- }
- directory_iterator dstart(buf);
- directory_iterator dend;
-
- // now get the file mask bit of "files":
- const char* ptr = files;
- while(*ptr) ++ptr;
- while((ptr != files) && (*ptr != *directory_iterator::separator()) && (*ptr != '/'))--ptr;
- if(ptr != files) ++ptr;
-
- while(dstart != dend)
- {
-#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) && !defined(_WIN32_WCE) && !defined(UNDER_CE)
- (::sprintf_s)(buf, sizeof(buf), "%s%s%s", dstart.path(), directory_iterator::separator(), ptr);
-#else
- (std::sprintf)(buf, "%s%s%s", dstart.path(), directory_iterator::separator(), ptr);
-#endif
- BuildFileList(pl, buf, recurse);
- ++dstart;
- }
- }
- while(start != end)
- {
- pl->push_back(*start);
- ++start;
- }
-}
-}
-
-unsigned int RegEx::GrepFiles(GrepFileCallback cb, const char* files, bool recurse, match_flag_type flags)
-{
- unsigned int result = 0;
- std::list<std::string> file_list;
- BuildFileList(&file_list, files, recurse);
- std::list<std::string>::iterator start, end;
- start = file_list.begin();
- end = file_list.end();
-
- while(start != end)
- {
- mapfile map((*start).c_str());
- pdata->t = re_detail::RegExData::type_pf;
- pdata->fbase = map.begin();
- re_detail::pred4 pred(cb, this, (*start).c_str());
- int r = regex_grep(pred, map.begin(), map.end(), pdata->e, flags);
- result += r;
- ++start;
- pdata->clean();
- if(pred.ok == false)
- return result;
- }
-
- return result;
-}
-
-
-unsigned int RegEx::FindFiles(FindFilesCallback cb, const char* files, bool recurse, match_flag_type flags)
-{
- unsigned int result = 0;
- std::list<std::string> file_list;
- BuildFileList(&file_list, files, recurse);
- std::list<std::string>::iterator start, end;
- start = file_list.begin();
- end = file_list.end();
-
- while(start != end)
- {
- mapfile map((*start).c_str());
- pdata->t = re_detail::RegExData::type_pf;
- pdata->fbase = map.begin();
-
- if(regex_search(map.begin(), map.end(), pdata->fm, pdata->e, flags))
- {
- ++result;
- if(false == cb((*start).c_str()))
- return result;
- }
- //pdata->update();
- ++start;
- //pdata->clean();
- }
-
- return result;
-}
-#endif
-
-#ifdef BOOST_REGEX_V3
-#define regex_replace regex_merge
-#endif
-
-std::string RegEx::Merge(const std::string& in, const std::string& fmt,
- bool copy, match_flag_type flags)
-{
- std::string result;
- re_detail::string_out_iterator<std::string> i(result);
- if(!copy) flags |= format_no_copy;
- regex_replace(i, in.begin(), in.end(), pdata->e, fmt.c_str(), flags);
- return result;
-}
-
-std::string RegEx::Merge(const char* in, const char* fmt,
- bool copy, match_flag_type flags)
-{
- std::string result;
- if(!copy) flags |= format_no_copy;
- re_detail::string_out_iterator<std::string> i(result);
- regex_replace(i, in, in + std::strlen(in), pdata->e, fmt, flags);
- return result;
-}
-
-std::size_t RegEx::Split(std::vector<std::string>& v,
- std::string& s,
- match_flag_type flags,
- unsigned max_count)
-{
- return regex_split(std::back_inserter(v), s, pdata->e, flags, max_count);
-}
-
-
-
-//
-// now operators for returning what matched in more detail:
-//
-std::size_t RegEx::Position(int i)const
-{
- switch(pdata->t)
- {
- case re_detail::RegExData::type_pc:
- return pdata->m[i].matched ? pdata->m[i].first - pdata->pbase : RegEx::npos;
-#ifndef BOOST_REGEX_NO_FILEITER
- case re_detail::RegExData::type_pf:
- return pdata->fm[i].matched ? pdata->fm[i].first - pdata->fbase : RegEx::npos;
-#endif
- case re_detail::RegExData::type_copy:
- {
- std::map<int, std::ptrdiff_t, std::less<int> >::iterator pos = pdata->positions.find(i);
- if(pos == pdata->positions.end())
- return RegEx::npos;
- return (*pos).second;
- }
- }
- return RegEx::npos;
-}
-
-std::size_t RegEx::Marks()const
-{
- return pdata->e.mark_count();
-}
-
-
-std::size_t RegEx::Length(int i)const
-{
- switch(pdata->t)
- {
- case re_detail::RegExData::type_pc:
- return pdata->m[i].matched ? pdata->m[i].second - pdata->m[i].first : RegEx::npos;
-#ifndef BOOST_REGEX_NO_FILEITER
- case re_detail::RegExData::type_pf:
- return pdata->fm[i].matched ? pdata->fm[i].second - pdata->fm[i].first : RegEx::npos;
-#endif
- case re_detail::RegExData::type_copy:
- {
- std::map<int, std::string, std::less<int> >::iterator pos = pdata->strings.find(i);
- if(pos == pdata->strings.end())
- return RegEx::npos;
- return (*pos).second.size();
- }
- }
- return RegEx::npos;
-}
-
-bool RegEx::Matched(int i)const
-{
- switch(pdata->t)
- {
- case re_detail::RegExData::type_pc:
- return pdata->m[i].matched;
-#ifndef BOOST_REGEX_NO_FILEITER
- case re_detail::RegExData::type_pf:
- return pdata->fm[i].matched;
-#endif
- case re_detail::RegExData::type_copy:
- {
- std::map<int, std::string, std::less<int> >::iterator pos = pdata->strings.find(i);
- if(pos == pdata->strings.end())
- return false;
- return true;
- }
- }
- return false;
-}
-
-
-std::string RegEx::What(int i)const
-{
- std::string result;
- switch(pdata->t)
- {
- case re_detail::RegExData::type_pc:
- if(pdata->m[i].matched)
- result.assign(pdata->m[i].first, pdata->m[i].second);
- break;
- case re_detail::RegExData::type_pf:
- if(pdata->m[i].matched)
- result.assign(to_string(pdata->m[i].first, pdata->m[i].second));
- break;
- case re_detail::RegExData::type_copy:
- {
- std::map<int, std::string, std::less<int> >::iterator pos = pdata->strings.find(i);
- if(pos != pdata->strings.end())
- result = (*pos).second;
- break;
- }
- }
- return result;
-}
-
-#ifdef BOOST_HAS_LONG_LONG
-const std::size_t RegEx::npos = static_cast<std::size_t>(~0ULL);
-#else
-const std::size_t RegEx::npos = static_cast<std::size_t>(~0UL);
-#endif
-
-} // namespace boost
-
-#if defined(__BORLANDC__) && (__BORLANDC__ >= 0x550) && (__BORLANDC__ <= 0x551) && !defined(_RWSTD_COMPILE_INSTANTIATE)
-//
-// this is an ugly hack to work around an ugly problem:
-// by default this file will produce unresolved externals during
-// linking unless _RWSTD_COMPILE_INSTANTIATE is defined (Borland bug).
-// However if _RWSTD_COMPILE_INSTANTIATE is defined then we get separate
-// copies of basic_string's static data in the RTL and this DLL, this messes
-// with basic_string's memory management and results in run-time crashes,
-// Oh sweet joy of Catch 22....
-//
-namespace std{
-template<> template<>
-basic_string<char>& BOOST_REGEX_DECL
-basic_string<char>::replace<const char*>(char* f1, char* f2, const char* i1, const char* i2)
-{
- unsigned insert_pos = f1 - begin();
- unsigned remove_len = f2 - f1;
- unsigned insert_len = i2 - i1;
- unsigned org_size = size();
- if(insert_len > remove_len)
- {
- append(insert_len-remove_len, ' ');
- std::copy_backward(begin() + insert_pos + remove_len, begin() + org_size, end());
- std::copy(i1, i2, begin() + insert_pos);
- }
- else
- {
- std::copy(begin() + insert_pos + remove_len, begin() + org_size, begin() + insert_pos + insert_len);
- std::copy(i1, i2, begin() + insert_pos);
- erase(size() + insert_len - remove_len);
- }
- return *this;
-}
-template<> template<>
-basic_string<wchar_t>& BOOST_REGEX_DECL
-basic_string<wchar_t>::replace<const wchar_t*>(wchar_t* f1, wchar_t* f2, const wchar_t* i1, const wchar_t* i2)
-{
- unsigned insert_pos = f1 - begin();
- unsigned remove_len = f2 - f1;
- unsigned insert_len = i2 - i1;
- unsigned org_size = size();
- if(insert_len > remove_len)
- {
- append(insert_len-remove_len, ' ');
- std::copy_backward(begin() + insert_pos + remove_len, begin() + org_size, end());
- std::copy(i1, i2, begin() + insert_pos);
- }
- else
- {
- std::copy(begin() + insert_pos + remove_len, begin() + org_size, begin() + insert_pos + insert_len);
- std::copy(i1, i2, begin() + insert_pos);
- erase(size() + insert_len - remove_len);
- }
- return *this;
-}
-} // namespace std
-#endif
-
-#endif
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/3rdParty/Boost/libs/regex/src/fileiter.cpp b/3rdParty/Boost/libs/regex/src/fileiter.cpp
deleted file mode 100644
index 7d9c7f8..0000000
--- a/3rdParty/Boost/libs/regex/src/fileiter.cpp
+++ /dev/null
@@ -1,908 +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.cpp
- * VERSION: see <boost/version.hpp>
- * DESCRIPTION: Implements file io primitives + directory searching for class boost::RegEx.
- */
-
-
-#define BOOST_REGEX_SOURCE
-
-#include <climits>
-#include <stdexcept>
-#include <string>
-#include <boost/throw_exception.hpp>
-#include <boost/regex/v4/fileiter.hpp>
-#include <boost/regex/v4/regex_workaround.hpp>
-#include <boost/regex/pattern_except.hpp>
-
-#include <cstdio>
-#if defined(BOOST_NO_STDC_NAMESPACE)
-namespace std{
- using ::sprintf;
- using ::fseek;
- using ::fread;
- using ::ftell;
- using ::fopen;
- using ::fclose;
- using ::FILE;
- using ::strcpy;
- using ::strcpy;
- using ::strcat;
- using ::strcmp;
- using ::strlen;
-}
-#endif
-
-
-#ifndef BOOST_REGEX_NO_FILEITER
-
-#if defined(__CYGWIN__) || defined(__CYGWIN32__)
-#include <sys/cygwin.h>
-#endif
-
-#ifdef BOOST_MSVC
-# pragma warning(disable: 4800)
-#endif
-
-namespace boost{
- namespace re_detail{
-// start with the operating system specific stuff:
-
-#if (defined(__BORLANDC__) || defined(BOOST_REGEX_FI_WIN32_DIR) || defined(BOOST_MSVC)) && !defined(BOOST_RE_NO_WIN32)
-
-// platform is DOS or Windows
-// directories are separated with '\\'
-// and names are insensitive of case
-
-BOOST_REGEX_DECL const char* _fi_sep = "\\";
-const char* _fi_sep_alt = "/";
-#define BOOST_REGEX_FI_TRANSLATE(c) std::tolower(c)
-
-#else
-
-// platform is not DOS or Windows
-// directories are separated with '/'
-// and names are sensitive of case
-
-BOOST_REGEX_DECL const char* _fi_sep = "/";
-const char* _fi_sep_alt = _fi_sep;
-#define BOOST_REGEX_FI_TRANSLATE(c) c
-
-#endif
-
-#ifdef BOOST_REGEX_FI_WIN32_MAP
-
-void mapfile::open(const char* file)
-{
-#if defined(BOOST_NO_ANSI_APIS)
- int filename_size = strlen(file);
- LPWSTR wide_file = (LPWSTR)_alloca( (filename_size + 1) * sizeof(WCHAR) );
- if(::MultiByteToWideChar(CP_ACP, 0, file, filename_size, wide_file, filename_size + 1) == 0)
- hfile = INVALID_HANDLE_VALUE;
- else
- hfile = CreateFileW(wide_file, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
-#elif defined(__CYGWIN__)||defined(__CYGWIN32__)
- char win32file[ MAX_PATH ];
- cygwin_conv_to_win32_path( file, win32file );
- hfile = CreateFileA(win32file, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
-#else
- hfile = CreateFileA(file, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
-#endif
- if(hfile != INVALID_HANDLE_VALUE)
- {
- hmap = CreateFileMapping(hfile, 0, PAGE_READONLY, 0, 0, 0);
- if((hmap == INVALID_HANDLE_VALUE) || (hmap == NULL))
- {
- CloseHandle(hfile);
- hmap = 0;
- hfile = 0;
- std::runtime_error err("Unable to create file mapping.");
- boost::re_detail::raise_runtime_error(err);
- }
- _first = static_cast<const char*>(MapViewOfFile(hmap, FILE_MAP_READ, 0, 0, 0));
- if(_first == 0)
- {
- CloseHandle(hmap);
- CloseHandle(hfile);
- hmap = 0;
- hfile = 0;
- std::runtime_error err("Unable to create file mapping.");
- }
- _last = _first + GetFileSize(hfile, 0);
- }
- else
- {
- hfile = 0;
-#ifndef BOOST_NO_EXCEPTIONS
- throw std::runtime_error("Unable to open file.");
-#else
- BOOST_REGEX_NOEH_ASSERT(hfile != INVALID_HANDLE_VALUE);
-#endif
- }
-}
-
-void mapfile::close()
-{
- if(hfile != INVALID_HANDLE_VALUE)
- {
- UnmapViewOfFile((void*)_first);
- CloseHandle(hmap);
- CloseHandle(hfile);
- hmap = hfile = 0;
- _first = _last = 0;
- }
-}
-
-#elif !defined(BOOST_RE_NO_STL)
-
-mapfile_iterator& mapfile_iterator::operator = (const mapfile_iterator& i)
-{
- if(file && node)
- file->unlock(node);
- file = i.file;
- node = i.node;
- offset = i.offset;
- if(file)
- file->lock(node);
- return *this;
-}
-
-mapfile_iterator& mapfile_iterator::operator++ ()
-{
- if((++offset == mapfile::buf_size) && file)
- {
- ++node;
- offset = 0;
- file->lock(node);
- file->unlock(node-1);
- }
- return *this;
-}
-
-mapfile_iterator mapfile_iterator::operator++ (int)
-{
- mapfile_iterator temp(*this);
- if((++offset == mapfile::buf_size) && file)
- {
- ++node;
- offset = 0;
- file->lock(node);
- file->unlock(node-1);
- }
- return temp;
-}
-
-mapfile_iterator& mapfile_iterator::operator-- ()
-{
- if((offset == 0) && file)
- {
- --node;
- offset = mapfile::buf_size - 1;
- file->lock(node);
- file->unlock(node + 1);
- }
- else
- --offset;
- return *this;
-}
-
-mapfile_iterator mapfile_iterator::operator-- (int)
-{
- mapfile_iterator temp(*this);
- if((offset == 0) && file)
- {
- --node;
- offset = mapfile::buf_size - 1;
- file->lock(node);
- file->unlock(node + 1);
- }
- else
- --offset;
- return temp;
-}
-
-mapfile_iterator operator + (const mapfile_iterator& i, long off)
-{
- mapfile_iterator temp(i);
- temp += off;
- return temp;
-}
-
-mapfile_iterator operator - (const mapfile_iterator& i, long off)
-{
- mapfile_iterator temp(i);
- temp -= off;
- return temp;
-}
-
-mapfile::iterator mapfile::begin()const
-{
- return mapfile_iterator(this, 0);
-}
-
-mapfile::iterator mapfile::end()const
-{
- return mapfile_iterator(this, _size);
-}
-
-void mapfile::lock(pointer* node)const
-{
- BOOST_ASSERT(node >= _first);
- BOOST_ASSERT(node <= _last);
- if(node < _last)
- {
- if(*node == 0)
- {
- if(condemed.empty())
- {
- *node = new char[sizeof(int) + buf_size];
- *(reinterpret_cast<int*>(*node)) = 1;
- }
- else
- {
- pointer* p = condemed.front();
- condemed.pop_front();
- *node = *p;
- *p = 0;
- *(reinterpret_cast<int*>(*node)) = 1;
- }
- std::fseek(hfile, (node - _first) * buf_size, SEEK_SET);
- if(node == _last - 1)
- std::fread(*node + sizeof(int), _size % buf_size, 1, hfile);
- else
- std::fread(*node + sizeof(int), buf_size, 1, hfile);
- }
- else
- {
- if(*reinterpret_cast<int*>(*node) == 0)
- {
- *reinterpret_cast<int*>(*node) = 1;
- condemed.remove(node);
- }
- else
- ++(*reinterpret_cast<int*>(*node));
- }
- }
-}
-
-void mapfile::unlock(pointer* node)const
-{
- BOOST_ASSERT(node >= _first);
- BOOST_ASSERT(node <= _last);
- if(node < _last)
- {
- if(--(*reinterpret_cast<int*>(*node)) == 0)
- {
- condemed.push_back(node);
- }
- }
-}
-
-long int get_file_length(std::FILE* hfile)
-{
- long int result;
- std::fseek(hfile, 0, SEEK_END);
- result = std::ftell(hfile);
- std::fseek(hfile, 0, SEEK_SET);
- return result;
-}
-
-
-void mapfile::open(const char* file)
-{
- hfile = std::fopen(file, "rb");
-#ifndef BOOST_NO_EXCEPTIONS
- try{
-#endif
- if(hfile != 0)
- {
- _size = get_file_length(hfile);
- long cnodes = (_size + buf_size - 1) / buf_size;
-
- // check that number of nodes is not too high:
- if(cnodes > (long)((INT_MAX) / sizeof(pointer*)))
- {
- std::fclose(hfile);
- hfile = 0;
- _size = 0;
- return;
- }
-
- _first = new pointer[(int)cnodes];
- _last = _first + cnodes;
- std::memset(_first, 0, cnodes*sizeof(pointer));
- }
- else
- {
- std::runtime_error err("Unable to open file.");
- }
-#ifndef BOOST_NO_EXCEPTIONS
- }catch(...)
- { close(); throw; }
-#endif
-}
-
-void mapfile::close()
-{
- if(hfile != 0)
- {
- pointer* p = _first;
- while(p != _last)
- {
- if(*p)
- delete[] *p;
- ++p;
- }
- delete[] _first;
- _size = 0;
- _first = _last = 0;
- std::fclose(hfile);
- hfile = 0;
- condemed.erase(condemed.begin(), condemed.end());
- }
-}
-
-
-#endif
-
-inline _fi_find_handle find_first_file(const char* wild, _fi_find_data& data)
-{
-#ifdef BOOST_NO_ANSI_APIS
- std::size_t wild_size = std::strlen(wild);
- LPWSTR wide_wild = (LPWSTR)_alloca( (wild_size + 1) * sizeof(WCHAR) );
- if (::MultiByteToWideChar(CP_ACP, 0, wild, wild_size, wide_wild, wild_size + 1) == 0)
- return _fi_invalid_handle;
-
- return FindFirstFileW(wide_wild, &data);
-#else
- return FindFirstFileA(wild, &data);
-#endif
-}
-
-inline bool find_next_file(_fi_find_handle hf, _fi_find_data& data)
-{
-#ifdef BOOST_NO_ANSI_APIS
- return FindNextFileW(hf, &data);
-#else
- return FindNextFileA(hf, &data);
-#endif
-}
-
-inline void copy_find_file_result_with_overflow_check(const _fi_find_data& data, char* path, size_t max_size)
-{
-#ifdef BOOST_NO_ANSI_APIS
- if (::WideCharToMultiByte(CP_ACP, 0, data.cFileName, -1, path, max_size, NULL, NULL) == 0)
- re_detail::overflow_error_if_not_zero(1);
-#else
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(path, max_size, data.cFileName));
-#endif
-}
-
-inline bool is_not_current_or_parent_path_string(const _fi_find_data& data)
-{
-#ifdef BOOST_NO_ANSI_APIS
- return (std::wcscmp(data.cFileName, L".") && std::wcscmp(data.cFileName, L".."));
-#else
- return (std::strcmp(data.cFileName, ".") && std::strcmp(data.cFileName, ".."));
-#endif
-}
-
-
-file_iterator::file_iterator()
-{
- _root = _path = 0;
- ref = 0;
-#ifndef BOOST_NO_EXCEPTIONS
- try{
-#endif
- _root = new char[MAX_PATH];
- BOOST_REGEX_NOEH_ASSERT(_root)
- _path = new char[MAX_PATH];
- BOOST_REGEX_NOEH_ASSERT(_path)
- ptr = _path;
- *_path = 0;
- *_root = 0;
- ref = new file_iterator_ref();
- BOOST_REGEX_NOEH_ASSERT(ref)
- ref->hf = _fi_invalid_handle;
- ref->count = 1;
-#ifndef BOOST_NO_EXCEPTIONS
- }
- catch(...)
- {
- delete[] _root;
- delete[] _path;
- delete ref;
- throw;
- }
-#endif
-}
-
-file_iterator::file_iterator(const char* wild)
-{
- _root = _path = 0;
- ref = 0;
-#ifndef BOOST_NO_EXCEPTIONS
- try{
-#endif
- _root = new char[MAX_PATH];
- BOOST_REGEX_NOEH_ASSERT(_root)
- _path = new char[MAX_PATH];
- BOOST_REGEX_NOEH_ASSERT(_path)
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_root, MAX_PATH, wild));
- ptr = _root;
- while(*ptr)++ptr;
- while((ptr > _root) && (*ptr != *_fi_sep) && (*ptr != *_fi_sep_alt))--ptr;
- if((ptr == _root) && ( (*ptr== *_fi_sep) || (*ptr==*_fi_sep_alt) ) )
- {
- _root[1]='\0';
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_path, MAX_PATH, _root));
- }
- else
- {
- *ptr = 0;
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_path, MAX_PATH, _root));
- if(*_path == 0)
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_path, MAX_PATH, "."));
- re_detail::overflow_error_if_not_zero(re_detail::strcat_s(_path, MAX_PATH, _fi_sep));
- }
- ptr = _path + std::strlen(_path);
-
- ref = new file_iterator_ref();
- BOOST_REGEX_NOEH_ASSERT(ref)
- ref->hf = find_first_file(wild, ref->_data);
- ref->count = 1;
-
- if(ref->hf == _fi_invalid_handle)
- {
- *_path = 0;
- ptr = _path;
- }
- else
- {
- copy_find_file_result_with_overflow_check(ref->_data, ptr, (MAX_PATH - (ptr - _path)));
- if(ref->_data.dwFileAttributes & _fi_dir)
- next();
- }
-#ifndef BOOST_NO_EXCEPTIONS
- }
- catch(...)
- {
- delete[] _root;
- delete[] _path;
- delete ref;
- throw;
- }
-#endif
-}
-
-file_iterator::file_iterator(const file_iterator& other)
-{
- _root = _path = 0;
- ref = 0;
-#ifndef BOOST_NO_EXCEPTIONS
- try{
-#endif
- _root = new char[MAX_PATH];
- BOOST_REGEX_NOEH_ASSERT(_root)
- _path = new char[MAX_PATH];
- BOOST_REGEX_NOEH_ASSERT(_path)
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_root, MAX_PATH, other._root));
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_path, MAX_PATH, other._path));
- ptr = _path + (other.ptr - other._path);
- ref = other.ref;
-#ifndef BOOST_NO_EXCEPTIONS
- }
- catch(...)
- {
- delete[] _root;
- delete[] _path;
- throw;
- }
-#endif
- ++(ref->count);
-}
-
-file_iterator& file_iterator::operator=(const file_iterator& other)
-{
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_root, MAX_PATH, other._root));
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_path, MAX_PATH, other._path));
- ptr = _path + (other.ptr - other._path);
- if(--(ref->count) == 0)
- {
- if(ref->hf != _fi_invalid_handle)
- FindClose(ref->hf);
- delete ref;
- }
- ref = other.ref;
- ++(ref->count);
- return *this;
-}
-
-
-file_iterator::~file_iterator()
-{
- delete[] _root;
- delete[] _path;
- if(--(ref->count) == 0)
- {
- if(ref->hf != _fi_invalid_handle)
- FindClose(ref->hf);
- delete ref;
- }
-}
-
-file_iterator file_iterator::operator++(int)
-{
- file_iterator temp(*this);
- next();
- return temp;
-}
-
-
-void file_iterator::next()
-{
- if(ref->hf != _fi_invalid_handle)
- {
- bool cont = true;
- while(cont)
- {
- cont = find_next_file(ref->hf, ref->_data);
- if(cont && ((ref->_data.dwFileAttributes & _fi_dir) == 0))
- break;
- }
- if(!cont)
- {
- // end of sequence
- FindClose(ref->hf);
- ref->hf = _fi_invalid_handle;
- *_path = 0;
- ptr = _path;
- }
- else
- copy_find_file_result_with_overflow_check(ref->_data, ptr, MAX_PATH - (ptr - _path));
- }
-}
-
-
-
-directory_iterator::directory_iterator()
-{
- _root = _path = 0;
- ref = 0;
-#ifndef BOOST_NO_EXCEPTIONS
- try{
-#endif
- _root = new char[MAX_PATH];
- BOOST_REGEX_NOEH_ASSERT(_root)
- _path = new char[MAX_PATH];
- BOOST_REGEX_NOEH_ASSERT(_path)
- ptr = _path;
- *_path = 0;
- *_root = 0;
- ref = new file_iterator_ref();
- BOOST_REGEX_NOEH_ASSERT(ref)
- ref->hf = _fi_invalid_handle;
- ref->count = 1;
-#ifndef BOOST_NO_EXCEPTIONS
- }
- catch(...)
- {
- delete[] _root;
- delete[] _path;
- delete ref;
- throw;
- }
-#endif
-}
-
-directory_iterator::directory_iterator(const char* wild)
-{
- _root = _path = 0;
- ref = 0;
-#ifndef BOOST_NO_EXCEPTIONS
- try{
-#endif
- _root = new char[MAX_PATH];
- BOOST_REGEX_NOEH_ASSERT(_root)
- _path = new char[MAX_PATH];
- BOOST_REGEX_NOEH_ASSERT(_path)
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_root, MAX_PATH, wild));
- ptr = _root;
- while(*ptr)++ptr;
- while((ptr > _root) && (*ptr != *_fi_sep) && (*ptr != *_fi_sep_alt))--ptr;
-
- if((ptr == _root) && ( (*ptr== *_fi_sep) || (*ptr==*_fi_sep_alt) ) )
- {
- _root[1]='\0';
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_path, MAX_PATH, _root));
- }
- else
- {
- *ptr = 0;
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_path, MAX_PATH, _root));
- if(*_path == 0)
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_path, MAX_PATH, "."));
- re_detail::overflow_error_if_not_zero(re_detail::strcat_s(_path, MAX_PATH, _fi_sep));
- }
- ptr = _path + std::strlen(_path);
-
- ref = new file_iterator_ref();
- BOOST_REGEX_NOEH_ASSERT(ref)
- ref->count = 1;
- ref->hf = find_first_file(wild, ref->_data);
- if(ref->hf == _fi_invalid_handle)
- {
- *_path = 0;
- ptr = _path;
- }
- else
- {
- copy_find_file_result_with_overflow_check(ref->_data, ptr, MAX_PATH - (ptr - _path));
- if(((ref->_data.dwFileAttributes & _fi_dir) == 0) || (std::strcmp(ptr, ".") == 0) || (std::strcmp(ptr, "..") == 0))
- next();
- }
-#ifndef BOOST_NO_EXCEPTIONS
- }
- catch(...)
- {
- delete[] _root;
- delete[] _path;
- delete ref;
- throw;
- }
-#endif
-}
-
-directory_iterator::~directory_iterator()
-{
- delete[] _root;
- delete[] _path;
- if(--(ref->count) == 0)
- {
- if(ref->hf != _fi_invalid_handle)
- FindClose(ref->hf);
- delete ref;
- }
-}
-
-directory_iterator::directory_iterator(const directory_iterator& other)
-{
- _root = _path = 0;
- ref = 0;
-#ifndef BOOST_NO_EXCEPTIONS
- try{
-#endif
- _root = new char[MAX_PATH];
- BOOST_REGEX_NOEH_ASSERT(_root)
- _path = new char[MAX_PATH];
- BOOST_REGEX_NOEH_ASSERT(_path)
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_root, MAX_PATH, other._root));
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_path, MAX_PATH, other._path));
- ptr = _path + (other.ptr - other._path);
- ref = other.ref;
-#ifndef BOOST_NO_EXCEPTIONS
- }
- catch(...)
- {
- delete[] _root;
- delete[] _path;
- throw;
- }
-#endif
- ++(ref->count);
-}
-
-directory_iterator& directory_iterator::operator=(const directory_iterator& other)
-{
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_root, MAX_PATH, other._root));
- re_detail::overflow_error_if_not_zero(re_detail::strcpy_s(_path, MAX_PATH, other._path));
- ptr = _path + (other.ptr - other._path);
- if(--(ref->count) == 0)
- {
- if(ref->hf != _fi_invalid_handle)
- FindClose(ref->hf);
- delete ref;
- }
- ref = other.ref;
- ++(ref->count);
- return *this;
-}
-
-directory_iterator directory_iterator::operator++(int)
-{
- directory_iterator temp(*this);
- next();
- return temp;
-}
-
-void directory_iterator::next()
-{
- if(ref->hf != _fi_invalid_handle)
- {
- bool cont = true;
- while(cont)
- {
- cont = find_next_file(ref->hf, ref->_data);
- if(cont && (ref->_data.dwFileAttributes & _fi_dir))
- {
- if(is_not_current_or_parent_path_string(ref->_data))
- break;
- }
- }
- if(!cont)
- {
- // end of sequence
- FindClose(ref->hf);
- ref->hf = _fi_invalid_handle;
- *_path = 0;
- ptr = _path;
- }
- else
- copy_find_file_result_with_overflow_check(ref->_data, ptr, MAX_PATH - (ptr - _path));
- }
-}
-
-
-#ifdef BOOST_REGEX_FI_POSIX_DIR
-
-struct _fi_priv_data
-{
- char root[MAX_PATH];
- char* mask;
- DIR* d;
- _fi_priv_data(const char* p);
-};
-
-_fi_priv_data::_fi_priv_data(const char* p)
-{
- std::strcpy(root, p);
- mask = root;
- while(*mask) ++mask;
- while((mask > root) && (*mask != *_fi_sep) && (*mask != *_fi_sep_alt)) --mask;
- if(mask == root && ((*mask== *_fi_sep) || (*mask == *_fi_sep_alt)) )
- {
- root[1] = '\0';
- std::strcpy(root+2, p+1);
- mask = root+2;
- }
- else if(mask == root)
- {
- root[0] = '.';
- root[1] = '\0';
- std::strcpy(root+2, p);
- mask = root+2;
- }
- else
- {
- *mask = 0;
- ++mask;
- }
-}
-
-bool iswild(const char* mask, const char* name)
-{
- while(*mask && *name)
- {
- switch(*mask)
- {
- case '?':
- ++name;
- ++mask;
- continue;
- case '*':
- ++mask;
- if(*mask == 0)
- return true;
- while(*name)
- {
- if(iswild(mask, name))
- return true;
- ++name;
- }
- return false;
- case '.':
- if(0 == *name)
- {
- ++mask;
- continue;
- }
- // fall through:
- default:
- if(BOOST_REGEX_FI_TRANSLATE(*mask) != BOOST_REGEX_FI_TRANSLATE(*name))
- return false;
- ++mask;
- ++name;
- continue;
- }
- }
- if(*mask != *name)
- return false;
- return true;
-}
-
-unsigned _fi_attributes(const char* root, const char* name)
-{
- char buf[MAX_PATH];
- if( ( (root[0] == *_fi_sep) || (root[0] == *_fi_sep_alt) ) && (root[1] == '\0') )
- (std::sprintf)(buf, "%s%s", root, name);
- else
- (std::sprintf)(buf, "%s%s%s", root, _fi_sep, name);
- DIR* d = opendir(buf);
- if(d)
- {
- closedir(d);
- return _fi_dir;
- }
- return 0;
-}
-
-_fi_find_handle _fi_FindFirstFile(const char* lpFileName, _fi_find_data* lpFindFileData)
-{
- _fi_find_handle dat = new _fi_priv_data(lpFileName);
-
- DIR* h = opendir(dat->root);
- dat->d = h;
- if(h != 0)
- {
- if(_fi_FindNextFile(dat, lpFindFileData))
- return dat;
- }
- delete dat;
- return 0;
-}
-
-bool _fi_FindNextFile(_fi_find_handle dat, _fi_find_data* lpFindFileData)
-{
- dirent* d;
- do
- {
- d = readdir(dat->d);
- } while(d && !iswild(dat->mask, d->d_name));
-
- if(d)
- {
- std::strcpy(lpFindFileData->cFileName, d->d_name);
- lpFindFileData->dwFileAttributes = _fi_attributes(dat->root, d->d_name);
- return true;
- }
- return false;
-}
-
-bool _fi_FindClose(_fi_find_handle dat)
-{
- closedir(dat->d);
- delete dat;
- return true;
-}
-
-#endif
-
-} // namespace re_detail
-} // namspace boost
-
-#endif // BOOST_REGEX_NO_FILEITER
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/3rdParty/Boost/libs/regex/src/icu.cpp b/3rdParty/Boost/libs/regex/src/icu.cpp
deleted file mode 100644
index e06c317..0000000
--- a/3rdParty/Boost/libs/regex/src/icu.cpp
+++ /dev/null
@@ -1,495 +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.cpp
- * VERSION see <boost/version.hpp>
- * DESCRIPTION: Unicode regular expressions on top of the ICU Library.
- */
-#define BOOST_REGEX_SOURCE
-
-#include <boost/regex/config.hpp>
-#ifdef BOOST_HAS_ICU
-#define BOOST_REGEX_ICU_INSTANTIATE
-#include <boost/regex/icu.hpp>
-
-namespace boost{
-
-namespace re_detail{
-
-icu_regex_traits_implementation::string_type icu_regex_traits_implementation::do_transform(const char_type* p1, const char_type* p2, const U_NAMESPACE_QUALIFIER Collator* pcoll) const
-{
- // TODO make thread safe!!!! :
- typedef u32_to_u16_iterator<const char_type*, ::UChar> itt;
- itt i(p1), j(p2);
-#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
- std::vector< ::UChar> t(i, j);
-#else
- std::vector< ::UChar> t;
- while(i != j)
- t.push_back(*i++);
-#endif
- ::uint8_t result[100];
- ::int32_t len;
- if(t.size())
- len = pcoll->getSortKey(&*t.begin(), static_cast< ::int32_t>(t.size()), result, sizeof(result));
- else
- len = pcoll->getSortKey(static_cast<UChar const*>(0), static_cast< ::int32_t>(0), result, sizeof(result));
- if(std::size_t(len) > sizeof(result))
- {
- scoped_array< ::uint8_t> presult(new ::uint8_t[len+1]);
- if(t.size())
- len = pcoll->getSortKey(&*t.begin(), static_cast< ::int32_t>(t.size()), presult.get(), len+1);
- else
- len = pcoll->getSortKey(static_cast<UChar const*>(0), static_cast< ::int32_t>(0), presult.get(), len+1);
- if((0 == presult[len-1]) && (len > 1))
- --len;
-#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
- return string_type(presult.get(), presult.get()+len);
-#else
- string_type sresult;
- ::uint8_t const* ia = presult.get();
- ::uint8_t const* ib = presult.get()+len;
- while(ia != ib)
- sresult.push_back(*ia++);
- return sresult;
-#endif
- }
- if((0 == result[len-1]) && (len > 1))
- --len;
-#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
- return string_type(result, result+len);
-#else
- string_type sresult;
- ::uint8_t const* ia = result;
- ::uint8_t const* ib = result+len;
- while(ia != ib)
- sresult.push_back(*ia++);
- return sresult;
-#endif
-}
-
-}
-
-icu_regex_traits::size_type icu_regex_traits::length(const char_type* p)
-{
- size_type result = 0;
- while(*p)
- {
- ++p;
- ++result;
- }
- return result;
-}
-
-//
-// define our bitmasks:
-//
-const icu_regex_traits::char_class_type icu_regex_traits::mask_blank = icu_regex_traits::char_class_type(1) << offset_blank;
-const icu_regex_traits::char_class_type icu_regex_traits::mask_space = icu_regex_traits::char_class_type(1) << offset_space;
-const icu_regex_traits::char_class_type icu_regex_traits::mask_xdigit = icu_regex_traits::char_class_type(1) << offset_xdigit;
-const icu_regex_traits::char_class_type icu_regex_traits::mask_underscore = icu_regex_traits::char_class_type(1) << offset_underscore;
-const icu_regex_traits::char_class_type icu_regex_traits::mask_unicode = icu_regex_traits::char_class_type(1) << offset_unicode;
-const icu_regex_traits::char_class_type icu_regex_traits::mask_any = icu_regex_traits::char_class_type(1) << offset_any;
-const icu_regex_traits::char_class_type icu_regex_traits::mask_ascii = icu_regex_traits::char_class_type(1) << offset_ascii;
-
-icu_regex_traits::char_class_type icu_regex_traits::lookup_icu_mask(const ::UChar32* p1, const ::UChar32* p2)
-{
- static const ::UChar32 prop_name_table[] = {
- /* any */ 'a', 'n', 'y',
- /* ascii */ 'a', 's', 'c', 'i', 'i',
- /* assigned */ 'a', 's', 's', 'i', 'g', 'n', 'e', 'd',
- /* c* */ 'c', '*',
- /* cc */ 'c', 'c',
- /* cf */ 'c', 'f',
- /* closepunctuation */ 'c', 'l', 'o', 's', 'e', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
- /* cn */ 'c', 'n',
- /* co */ 'c', 'o',
- /* connectorpunctuation */ 'c', 'o', 'n', 'n', 'e', 'c', 't', 'o', 'r', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
- /* control */ 'c', 'o', 'n', 't', 'r', 'o', 'l',
- /* cs */ 'c', 's',
- /* currencysymbol */ 'c', 'u', 'r', 'r', 'e', 'n', 'c', 'y', 's', 'y', 'm', 'b', 'o', 'l',
- /* dashpunctuation */ 'd', 'a', 's', 'h', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
- /* decimaldigitnumber */ 'd', 'e', 'c', 'i', 'm', 'a', 'l', 'd', 'i', 'g', 'i', 't', 'n', 'u', 'm', 'b', 'e', 'r',
- /* enclosingmark */ 'e', 'n', 'c', 'l', 'o', 's', 'i', 'n', 'g', 'm', 'a', 'r', 'k',
- /* finalpunctuation */ 'f', 'i', 'n', 'a', 'l', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
- /* format */ 'f', 'o', 'r', 'm', 'a', 't',
- /* initialpunctuation */ 'i', 'n', 'i', 't', 'i', 'a', 'l', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
- /* l* */ 'l', '*',
- /* letter */ 'l', 'e', 't', 't', 'e', 'r',
- /* letternumber */ 'l', 'e', 't', 't', 'e', 'r', 'n', 'u', 'm', 'b', 'e', 'r',
- /* lineseparator */ 'l', 'i', 'n', 'e', 's', 'e', 'p', 'a', 'r', 'a', 't', 'o', 'r',
- /* ll */ 'l', 'l',
- /* lm */ 'l', 'm',
- /* lo */ 'l', 'o',
- /* lowercaseletter */ 'l', 'o', 'w', 'e', 'r', 'c', 'a', 's', 'e', 'l', 'e', 't', 't', 'e', 'r',
- /* lt */ 'l', 't',
- /* lu */ 'l', 'u',
- /* m* */ 'm', '*',
- /* mark */ 'm', 'a', 'r', 'k',
- /* mathsymbol */ 'm', 'a', 't', 'h', 's', 'y', 'm', 'b', 'o', 'l',
- /* mc */ 'm', 'c',
- /* me */ 'm', 'e',
- /* mn */ 'm', 'n',
- /* modifierletter */ 'm', 'o', 'd', 'i', 'f', 'i', 'e', 'r', 'l', 'e', 't', 't', 'e', 'r',
- /* modifiersymbol */ 'm', 'o', 'd', 'i', 'f', 'i', 'e', 'r', 's', 'y', 'm', 'b', 'o', 'l',
- /* n* */ 'n', '*',
- /* nd */ 'n', 'd',
- /* nl */ 'n', 'l',
- /* no */ 'n', 'o',
- /* nonspacingmark */ 'n', 'o', 'n', 's', 'p', 'a', 'c', 'i', 'n', 'g', 'm', 'a', 'r', 'k',
- /* notassigned */ 'n', 'o', 't', 'a', 's', 's', 'i', 'g', 'n', 'e', 'd',
- /* number */ 'n', 'u', 'm', 'b', 'e', 'r',
- /* openpunctuation */ 'o', 'p', 'e', 'n', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
- /* other */ 'o', 't', 'h', 'e', 'r',
- /* otherletter */ 'o', 't', 'h', 'e', 'r', 'l', 'e', 't', 't', 'e', 'r',
- /* othernumber */ 'o', 't', 'h', 'e', 'r', 'n', 'u', 'm', 'b', 'e', 'r',
- /* otherpunctuation */ 'o', 't', 'h', 'e', 'r', 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
- /* othersymbol */ 'o', 't', 'h', 'e', 'r', 's', 'y', 'm', 'b', 'o', 'l',
- /* p* */ 'p', '*',
- /* paragraphseparator */ 'p', 'a', 'r', 'a', 'g', 'r', 'a', 'p', 'h', 's', 'e', 'p', 'a', 'r', 'a', 't', 'o', 'r',
- /* pc */ 'p', 'c',
- /* pd */ 'p', 'd',
- /* pe */ 'p', 'e',
- /* pf */ 'p', 'f',
- /* pi */ 'p', 'i',
- /* po */ 'p', 'o',
- /* privateuse */ 'p', 'r', 'i', 'v', 'a', 't', 'e', 'u', 's', 'e',
- /* ps */ 'p', 's',
- /* punctuation */ 'p', 'u', 'n', 'c', 't', 'u', 'a', 't', 'i', 'o', 'n',
- /* s* */ 's', '*',
- /* sc */ 's', 'c',
- /* separator */ 's', 'e', 'p', 'a', 'r', 'a', 't', 'o', 'r',
- /* sk */ 's', 'k',
- /* sm */ 's', 'm',
- /* so */ 's', 'o',
- /* spaceseparator */ 's', 'p', 'a', 'c', 'e', 's', 'e', 'p', 'a', 'r', 'a', 't', 'o', 'r',
- /* spacingcombiningmark */ 's', 'p', 'a', 'c', 'i', 'n', 'g', 'c', 'o', 'm', 'b', 'i', 'n', 'i', 'n', 'g', 'm', 'a', 'r', 'k',
- /* surrogate */ 's', 'u', 'r', 'r', 'o', 'g', 'a', 't', 'e',
- /* symbol */ 's', 'y', 'm', 'b', 'o', 'l',
- /* titlecase */ 't', 'i', 't', 'l', 'e', 'c', 'a', 's', 'e',
- /* titlecaseletter */ 't', 'i', 't', 'l', 'e', 'c', 'a', 's', 'e', 'l', 'e', 't', 't', 'e', 'r',
- /* uppercaseletter */ 'u', 'p', 'p', 'e', 'r', 'c', 'a', 's', 'e', 'l', 'e', 't', 't', 'e', 'r',
- /* z* */ 'z', '*',
- /* zl */ 'z', 'l',
- /* zp */ 'z', 'p',
- /* zs */ 'z', 's',
- };
-
- static const re_detail::character_pointer_range< ::UChar32> range_data[] = {
- { prop_name_table+0, prop_name_table+3, }, // any
- { prop_name_table+3, prop_name_table+8, }, // ascii
- { prop_name_table+8, prop_name_table+16, }, // assigned
- { prop_name_table+16, prop_name_table+18, }, // c*
- { prop_name_table+18, prop_name_table+20, }, // cc
- { prop_name_table+20, prop_name_table+22, }, // cf
- { prop_name_table+22, prop_name_table+38, }, // closepunctuation
- { prop_name_table+38, prop_name_table+40, }, // cn
- { prop_name_table+40, prop_name_table+42, }, // co
- { prop_name_table+42, prop_name_table+62, }, // connectorpunctuation
- { prop_name_table+62, prop_name_table+69, }, // control
- { prop_name_table+69, prop_name_table+71, }, // cs
- { prop_name_table+71, prop_name_table+85, }, // currencysymbol
- { prop_name_table+85, prop_name_table+100, }, // dashpunctuation
- { prop_name_table+100, prop_name_table+118, }, // decimaldigitnumber
- { prop_name_table+118, prop_name_table+131, }, // enclosingmark
- { prop_name_table+131, prop_name_table+147, }, // finalpunctuation
- { prop_name_table+147, prop_name_table+153, }, // format
- { prop_name_table+153, prop_name_table+171, }, // initialpunctuation
- { prop_name_table+171, prop_name_table+173, }, // l*
- { prop_name_table+173, prop_name_table+179, }, // letter
- { prop_name_table+179, prop_name_table+191, }, // letternumber
- { prop_name_table+191, prop_name_table+204, }, // lineseparator
- { prop_name_table+204, prop_name_table+206, }, // ll
- { prop_name_table+206, prop_name_table+208, }, // lm
- { prop_name_table+208, prop_name_table+210, }, // lo
- { prop_name_table+210, prop_name_table+225, }, // lowercaseletter
- { prop_name_table+225, prop_name_table+227, }, // lt
- { prop_name_table+227, prop_name_table+229, }, // lu
- { prop_name_table+229, prop_name_table+231, }, // m*
- { prop_name_table+231, prop_name_table+235, }, // mark
- { prop_name_table+235, prop_name_table+245, }, // mathsymbol
- { prop_name_table+245, prop_name_table+247, }, // mc
- { prop_name_table+247, prop_name_table+249, }, // me
- { prop_name_table+249, prop_name_table+251, }, // mn
- { prop_name_table+251, prop_name_table+265, }, // modifierletter
- { prop_name_table+265, prop_name_table+279, }, // modifiersymbol
- { prop_name_table+279, prop_name_table+281, }, // n*
- { prop_name_table+281, prop_name_table+283, }, // nd
- { prop_name_table+283, prop_name_table+285, }, // nl
- { prop_name_table+285, prop_name_table+287, }, // no
- { prop_name_table+287, prop_name_table+301, }, // nonspacingmark
- { prop_name_table+301, prop_name_table+312, }, // notassigned
- { prop_name_table+312, prop_name_table+318, }, // number
- { prop_name_table+318, prop_name_table+333, }, // openpunctuation
- { prop_name_table+333, prop_name_table+338, }, // other
- { prop_name_table+338, prop_name_table+349, }, // otherletter
- { prop_name_table+349, prop_name_table+360, }, // othernumber
- { prop_name_table+360, prop_name_table+376, }, // otherpunctuation
- { prop_name_table+376, prop_name_table+387, }, // othersymbol
- { prop_name_table+387, prop_name_table+389, }, // p*
- { prop_name_table+389, prop_name_table+407, }, // paragraphseparator
- { prop_name_table+407, prop_name_table+409, }, // pc
- { prop_name_table+409, prop_name_table+411, }, // pd
- { prop_name_table+411, prop_name_table+413, }, // pe
- { prop_name_table+413, prop_name_table+415, }, // pf
- { prop_name_table+415, prop_name_table+417, }, // pi
- { prop_name_table+417, prop_name_table+419, }, // po
- { prop_name_table+419, prop_name_table+429, }, // privateuse
- { prop_name_table+429, prop_name_table+431, }, // ps
- { prop_name_table+431, prop_name_table+442, }, // punctuation
- { prop_name_table+442, prop_name_table+444, }, // s*
- { prop_name_table+444, prop_name_table+446, }, // sc
- { prop_name_table+446, prop_name_table+455, }, // separator
- { prop_name_table+455, prop_name_table+457, }, // sk
- { prop_name_table+457, prop_name_table+459, }, // sm
- { prop_name_table+459, prop_name_table+461, }, // so
- { prop_name_table+461, prop_name_table+475, }, // spaceseparator
- { prop_name_table+475, prop_name_table+495, }, // spacingcombiningmark
- { prop_name_table+495, prop_name_table+504, }, // surrogate
- { prop_name_table+504, prop_name_table+510, }, // symbol
- { prop_name_table+510, prop_name_table+519, }, // titlecase
- { prop_name_table+519, prop_name_table+534, }, // titlecaseletter
- { prop_name_table+534, prop_name_table+549, }, // uppercaseletter
- { prop_name_table+549, prop_name_table+551, }, // z*
- { prop_name_table+551, prop_name_table+553, }, // zl
- { prop_name_table+553, prop_name_table+555, }, // zp
- { prop_name_table+555, prop_name_table+557, }, // zs
- };
-
- static const icu_regex_traits::char_class_type icu_class_map[] = {
- icu_regex_traits::mask_any, // any
- icu_regex_traits::mask_ascii, // ascii
- (0x3FFFFFFFu) & ~(U_GC_CN_MASK), // assigned
- U_GC_C_MASK, // c*
- U_GC_CC_MASK, // cc
- U_GC_CF_MASK, // cf
- U_GC_PE_MASK, // closepunctuation
- U_GC_CN_MASK, // cn
- U_GC_CO_MASK, // co
- U_GC_PC_MASK, // connectorpunctuation
- U_GC_CC_MASK, // control
- U_GC_CS_MASK, // cs
- U_GC_SC_MASK, // currencysymbol
- U_GC_PD_MASK, // dashpunctuation
- U_GC_ND_MASK, // decimaldigitnumber
- U_GC_ME_MASK, // enclosingmark
- U_GC_PF_MASK, // finalpunctuation
- U_GC_CF_MASK, // format
- U_GC_PI_MASK, // initialpunctuation
- U_GC_L_MASK, // l*
- U_GC_L_MASK, // letter
- U_GC_NL_MASK, // letternumber
- U_GC_ZL_MASK, // lineseparator
- U_GC_LL_MASK, // ll
- U_GC_LM_MASK, // lm
- U_GC_LO_MASK, // lo
- U_GC_LL_MASK, // lowercaseletter
- U_GC_LT_MASK, // lt
- U_GC_LU_MASK, // lu
- U_GC_M_MASK, // m*
- U_GC_M_MASK, // mark
- U_GC_SM_MASK, // mathsymbol
- U_GC_MC_MASK, // mc
- U_GC_ME_MASK, // me
- U_GC_MN_MASK, // mn
- U_GC_LM_MASK, // modifierletter
- U_GC_SK_MASK, // modifiersymbol
- U_GC_N_MASK, // n*
- U_GC_ND_MASK, // nd
- U_GC_NL_MASK, // nl
- U_GC_NO_MASK, // no
- U_GC_MN_MASK, // nonspacingmark
- U_GC_CN_MASK, // notassigned
- U_GC_N_MASK, // number
- U_GC_PS_MASK, // openpunctuation
- U_GC_C_MASK, // other
- U_GC_LO_MASK, // otherletter
- U_GC_NO_MASK, // othernumber
- U_GC_PO_MASK, // otherpunctuation
- U_GC_SO_MASK, // othersymbol
- U_GC_P_MASK, // p*
- U_GC_ZP_MASK, // paragraphseparator
- U_GC_PC_MASK, // pc
- U_GC_PD_MASK, // pd
- U_GC_PE_MASK, // pe
- U_GC_PF_MASK, // pf
- U_GC_PI_MASK, // pi
- U_GC_PO_MASK, // po
- U_GC_CO_MASK, // privateuse
- U_GC_PS_MASK, // ps
- U_GC_P_MASK, // punctuation
- U_GC_S_MASK, // s*
- U_GC_SC_MASK, // sc
- U_GC_Z_MASK, // separator
- U_GC_SK_MASK, // sk
- U_GC_SM_MASK, // sm
- U_GC_SO_MASK, // so
- U_GC_ZS_MASK, // spaceseparator
- U_GC_MC_MASK, // spacingcombiningmark
- U_GC_CS_MASK, // surrogate
- U_GC_S_MASK, // symbol
- U_GC_LT_MASK, // titlecase
- U_GC_LT_MASK, // titlecaseletter
- U_GC_LU_MASK, // uppercaseletter
- U_GC_Z_MASK, // z*
- U_GC_ZL_MASK, // zl
- U_GC_ZP_MASK, // zp
- U_GC_ZS_MASK, // zs
- };
-
-
- static const re_detail::character_pointer_range< ::UChar32>* ranges_begin = range_data;
- static const re_detail::character_pointer_range< ::UChar32>* ranges_end = range_data + (sizeof(range_data)/sizeof(range_data[0]));
-
- re_detail::character_pointer_range< ::UChar32> t = { p1, p2, };
- const re_detail::character_pointer_range< ::UChar32>* p = std::lower_bound(ranges_begin, ranges_end, t);
- if((p != ranges_end) && (t == *p))
- return icu_class_map[p - ranges_begin];
- return 0;
-}
-
-icu_regex_traits::char_class_type icu_regex_traits::lookup_classname(const char_type* p1, const char_type* p2) const
-{
- static const char_class_type masks[] =
- {
- 0,
- U_GC_L_MASK | U_GC_ND_MASK,
- U_GC_L_MASK,
- mask_blank,
- U_GC_CC_MASK | U_GC_CF_MASK | U_GC_ZL_MASK | U_GC_ZP_MASK,
- U_GC_ND_MASK,
- U_GC_ND_MASK,
- (0x3FFFFFFFu) & ~(U_GC_CC_MASK | U_GC_CF_MASK | U_GC_CS_MASK | U_GC_CN_MASK | U_GC_Z_MASK),
- U_GC_LL_MASK,
- U_GC_LL_MASK,
- ~(U_GC_C_MASK),
- U_GC_P_MASK,
- char_class_type(U_GC_Z_MASK) | mask_space,
- char_class_type(U_GC_Z_MASK) | mask_space,
- U_GC_LU_MASK,
- mask_unicode,
- U_GC_LU_MASK,
- char_class_type(U_GC_L_MASK | U_GC_ND_MASK | U_GC_MN_MASK) | mask_underscore,
- char_class_type(U_GC_L_MASK | U_GC_ND_MASK | U_GC_MN_MASK) | mask_underscore,
- char_class_type(U_GC_ND_MASK) | mask_xdigit,
- };
-
- int id = ::boost::re_detail::get_default_class_id(p1, p2);
- if(id >= 0)
- return masks[id+1];
- char_class_type result = lookup_icu_mask(p1, p2);
- if(result != 0)
- return result;
-
- if(id < 0)
- {
- string_type s(p1, p2);
- string_type::size_type i = 0;
- while(i < s.size())
- {
- s[i] = static_cast<char>((::u_tolower)(s[i]));
- if(::u_isspace(s[i]) || (s[i] == '-') || (s[i] == '_'))
- s.erase(s.begin()+i, s.begin()+i+1);
- else
- {
- s[i] = static_cast<char>((::u_tolower)(s[i]));
- ++i;
- }
- }
- if(s.size())
- id = ::boost::re_detail::get_default_class_id(&*s.begin(), &*s.begin() + s.size());
- if(id >= 0)
- return masks[id+1];
- if(s.size())
- result = lookup_icu_mask(&*s.begin(), &*s.begin() + s.size());
- if(result != 0)
- return result;
- }
- BOOST_ASSERT(std::size_t(id+1) < sizeof(masks) / sizeof(masks[0]));
- return masks[id+1];
-}
-
-icu_regex_traits::string_type icu_regex_traits::lookup_collatename(const char_type* p1, const char_type* p2) const
-{
- string_type result;
- if(std::find_if(p1, p2, std::bind2nd(std::greater< ::UChar32>(), 0x7f)) == p2)
- {
-#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
- std::string s(p1, p2);
-#else
- std::string s;
- const char_type* p3 = p1;
- while(p3 != p2)
- s.append(1, *p3++);
-#endif
- // Try Unicode name:
- UErrorCode err = U_ZERO_ERROR;
- UChar32 c = ::u_charFromName(U_UNICODE_CHAR_NAME, s.c_str(), &err);
- if(U_SUCCESS(err))
- {
- result.push_back(c);
- return result;
- }
- // Try Unicode-extended name:
- err = U_ZERO_ERROR;
- c = ::u_charFromName(U_EXTENDED_CHAR_NAME, s.c_str(), &err);
- if(U_SUCCESS(err))
- {
- result.push_back(c);
- return result;
- }
- // try POSIX name:
- s = ::boost::re_detail::lookup_default_collate_name(s);
-#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
- result.assign(s.begin(), s.end());
-#else
- result.clear();
- std::string::const_iterator si, sj;
- si = s.begin();
- sj = s.end();
- while(si != sj)
- result.push_back(*si++);
-#endif
- }
- if(result.empty() && (p2-p1 == 1))
- result.push_back(*p1);
- return result;
-}
-
-bool icu_regex_traits::isctype(char_type c, char_class_type f) const
-{
- // check for standard catagories first:
- char_class_type m = char_class_type(1u << u_charType(c));
- if((m & f) != 0)
- return true;
- // now check for special cases:
- if(((f & mask_blank) != 0) && u_isblank(c))
- return true;
- if(((f & mask_space) != 0) && u_isspace(c))
- return true;
- if(((f & mask_xdigit) != 0) && (u_digit(c, 16) >= 0))
- return true;
- if(((f & mask_unicode) != 0) && (c >= 0x100))
- return true;
- if(((f & mask_underscore) != 0) && (c == '_'))
- return true;
- if(((f & mask_any) != 0) && (c <= 0x10FFFF))
- return true;
- if(((f & mask_ascii) != 0) && (c <= 0x7F))
- return true;
- return false;
-}
-
-}
-
-#endif // BOOST_HAS_ICU
diff --git a/3rdParty/Boost/libs/regex/src/instances.cpp b/3rdParty/Boost/libs/regex/src/instances.cpp
deleted file mode 100644
index 69d72ad..0000000
--- a/3rdParty/Boost/libs/regex/src/instances.cpp
+++ /dev/null
@@ -1,32 +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: regex narrow character template instances.
- */
-
-#define BOOST_REGEX_SOURCE
-
-#include <boost/regex/config.hpp>
-
-#if !defined(BOOST_REGEX_NO_EXTERNAL_TEMPLATES)
-#define BOOST_REGEX_NARROW_INSTANTIATE
-
-#ifdef __BORLANDC__
-#pragma hrdstop
-#endif
-
-#include <boost/regex.hpp>
-
-#endif
diff --git a/3rdParty/Boost/libs/regex/src/posix_api.cpp b/3rdParty/Boost/libs/regex/src/posix_api.cpp
deleted file mode 100644
index 1564ced..0000000
--- a/3rdParty/Boost/libs/regex/src/posix_api.cpp
+++ /dev/null
@@ -1,288 +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: posix_api.cpp
- * VERSION: see <boost/version.hpp>
- * DESCRIPTION: Implements the Posix API wrappers.
- */
-
-#define BOOST_REGEX_SOURCE
-
-#include <cstdio>
-#include <boost/regex.hpp>
-#include <boost/cregex.hpp>
-
-#if defined(BOOST_NO_STDC_NAMESPACE)
-namespace std{
- using ::sprintf;
- using ::strcpy;
- using ::strcmp;
-}
-#endif
-
-
-namespace boost{
-
-namespace{
-
-unsigned int magic_value = 25631;
-
-const char* names[] = {
- "REG_NOERROR",
- "REG_NOMATCH",
- "REG_BADPAT",
- "REG_ECOLLATE",
- "REG_ECTYPE",
- "REG_EESCAPE",
- "REG_ESUBREG",
- "REG_EBRACK",
- "REG_EPAREN",
- "REG_EBRACE",
- "REG_BADBR",
- "REG_ERANGE",
- "REG_ESPACE",
- "REG_BADRPT",
- "REG_EEND",
- "REG_ESIZE",
- "REG_ERPAREN",
- "REG_EMPTY",
- "REG_ECOMPLEXITY",
- "REG_ESTACK",
- "REG_E_UNKNOWN",
-};
-} // namespace
-
-typedef boost::basic_regex<char, c_regex_traits<char> > c_regex_type;
-
-BOOST_REGEX_DECL int BOOST_REGEX_CCALL regcompA(regex_tA* expression, const char* ptr, int f)
-{
- if(expression->re_magic != magic_value)
- {
- expression->guts = 0;
-#ifndef BOOST_NO_EXCEPTIONS
- try{
-#endif
- expression->guts = new c_regex_type();
-#ifndef BOOST_NO_EXCEPTIONS
- } catch(...)
- {
- return REG_ESPACE;
- }
-#else
- if(0 == expression->guts)
- return REG_E_MEMORY;
-#endif
- }
- // set default flags:
- boost::uint_fast32_t flags = (f & REG_PERLEX) ? 0 : ((f & REG_EXTENDED) ? regex::extended : regex::basic);
- expression->eflags = (f & REG_NEWLINE) ? match_not_dot_newline : match_default;
- // and translate those that are actually set:
-
- if(f & REG_NOCOLLATE)
- {
- flags |= regex::nocollate;
-#ifndef BOOST_REGEX_V3
- flags &= ~regex::collate;
-#endif
- }
-
- if(f & REG_NOSUB)
- {
- //expression->eflags |= match_any;
- flags |= regex::nosubs;
- }
-
- if(f & REG_NOSPEC)
- flags |= regex::literal;
- if(f & REG_ICASE)
- flags |= regex::icase;
- if(f & REG_ESCAPE_IN_LISTS)
- flags &= ~regex::no_escape_in_lists;
- if(f & REG_NEWLINE_ALT)
- flags |= regex::newline_alt;
-
- const char* p2;
- if(f & REG_PEND)
- p2 = expression->re_endp;
- else p2 = ptr + std::strlen(ptr);
-
- int result;
-
-#ifndef BOOST_NO_EXCEPTIONS
- try{
-#endif
- expression->re_magic = magic_value;
- static_cast<c_regex_type*>(expression->guts)->set_expression(ptr, p2, flags);
- expression->re_nsub = static_cast<c_regex_type*>(expression->guts)->mark_count() - 1;
- result = static_cast<c_regex_type*>(expression->guts)->error_code();
-#ifndef BOOST_NO_EXCEPTIONS
- }
- catch(const boost::regex_error& be)
- {
- result = be.code();
- }
- catch(...)
- {
- result = REG_E_UNKNOWN;
- }
-#endif
- if(result)
- regfreeA(expression);
- return result;
-
-}
-
-BOOST_REGEX_DECL regsize_t BOOST_REGEX_CCALL regerrorA(int code, const regex_tA* e, char* buf, regsize_t buf_size)
-{
- std::size_t result = 0;
- if(code & REG_ITOA)
- {
- code &= ~REG_ITOA;
- if(code <= (int)REG_E_UNKNOWN)
- {
- result = std::strlen(names[code]) + 1;
- if(buf_size >= result)
- re_detail::strcpy_s(buf, buf_size, names[code]);
- return result;
- }
- return result;
- }
- if(code == REG_ATOI)
- {
- char localbuf[5];
- if(e == 0)
- return 0;
- for(int i = 0; i <= (int)REG_E_UNKNOWN; ++i)
- {
- if(std::strcmp(e->re_endp, names[i]) == 0)
- {
-#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) && !defined(_WIN32_WCE) && !defined(UNDER_CE)
- (::sprintf_s)(localbuf, 5, "%d", i);
-#else
- (std::sprintf)(localbuf, "%d", i);
-#endif
- if(std::strlen(localbuf) < buf_size)
- re_detail::strcpy_s(buf, buf_size, localbuf);
- return std::strlen(localbuf) + 1;
- }
- }
-#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) && !defined(_WIN32_WCE) && !defined(UNDER_CE)
- (::sprintf_s)(localbuf, 5, "%d", 0);
-#else
- (std::sprintf)(localbuf, "%d", 0);
-#endif
- if(std::strlen(localbuf) < buf_size)
- re_detail::strcpy_s(buf, buf_size, localbuf);
- return std::strlen(localbuf) + 1;
- }
- if(code <= (int)REG_E_UNKNOWN)
- {
- std::string p;
- if((e) && (e->re_magic == magic_value))
- p = static_cast<c_regex_type*>(e->guts)->get_traits().error_string(static_cast< ::boost::regex_constants::error_type>(code));
- else
- {
- p = re_detail::get_default_error_string(static_cast< ::boost::regex_constants::error_type>(code));
- }
- std::size_t len = p.size();
- if(len < buf_size)
- {
- re_detail::strcpy_s(buf, buf_size, p.c_str());
- }
- return len + 1;
- }
- if(buf_size)
- *buf = 0;
- return 0;
-}
-
-BOOST_REGEX_DECL int BOOST_REGEX_CCALL regexecA(const regex_tA* expression, const char* buf, regsize_t n, regmatch_t* array, int eflags)
-{
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4267)
-#endif
- bool result = false;
- match_flag_type flags = match_default | expression->eflags;
- const char* end;
- const char* start;
- cmatch m;
-
- if(eflags & REG_NOTBOL)
- flags |= match_not_bol;
- if(eflags & REG_NOTEOL)
- flags |= match_not_eol;
- if(eflags & REG_STARTEND)
- {
- start = buf + array[0].rm_so;
- end = buf + array[0].rm_eo;
- }
- else
- {
- start = buf;
- end = buf + std::strlen(buf);
- }
-
-#ifndef BOOST_NO_EXCEPTIONS
- try{
-#endif
- if(expression->re_magic == magic_value)
- {
- result = regex_search(start, end, m, *static_cast<c_regex_type*>(expression->guts), flags);
- }
- else
- return result;
-#ifndef BOOST_NO_EXCEPTIONS
- } catch(...)
- {
- return REG_E_UNKNOWN;
- }
-#endif
-
- if(result)
- {
- // extract what matched:
- std::size_t i;
- for(i = 0; (i < n) && (i < expression->re_nsub + 1); ++i)
- {
- array[i].rm_so = (m[i].matched == false) ? -1 : (m[i].first - buf);
- array[i].rm_eo = (m[i].matched == false) ? -1 : (m[i].second - buf);
- }
- // and set anything else to -1:
- for(i = expression->re_nsub + 1; i < n; ++i)
- {
- array[i].rm_so = -1;
- array[i].rm_eo = -1;
- }
- return 0;
- }
- return REG_NOMATCH;
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-}
-
-BOOST_REGEX_DECL void BOOST_REGEX_CCALL regfreeA(regex_tA* expression)
-{
- if(expression->re_magic == magic_value)
- {
- delete static_cast<c_regex_type*>(expression->guts);
- }
- expression->re_magic = 0;
-}
-
-} // namespace boost
-
-
-
-
diff --git a/3rdParty/Boost/libs/regex/src/regex.cpp b/3rdParty/Boost/libs/regex/src/regex.cpp
deleted file mode 100644
index 0a50382..0000000
--- a/3rdParty/Boost/libs/regex/src/regex.cpp
+++ /dev/null
@@ -1,239 +0,0 @@
-/*
- *
- * Copyright (c) 1998-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.cpp
- * VERSION: see <boost/version.hpp>
- * DESCRIPTION: Misc boost::regbase member funnctions.
- */
-
-
-#define BOOST_REGEX_SOURCE
-
-#include <new>
-#include <boost/regex.hpp>
-#include <boost/throw_exception.hpp>
-
-#if defined(BOOST_REGEX_HAS_MS_STACK_GUARD) && defined(_MSC_VER) && (_MSC_VER >= 1300)
-# include <malloc.h>
-#endif
-#ifdef BOOST_REGEX_HAS_MS_STACK_GUARD
-#define WIN32_LEAN_AND_MEAN
-#ifndef NOMINMAX
-# define NOMINMAX
-#endif
-#define NOGDI
-#define NOUSER
-#include <windows.h>
-#endif
-
-#if defined(BOOST_REGEX_NON_RECURSIVE) && !defined(BOOST_REGEX_V3)
-#if BOOST_REGEX_MAX_CACHE_BLOCKS == 0
-#include <new>
-#else
-#include <boost/regex/v4/mem_block_cache.hpp>
-#endif
-#endif
-
-
-namespace boost{
-
-//
-// fix: these are declared out of line here to ensure
-// that dll builds contain the Virtual table for these
-// types - this ensures that exceptions can be thrown
-// from the dll and caught in an exe.
-regex_error::regex_error(const std::string& s, regex_constants::error_type err, std::ptrdiff_t pos)
- : std::runtime_error(s)
- , m_error_code(err)
- , m_position(pos)
-{
-}
-
-regex_error::regex_error(regex_constants::error_type err)
- : std::runtime_error(::boost::re_detail::get_default_error_string(err))
- , m_error_code(err)
- , m_position(0)
-{
-}
-
-regex_error::~regex_error() throw()
-{
-}
-
-void regex_error::raise()const
-{
-#ifndef BOOST_NO_EXCEPTIONS
- ::boost::throw_exception(*this);
-#endif
-}
-
-
-
-namespace re_detail{
-
-BOOST_REGEX_DECL void BOOST_REGEX_CALL raise_runtime_error(const std::runtime_error& ex)
-{
- ::boost::throw_exception(ex);
-}
-//
-// error checking API:
-//
-BOOST_REGEX_DECL void BOOST_REGEX_CALL verify_options(boost::regex::flag_type /*ef*/, match_flag_type mf)
-{
-#ifndef BOOST_REGEX_V3
- //
- // can't mix match_extra with POSIX matching rules:
- //
- if((mf & match_extra) && (mf & match_posix))
- {
- std::logic_error msg("Usage Error: Can't mix regular expression captures with POSIX matching rules");
- throw_exception(msg);
- }
-#endif
-}
-
-#ifdef BOOST_REGEX_HAS_MS_STACK_GUARD
-
-static void execute_eror()
-{
- // we only get here after a stack overflow,
- // this has to be a separate proceedure because we
- // can't mix __try{}__except block with local objects
- // that have destructors:
- reset_stack_guard_page();
- std::runtime_error err("Out of stack space, while attempting to match a regular expression.");
- raise_runtime_error(err);
-}
-
-bool BOOST_REGEX_CALL abstract_protected_call::execute()const
-{
- __try{
- return this->call();
- }__except(EXCEPTION_STACK_OVERFLOW == GetExceptionCode())
- {
- execute_eror();
- }
- // We never really get here at all:
- return false;
-}
-
-BOOST_REGEX_DECL void BOOST_REGEX_CALL reset_stack_guard_page()
-{
-#if defined(BOOST_REGEX_HAS_MS_STACK_GUARD) && defined(_MSC_VER) && (_MSC_VER >= 1300)
- _resetstkoflw();
-#else
- //
- // We need to locate the current page being used by the stack,
- // move to the page below it and then deallocate and protect
- // that page. Note that ideally we would protect only the lowest
- // stack page that has been allocated: in practice there
- // seems to be no easy way to locate this page, in any case as
- // long as the next page is protected, then Windows will figure
- // the rest out for us...
- //
- SYSTEM_INFO si;
- GetSystemInfo(&si);
- MEMORY_BASIC_INFORMATION mi;
- DWORD previous_protection_status;
- //
- // this is an address in our stack space:
- //
- LPBYTE page = (LPBYTE)&page;
- //
- // Get the current memory page in use:
- //
- VirtualQuery(page, &mi, sizeof(mi));
- //
- // Go to the page one below this:
- //
- page = (LPBYTE)(mi.BaseAddress)-si.dwPageSize;
- //
- // Free and protect everything from the start of the
- // allocation range, to the end of the page below the
- // one in use:
- //
- if (!VirtualFree(mi.AllocationBase, (LPBYTE)page - (LPBYTE)mi.AllocationBase, MEM_DECOMMIT)
- || !VirtualProtect(page, si.dwPageSize, PAGE_GUARD | PAGE_READWRITE, &previous_protection_status))
- {
- throw std::bad_exception();
- }
-#endif
-}
-#endif
-
-#if defined(BOOST_REGEX_NON_RECURSIVE) && !defined(BOOST_REGEX_V3)
-
-#if BOOST_REGEX_MAX_CACHE_BLOCKS == 0
-
-BOOST_REGEX_DECL void* BOOST_REGEX_CALL get_mem_block()
-{
- return ::operator new(BOOST_REGEX_BLOCKSIZE);
-}
-
-BOOST_REGEX_DECL void BOOST_REGEX_CALL put_mem_block(void* p)
-{
- ::operator delete(p);
-}
-
-#else
-
-#ifdef BOOST_HAS_THREADS
-mem_block_cache block_cache = { 0, 0, BOOST_STATIC_MUTEX_INIT, };
-#else
-mem_block_cache block_cache = { 0, 0, };
-#endif
-
-BOOST_REGEX_DECL void* BOOST_REGEX_CALL get_mem_block()
-{
- return block_cache.get();
-}
-
-BOOST_REGEX_DECL void BOOST_REGEX_CALL put_mem_block(void* p)
-{
- block_cache.put(p);
-}
-
-#endif
-
-#endif
-
-} // namespace re_detail
-
-
-
-} // namespace boost
-
-#if defined(BOOST_RE_USE_VCL) && defined(BOOST_REGEX_DYN_LINK)
-
-int WINAPI DllEntryPoint(HINSTANCE , unsigned long , void*)
-{
- return 1;
-}
-#endif
-
-#if defined(__IBMCPP__) && defined(BOOST_REGEX_DYN_LINK)
-//
-// Is this correct - linker complains without it ?
-//
-int main()
-{
- return 0;
-}
-
-#endif
-
-
-
-
-
-
diff --git a/3rdParty/Boost/libs/regex/src/regex_debug.cpp b/3rdParty/Boost/libs/regex/src/regex_debug.cpp
deleted file mode 100644
index 9306a82..0000000
--- a/3rdParty/Boost/libs/regex/src/regex_debug.cpp
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- *
- * Copyright (c) 1998-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_debug.cpp
- * VERSION: see <boost/version.hpp>
- * DESCRIPTION: Misc. debugging helpers.
- */
-
-
-#define BOOST_REGEX_SOURCE
-
-#include <boost/regex/config.hpp>
-
-
-//
-// regex configuration information: this prints out the settings used
-// when the library was built - include in debugging builds only:
-//
-#ifdef BOOST_REGEX_CONFIG_INFO
-
-#define print_macro regex_lib_print_macro
-#define print_expression regex_lib_print_expression
-#define print_byte_order regex_lib_print_byte_order
-#define print_sign regex_lib_print_sign
-#define print_compiler_macros regex_lib_print_compiler_macros
-#define print_stdlib_macros regex_lib_print_stdlib_macros
-#define print_platform_macros regex_lib_print_platform_macros
-#define print_boost_macros regex_lib_print_boost_macros
-#define print_separator regex_lib_print_separator
-#define OLD_MAIN regex_lib_main
-#define NEW_MAIN regex_lib_main2
-#define NO_RECURSE
-
-#include <libs/regex/test/config_info/regex_config_info.cpp>
-
-BOOST_REGEX_DECL void BOOST_REGEX_CALL print_regex_library_info()
-{
- std::cout << "\n\n";
- print_separator();
- std::cout << "Regex library build configuration:\n\n";
- regex_lib_main2();
-}
-
-#endif
-
-
-
-
-
diff --git a/3rdParty/Boost/libs/regex/src/regex_raw_buffer.cpp b/3rdParty/Boost/libs/regex/src/regex_raw_buffer.cpp
deleted file mode 100644
index 7a8de80..0000000
--- a/3rdParty/Boost/libs/regex/src/regex_raw_buffer.cpp
+++ /dev/null
@@ -1,70 +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_raw_buffer.cpp
- * VERSION see <boost/version.hpp>
- * DESCRIPTION: Member functions for class raw_storage.
- */
-
-
-#define BOOST_REGEX_SOURCE
-#include <memory>
-#include <cstring>
-#include <boost/assert.hpp>
-#include <boost/regex/v4/regex_raw_buffer.hpp>
-
-#if defined(BOOST_NO_STDC_NAMESPACE)
-namespace std{
- using ::memcpy;
- using ::memmove;
-}
-#endif
-
-
-namespace boost{ namespace re_detail{
-
-void BOOST_REGEX_CALL raw_storage::resize(size_type n)
-{
- register size_type newsize = start ? last - start : 1024;
- while(newsize < n)
- newsize *= 2;
- register size_type datasize = end - start;
- // extend newsize to WORD/DWORD boundary:
- newsize = (newsize + padding_mask) & ~(padding_mask);
-
- // allocate and copy data:
- register pointer ptr = static_cast<pointer>(::operator new(newsize));
- BOOST_REGEX_NOEH_ASSERT(ptr)
- std::memcpy(ptr, start, datasize);
-
- // get rid of old buffer:
- ::operator delete(start);
-
- // and set up pointers:
- start = ptr;
- end = ptr + datasize;
- last = ptr + newsize;
-}
-
-void* BOOST_REGEX_CALL raw_storage::insert(size_type pos, size_type n)
-{
- BOOST_ASSERT(pos <= size_type(end - start));
- if(size_type(last - end) < n)
- resize(n + (end - start));
- register void* result = start + pos;
- std::memmove(start + pos + n, start + pos, (end - start) - pos);
- end += n;
- return result;
-}
-
-}} // namespaces
diff --git a/3rdParty/Boost/libs/regex/src/regex_traits_defaults.cpp b/3rdParty/Boost/libs/regex/src/regex_traits_defaults.cpp
deleted file mode 100644
index 8f76c09..0000000
--- a/3rdParty/Boost/libs/regex/src/regex_traits_defaults.cpp
+++ /dev/null
@@ -1,688 +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.cpp
- * VERSION see <boost/version.hpp>
- * DESCRIPTION: Declares API's for access to regex_traits default properties.
- */
-
-#define BOOST_REGEX_SOURCE
-#include <boost/regex/regex_traits.hpp>
-
-#include <cctype>
-#ifndef BOOST_NO_WREGEX
-#include <cwctype>
-#endif
-
-#if defined(BOOST_NO_STDC_NAMESPACE)
-namespace std{
- using ::tolower;
- using ::toupper;
-#ifndef BOOST_NO_WREGEX
- using ::towlower;
- using ::towupper;
-#endif
-}
-#endif
-
-
-namespace boost{ namespace re_detail{
-
-BOOST_REGEX_DECL const char* BOOST_REGEX_CALL get_default_syntax(regex_constants::syntax_type n)
-{
- // if the user hasn't supplied a message catalog, then this supplies
- // default "messages" for us to load in the range 1-100.
- const char* messages[] = {
- "",
- "(",
- ")",
- "$",
- "^",
- ".",
- "*",
- "+",
- "?",
- "[",
- "]",
- "|",
- "\\",
- "#",
- "-",
- "{",
- "}",
- "0123456789",
- "b",
- "B",
- "<",
- ">",
- "",
- "",
- "A`",
- "z'",
- "\n",
- ",",
- "a",
- "f",
- "n",
- "r",
- "t",
- "v",
- "x",
- "c",
- ":",
- "=",
- "e",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "E",
- "Q",
- "X",
- "C",
- "Z",
- "G",
- "!",
- "p",
- "P",
- "N",
- };
-
- return ((n >= (sizeof(messages) / sizeof(messages[1]))) ? "" : messages[n]);
-}
-
-BOOST_REGEX_DECL const char* BOOST_REGEX_CALL get_default_error_string(regex_constants::error_type n)
-{
- static const char* const s_default_error_messages[] = {
- "Success", /* REG_NOERROR */
- "No match", /* REG_NOMATCH */
- "Invalid regular expression", /* REG_BADPAT */
- "Invalid collation character", /* REG_ECOLLATE */
- "Invalid character class name", /* REG_ECTYPE */
- "Invalid or trailing backslash", /* REG_EESCAPE */
- "Invalid back reference", /* REG_ESUBREG */
- "Unmatched [ or [^", /* REG_EBRACK */
- "Unmatched ( or \\(", /* REG_EPAREN */
- "Unmatched { or \\{", /* REG_EBRACE */
- "Invalid content of repeat range", /* REG_BADBR */
- "Invalid range end", /* REG_ERANGE */
- "Memory exhausted", /* REG_ESPACE */
- "Invalid preceding regular expression", /* REG_BADRPT */
- "Premature end of regular expression", /* REG_EEND */
- "Regular expression too big", /* REG_ESIZE */
- "Unmatched ) or \\)", /* REG_ERPAREN */
- "Empty expression", /* REG_EMPTY */
- "Complexity requirements exceeded", /* REG_ECOMPLEXITY */
- "Out of stack space", /* REG_ESTACK */
- "Unknown error", /* REG_E_UNKNOWN */
- "",
- "",
- "",
- };
-
- return (n > ::boost::regex_constants::error_unknown) ? s_default_error_messages[ ::boost::regex_constants::error_unknown] : s_default_error_messages[n];
-}
-
-BOOST_REGEX_DECL bool BOOST_REGEX_CALL is_combining_implementation(boost::uint_least16_t c)
-{
- const boost::uint_least16_t combining_ranges[] = { 0x0300, 0x0361,
- 0x0483, 0x0486,
- 0x0903, 0x0903,
- 0x093E, 0x0940,
- 0x0949, 0x094C,
- 0x0982, 0x0983,
- 0x09BE, 0x09C0,
- 0x09C7, 0x09CC,
- 0x09D7, 0x09D7,
- 0x0A3E, 0x0A40,
- 0x0A83, 0x0A83,
- 0x0ABE, 0x0AC0,
- 0x0AC9, 0x0ACC,
- 0x0B02, 0x0B03,
- 0x0B3E, 0x0B3E,
- 0x0B40, 0x0B40,
- 0x0B47, 0x0B4C,
- 0x0B57, 0x0B57,
- 0x0B83, 0x0B83,
- 0x0BBE, 0x0BBF,
- 0x0BC1, 0x0BCC,
- 0x0BD7, 0x0BD7,
- 0x0C01, 0x0C03,
- 0x0C41, 0x0C44,
- 0x0C82, 0x0C83,
- 0x0CBE, 0x0CBE,
- 0x0CC0, 0x0CC4,
- 0x0CC7, 0x0CCB,
- 0x0CD5, 0x0CD6,
- 0x0D02, 0x0D03,
- 0x0D3E, 0x0D40,
- 0x0D46, 0x0D4C,
- 0x0D57, 0x0D57,
- 0x0F7F, 0x0F7F,
- 0x20D0, 0x20E1,
- 0x3099, 0x309A,
- 0xFE20, 0xFE23,
- 0xffff, 0xffff, };
-
- const boost::uint_least16_t* p = combining_ranges + 1;
- while(*p < c) p += 2;
- --p;
- if((c >= *p) && (c <= *(p+1)))
- return true;
- return false;
-}
-
-//
-// these are the POSIX collating names:
-//
-BOOST_REGEX_DECL const char* def_coll_names[] = {
-"NUL", "SOH", "STX", "ETX", "EOT", "ENQ", "ACK", "alert", "backspace", "tab", "newline",
-"vertical-tab", "form-feed", "carriage-return", "SO", "SI", "DLE", "DC1", "DC2", "DC3", "DC4", "NAK",
-"SYN", "ETB", "CAN", "EM", "SUB", "ESC", "IS4", "IS3", "IS2", "IS1", "space", "exclamation-mark",
-"quotation-mark", "number-sign", "dollar-sign", "percent-sign", "ampersand", "apostrophe",
-"left-parenthesis", "right-parenthesis", "asterisk", "plus-sign", "comma", "hyphen",
-"period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine",
-"colon", "semicolon", "less-than-sign", "equals-sign", "greater-than-sign",
-"question-mark", "commercial-at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P",
-"Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "left-square-bracket", "backslash",
-"right-square-bracket", "circumflex", "underscore", "grave-accent", "a", "b", "c", "d", "e", "f",
-"g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "left-curly-bracket",
-"vertical-line", "right-curly-bracket", "tilde", "DEL", "",
-};
-
-// these multi-character collating elements
-// should keep most Western-European locales
-// happy - we should really localise these a
-// little more - but this will have to do for
-// now:
-
-BOOST_REGEX_DECL const char* def_multi_coll[] = {
- "ae",
- "Ae",
- "AE",
- "ch",
- "Ch",
- "CH",
- "ll",
- "Ll",
- "LL",
- "ss",
- "Ss",
- "SS",
- "nj",
- "Nj",
- "NJ",
- "dz",
- "Dz",
- "DZ",
- "lj",
- "Lj",
- "LJ",
- "",
-};
-
-
-
-BOOST_REGEX_DECL std::string BOOST_REGEX_CALL lookup_default_collate_name(const std::string& name)
-{
- unsigned int i = 0;
- while(*def_coll_names[i])
- {
- if(def_coll_names[i] == name)
- {
- return std::string(1, char(i));
- }
- ++i;
- }
- i = 0;
- while(*def_multi_coll[i])
- {
- if(def_multi_coll[i] == name)
- {
- return def_multi_coll[i];
- }
- ++i;
- }
- return std::string();
-}
-
-BOOST_REGEX_DECL char BOOST_REGEX_CALL do_global_lower(char c)
-{
- return static_cast<char>((std::tolower)((unsigned char)c));
-}
-
-BOOST_REGEX_DECL char BOOST_REGEX_CALL do_global_upper(char c)
-{
- return static_cast<char>((std::toupper)((unsigned char)c));
-}
-#ifndef BOOST_NO_WREGEX
-BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL do_global_lower(wchar_t c)
-{
- return (std::towlower)(c);
-}
-
-BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL do_global_upper(wchar_t c)
-{
- return (std::towupper)(c);
-}
-#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
-BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL do_global_lower(unsigned short c)
-{
- return (std::towlower)(c);
-}
-
-BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL do_global_upper(unsigned short c)
-{
- return (std::towupper)(c);
-}
-#endif
-
-#endif
-
-BOOST_REGEX_DECL regex_constants::escape_syntax_type BOOST_REGEX_CALL get_default_escape_syntax_type(char c)
-{
- //
- // char_syntax determines how the compiler treats a given character
- // in a regular expression.
- //
- static regex_constants::escape_syntax_type char_syntax[] = {
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /* */ // 32
- regex_constants::escape_type_identity, /*!*/
- regex_constants::escape_type_identity, /*"*/
- regex_constants::escape_type_identity, /*#*/
- regex_constants::escape_type_identity, /*$*/
- regex_constants::escape_type_identity, /*%*/
- regex_constants::escape_type_identity, /*&*/
- regex_constants::escape_type_end_buffer, /*'*/
- regex_constants::syntax_open_mark, /*(*/
- regex_constants::syntax_close_mark, /*)*/
- regex_constants::escape_type_identity, /***/
- regex_constants::syntax_plus, /*+*/
- regex_constants::escape_type_identity, /*,*/
- regex_constants::escape_type_identity, /*-*/
- regex_constants::escape_type_identity, /*.*/
- regex_constants::escape_type_identity, /*/*/
- regex_constants::escape_type_decimal, /*0*/
- regex_constants::escape_type_backref, /*1*/
- regex_constants::escape_type_backref, /*2*/
- regex_constants::escape_type_backref, /*3*/
- regex_constants::escape_type_backref, /*4*/
- regex_constants::escape_type_backref, /*5*/
- regex_constants::escape_type_backref, /*6*/
- regex_constants::escape_type_backref, /*7*/
- regex_constants::escape_type_backref, /*8*/
- regex_constants::escape_type_backref, /*9*/
- regex_constants::escape_type_identity, /*:*/
- regex_constants::escape_type_identity, /*;*/
- regex_constants::escape_type_left_word, /*<*/
- regex_constants::escape_type_identity, /*=*/
- regex_constants::escape_type_right_word, /*>*/
- regex_constants::syntax_question, /*?*/
- regex_constants::escape_type_identity, /*@*/
- regex_constants::escape_type_start_buffer, /*A*/
- regex_constants::escape_type_not_word_assert, /*B*/
- regex_constants::escape_type_C, /*C*/
- regex_constants::escape_type_not_class, /*D*/
- regex_constants::escape_type_E, /*E*/
- regex_constants::escape_type_not_class, /*F*/
- regex_constants::escape_type_G, /*G*/
- regex_constants::escape_type_not_class, /*H*/
- regex_constants::escape_type_not_class, /*I*/
- regex_constants::escape_type_not_class, /*J*/
- regex_constants::escape_type_not_class, /*K*/
- regex_constants::escape_type_not_class, /*L*/
- regex_constants::escape_type_not_class, /*M*/
- regex_constants::escape_type_named_char, /*N*/
- regex_constants::escape_type_not_class, /*O*/
- regex_constants::escape_type_not_property, /*P*/
- regex_constants::escape_type_Q, /*Q*/
- regex_constants::escape_type_not_class, /*R*/
- regex_constants::escape_type_not_class, /*S*/
- regex_constants::escape_type_not_class, /*T*/
- regex_constants::escape_type_not_class, /*U*/
- regex_constants::escape_type_not_class, /*V*/
- regex_constants::escape_type_not_class, /*W*/
- regex_constants::escape_type_X, /*X*/
- regex_constants::escape_type_not_class, /*Y*/
- regex_constants::escape_type_Z, /*Z*/
- regex_constants::escape_type_identity, /*[*/
- regex_constants::escape_type_identity, /*\*/
- regex_constants::escape_type_identity, /*]*/
- regex_constants::escape_type_identity, /*^*/
- regex_constants::escape_type_identity, /*_*/
- regex_constants::escape_type_start_buffer, /*`*/
- regex_constants::escape_type_control_a, /*a*/
- regex_constants::escape_type_word_assert, /*b*/
- regex_constants::escape_type_ascii_control, /*c*/
- regex_constants::escape_type_class, /*d*/
- regex_constants::escape_type_e, /*e*/
- regex_constants::escape_type_control_f, /*f*/
- regex_constants::escape_type_class, /*g*/
- regex_constants::escape_type_class, /*h*/
- regex_constants::escape_type_class, /*i*/
- regex_constants::escape_type_class, /*j*/
- regex_constants::escape_type_class, /*k*/
- regex_constants::escape_type_class, /*l*/
- regex_constants::escape_type_class, /*m*/
- regex_constants::escape_type_control_n, /*n*/
- regex_constants::escape_type_class, /*o*/
- regex_constants::escape_type_property, /*p*/
- regex_constants::escape_type_class, /*q*/
- regex_constants::escape_type_control_r, /*r*/
- regex_constants::escape_type_class, /*s*/
- regex_constants::escape_type_control_t, /*t*/
- regex_constants::escape_type_class, /*u*/
- regex_constants::escape_type_control_v, /*v*/
- regex_constants::escape_type_class, /*w*/
- regex_constants::escape_type_hex, /*x*/
- regex_constants::escape_type_class, /*y*/
- regex_constants::escape_type_end_buffer, /*z*/
- regex_constants::syntax_open_brace, /*{*/
- regex_constants::syntax_or, /*|*/
- regex_constants::syntax_close_brace, /*}*/
- regex_constants::escape_type_identity, /*~*/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- regex_constants::escape_type_identity, /**/
- };
-
- return char_syntax[(unsigned char)c];
-}
-
-BOOST_REGEX_DECL regex_constants::syntax_type BOOST_REGEX_CALL get_default_syntax_type(char c)
-{
- //
- // char_syntax determines how the compiler treats a given character
- // in a regular expression.
- //
- static regex_constants::syntax_type char_syntax[] = {
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_newline, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /* */ // 32
- regex_constants::syntax_not, /*!*/
- regex_constants::syntax_char, /*"*/
- regex_constants::syntax_hash, /*#*/
- regex_constants::syntax_dollar, /*$*/
- regex_constants::syntax_char, /*%*/
- regex_constants::syntax_char, /*&*/
- regex_constants::syntax_char, /*'*/
- regex_constants::syntax_open_mark, /*(*/
- regex_constants::syntax_close_mark, /*)*/
- regex_constants::syntax_star, /***/
- regex_constants::syntax_plus, /*+*/
- regex_constants::syntax_comma, /*,*/
- regex_constants::syntax_dash, /*-*/
- regex_constants::syntax_dot, /*.*/
- regex_constants::syntax_char, /*/*/
- regex_constants::syntax_digit, /*0*/
- regex_constants::syntax_digit, /*1*/
- regex_constants::syntax_digit, /*2*/
- regex_constants::syntax_digit, /*3*/
- regex_constants::syntax_digit, /*4*/
- regex_constants::syntax_digit, /*5*/
- regex_constants::syntax_digit, /*6*/
- regex_constants::syntax_digit, /*7*/
- regex_constants::syntax_digit, /*8*/
- regex_constants::syntax_digit, /*9*/
- regex_constants::syntax_colon, /*:*/
- regex_constants::syntax_char, /*;*/
- regex_constants::escape_type_left_word, /*<*/
- regex_constants::syntax_equal, /*=*/
- regex_constants::escape_type_right_word, /*>*/
- regex_constants::syntax_question, /*?*/
- regex_constants::syntax_char, /*@*/
- regex_constants::syntax_char, /*A*/
- regex_constants::syntax_char, /*B*/
- regex_constants::syntax_char, /*C*/
- regex_constants::syntax_char, /*D*/
- regex_constants::syntax_char, /*E*/
- regex_constants::syntax_char, /*F*/
- regex_constants::syntax_char, /*G*/
- regex_constants::syntax_char, /*H*/
- regex_constants::syntax_char, /*I*/
- regex_constants::syntax_char, /*J*/
- regex_constants::syntax_char, /*K*/
- regex_constants::syntax_char, /*L*/
- regex_constants::syntax_char, /*M*/
- regex_constants::syntax_char, /*N*/
- regex_constants::syntax_char, /*O*/
- regex_constants::syntax_char, /*P*/
- regex_constants::syntax_char, /*Q*/
- regex_constants::syntax_char, /*R*/
- regex_constants::syntax_char, /*S*/
- regex_constants::syntax_char, /*T*/
- regex_constants::syntax_char, /*U*/
- regex_constants::syntax_char, /*V*/
- regex_constants::syntax_char, /*W*/
- regex_constants::syntax_char, /*X*/
- regex_constants::syntax_char, /*Y*/
- regex_constants::syntax_char, /*Z*/
- regex_constants::syntax_open_set, /*[*/
- regex_constants::syntax_escape, /*\*/
- regex_constants::syntax_close_set, /*]*/
- regex_constants::syntax_caret, /*^*/
- regex_constants::syntax_char, /*_*/
- regex_constants::syntax_char, /*`*/
- regex_constants::syntax_char, /*a*/
- regex_constants::syntax_char, /*b*/
- regex_constants::syntax_char, /*c*/
- regex_constants::syntax_char, /*d*/
- regex_constants::syntax_char, /*e*/
- regex_constants::syntax_char, /*f*/
- regex_constants::syntax_char, /*g*/
- regex_constants::syntax_char, /*h*/
- regex_constants::syntax_char, /*i*/
- regex_constants::syntax_char, /*j*/
- regex_constants::syntax_char, /*k*/
- regex_constants::syntax_char, /*l*/
- regex_constants::syntax_char, /*m*/
- regex_constants::syntax_char, /*n*/
- regex_constants::syntax_char, /*o*/
- regex_constants::syntax_char, /*p*/
- regex_constants::syntax_char, /*q*/
- regex_constants::syntax_char, /*r*/
- regex_constants::syntax_char, /*s*/
- regex_constants::syntax_char, /*t*/
- regex_constants::syntax_char, /*u*/
- regex_constants::syntax_char, /*v*/
- regex_constants::syntax_char, /*w*/
- regex_constants::syntax_char, /*x*/
- regex_constants::syntax_char, /*y*/
- regex_constants::syntax_char, /*z*/
- regex_constants::syntax_open_brace, /*{*/
- regex_constants::syntax_or, /*|*/
- regex_constants::syntax_close_brace, /*}*/
- regex_constants::syntax_char, /*~*/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- regex_constants::syntax_char, /**/
- };
-
- return char_syntax[(unsigned char)c];
-}
-
-
-} // re_detail
-} // boost
diff --git a/3rdParty/Boost/libs/regex/src/static_mutex.cpp b/3rdParty/Boost/libs/regex/src/static_mutex.cpp
deleted file mode 100644
index cef7678..0000000
--- a/3rdParty/Boost/libs/regex/src/static_mutex.cpp
+++ /dev/null
@@ -1,179 +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.cpp
- * VERSION see <boost/version.hpp>
- * DESCRIPTION: Declares static_mutex lock type.
- */
-
-#define BOOST_REGEX_SOURCE
-#include <boost/config.hpp>
-
-#ifdef BOOST_HAS_THREADS
-
-#include <boost/regex/pending/static_mutex.hpp>
-
-#if defined(BOOST_HAS_WINTHREADS)
-#ifndef NOMINMAX
-# define NOMINMAX
-#endif
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-#include <boost/static_assert.hpp>
-#endif
-
-
-namespace boost{
-
-#if defined(BOOST_HAS_PTHREADS) && defined(PTHREAD_MUTEX_INITIALIZER)
-
-scoped_static_mutex_lock::scoped_static_mutex_lock(static_mutex& m, bool lk)
-: m_mutex(m), m_have_lock(false)
-{
- if(lk)
- lock();
-}
-
-scoped_static_mutex_lock::~scoped_static_mutex_lock()
-{
- if(m_have_lock)
- unlock();
-}
-
-void scoped_static_mutex_lock::lock()
-{
- if(0 == m_have_lock)
- {
- pthread_mutex_lock(&(m_mutex.m_mutex));
- m_have_lock = true;
- }
-}
-
-void scoped_static_mutex_lock::unlock()
-{
- if(m_have_lock)
- {
- pthread_mutex_unlock(&(m_mutex.m_mutex));
- m_have_lock = false;
- }
-}
-
-#elif defined(BOOST_HAS_WINTHREADS)
-
-BOOST_STATIC_ASSERT(sizeof(LONG) == sizeof(boost::int32_t));
-
-scoped_static_mutex_lock::scoped_static_mutex_lock(static_mutex& m, bool lk)
-: m_mutex(m), m_have_lock(false)
-{
- if(lk)
- lock();
-}
-
-scoped_static_mutex_lock::~scoped_static_mutex_lock()
-{
- if(m_have_lock)
- unlock();
-}
-
-void scoped_static_mutex_lock::lock()
-{
- if(0 == m_have_lock)
- {
-#if !defined(InterlockedCompareExchangePointer)
- while(0 != InterlockedCompareExchange(reinterpret_cast<void**>((boost::uint_least16_t*)&(m_mutex.m_mutex)), (void*)1, 0))
-#else
- while(0 != InterlockedCompareExchange(reinterpret_cast<LONG*>(&(m_mutex.m_mutex)), 1, 0))
-#endif
- {
- Sleep(0);
- }
- m_have_lock = true;
- }
-}
-
-void scoped_static_mutex_lock::unlock()
-{
- if(m_have_lock)
- {
-#if !defined(InterlockedCompareExchangePointer)
- InterlockedExchange((LONG*)&(m_mutex.m_mutex), 0);
-#else
- InterlockedExchange(reinterpret_cast<LONG*>(&(m_mutex.m_mutex)), 0);
-#endif
- m_have_lock = false;
- }
-}
-
-#else
-//
-// Portable version of a static mutex based on Boost.Thread library:
-//
-#include <stdlib.h>
-#include <boost/assert.hpp>
-
-boost::recursive_mutex* static_mutex::m_pmutex = 0;
-boost::once_flag static_mutex::m_once = BOOST_ONCE_INIT;
-
-extern "C" BOOST_REGEX_DECL void free_static_mutex()
-{
- delete static_mutex::m_pmutex;
- static_mutex::m_pmutex = 0;
-}
-
-void static_mutex::init()
-{
- m_pmutex = new boost::recursive_mutex();
- int r = atexit(free_static_mutex);
- BOOST_ASSERT(0 == r);
-}
-
-scoped_static_mutex_lock::scoped_static_mutex_lock(static_mutex& , bool lk)
-: m_plock(0), m_have_lock(false)
-{
- if(lk)
- lock();
-}
-
-scoped_static_mutex_lock::~scoped_static_mutex_lock()
-{
- if(m_have_lock)
- unlock();
- delete m_plock;
-}
-
-void scoped_static_mutex_lock::lock()
-{
- if(0 == m_have_lock)
- {
- boost::call_once(static_mutex::m_once,&static_mutex::init);
- if(0 == m_plock)
- m_plock = new boost::recursive_mutex::scoped_lock(*static_mutex::m_pmutex, false);
- m_plock->lock();
- m_have_lock = true;
- }
-}
-
-void scoped_static_mutex_lock::unlock()
-{
- if(m_have_lock)
- {
- m_plock->unlock();
- m_have_lock = false;
- }
-}
-
-#endif
-
-}
-
-#endif // BOOST_HAS_THREADS
diff --git a/3rdParty/Boost/libs/regex/src/usinstances.cpp b/3rdParty/Boost/libs/regex/src/usinstances.cpp
deleted file mode 100644
index 5665366..0000000
--- a/3rdParty/Boost/libs/regex/src/usinstances.cpp
+++ /dev/null
@@ -1,77 +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: winstances.cpp
- * VERSION: see <boost/version.hpp>
- * DESCRIPTION: regex unsigned short template instances (MSVC only).
- */
-
-#define BOOST_REGEX_SOURCE
-
-#include <boost/detail/workaround.hpp>
-#include <memory>
-#include <string>
-
-#if defined(_DLL_CPPLIB) && !defined(_M_CEE_PURE) && defined(_NATIVE_WCHAR_T_DEFINED) \
- && !(defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION) || defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER))
-//
-// This is a horrible workaround, but without declaring these symbols extern we get
-// duplicate symbol errors when linking if the application is built without
-// /Zc:wchar_t
-//
-#ifdef _CRTIMP2_PURE
-# define BOOST_REGEX_STDLIB_DECL _CRTIMP2_PURE
-#else
-# define BOOST_REGEX_STDLIB_DECL _CRTIMP2
-#endif
-
-namespace std{
-
-#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
-template class BOOST_REGEX_STDLIB_DECL allocator<unsigned short>;
-template class BOOST_REGEX_STDLIB_DECL _String_val<unsigned short, allocator<unsigned short> >;
-template class BOOST_REGEX_STDLIB_DECL basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >;
-#endif
-
-#if BOOST_WORKAROUND(BOOST_MSVC, > 1300) && BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400))
-template<> BOOST_REGEX_STDLIB_DECL std::size_t __cdecl char_traits<unsigned short>::length(unsigned short const*);
-#endif
-
-template BOOST_REGEX_STDLIB_DECL bool __cdecl operator==(
- const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&,
- const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&);
-template BOOST_REGEX_STDLIB_DECL bool __cdecl operator==(
- const unsigned short *,
- const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&);
-template BOOST_REGEX_STDLIB_DECL bool __cdecl operator==(
- const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&,
- const unsigned short *);
-template BOOST_REGEX_STDLIB_DECL bool __cdecl operator<(
- const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&,
- const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&);
-template BOOST_REGEX_STDLIB_DECL bool __cdecl operator>(
- const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&,
- const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&);
-}
-#endif
-
-#include <boost/regex/config.hpp>
-
-#if !defined(BOOST_NO_WREGEX) && defined(BOOST_REGEX_HAS_OTHER_WCHAR_T) && !defined(BOOST_REGEX_NO_EXTERNAL_TEMPLATES)
-#define BOOST_REGEX_US_INSTANTIATE
-
-#include <boost/regex.hpp>
-
-#endif
-
-
diff --git a/3rdParty/Boost/libs/regex/src/w32_regex_traits.cpp b/3rdParty/Boost/libs/regex/src/w32_regex_traits.cpp
deleted file mode 100644
index 365fccc..0000000
--- a/3rdParty/Boost/libs/regex/src/w32_regex_traits.cpp
+++ /dev/null
@@ -1,650 +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.cpp
- * VERSION see <boost/version.hpp>
- * DESCRIPTION: Implements w32_regex_traits<char> (and associated helper classes).
- */
-
-#define BOOST_REGEX_SOURCE
-#include <boost/regex/config.hpp>
-
-#if defined(_WIN32) && !defined(BOOST_REGEX_NO_W32)
-#include <boost/regex/regex_traits.hpp>
-#include <boost/regex/pattern_except.hpp>
-
-#define WIN32_LEAN_AND_MEAN
-#ifndef NOMINMAX
-# define NOMINMAX
-#endif
-#define NOGDI
-#include <windows.h>
-
-#if defined(_MSC_VER) && !defined(_WIN32_WCE) && !defined(UNDER_CE)
-#pragma comment(lib, "user32.lib")
-#endif
-
-#ifdef BOOST_NO_STDC_NAMESPACE
-namespace std{
- using ::memset;
-}
-#endif
-
-namespace boost{ namespace re_detail{
-
-#ifdef BOOST_NO_ANSI_APIS
-UINT get_code_page_for_locale_id(lcid_type id)
-{
- WCHAR code_page_string[7];
- if (::GetLocaleInfoW(id, LOCALE_IDEFAULTANSICODEPAGE, code_page_string, 7) == 0)
- return 0;
-
- return static_cast<UINT>(_wtol(code_page_string));
-}
-#endif
-
-
-void w32_regex_traits_char_layer<char>::init()
-{
- // we need to start by initialising our syntax map so we know which
- // character is used for which purpose:
- std::memset(m_char_map, 0, sizeof(m_char_map));
- cat_type cat;
- std::string cat_name(w32_regex_traits<char>::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_syntax(i));
- for(string_type::size_type j = 0; j < mss.size(); ++j)
- {
- m_char_map[static_cast<unsigned char>(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)
- {
- m_char_map[static_cast<unsigned char>(*ptr)] = i;
- ++ptr;
- }
- }
- }
- //
- // finish off by calculating our escape types:
- //
- unsigned char i = 'A';
- do
- {
- if(m_char_map[i] == 0)
- {
- if(::boost::re_detail::w32_is(this->m_locale, 0x0002u, (char)i))
- m_char_map[i] = regex_constants::escape_type_class;
- else if(::boost::re_detail::w32_is(this->m_locale, 0x0001u, (char)i))
- m_char_map[i] = regex_constants::escape_type_not_class;
- }
- }while(0xFF != i++);
-
- //
- // fill in lower case map:
- //
- char char_map[1 << CHAR_BIT];
- for(int ii = 0; ii < (1 << CHAR_BIT); ++ii)
- char_map[ii] = static_cast<char>(ii);
-#ifndef BOOST_NO_ANSI_APIS
- int r = ::LCMapStringA(this->m_locale, LCMAP_LOWERCASE, char_map, 1 << CHAR_BIT, this->m_lower_map, 1 << CHAR_BIT);
- BOOST_ASSERT(r != 0);
-#else
- UINT code_page = get_code_page_for_locale_id(this->m_locale);
- BOOST_ASSERT(code_page != 0);
-
- WCHAR wide_char_map[1 << CHAR_BIT];
- int conv_r = ::MultiByteToWideChar(code_page, 0, char_map, 1 << CHAR_BIT, wide_char_map, 1 << CHAR_BIT);
- BOOST_ASSERT(conv_r != 0);
-
- WCHAR wide_lower_map[1 << CHAR_BIT];
- int r = ::LCMapStringW(this->m_locale, LCMAP_LOWERCASE, wide_char_map, 1 << CHAR_BIT, wide_lower_map, 1 << CHAR_BIT);
- BOOST_ASSERT(r != 0);
-
- conv_r = ::WideCharToMultiByte(code_page, 0, wide_lower_map, r, this->m_lower_map, 1 << CHAR_BIT, NULL, NULL);
- BOOST_ASSERT(conv_r != 0);
-#endif
- if(r < (1 << CHAR_BIT))
- {
- // if we have multibyte characters then not all may have been given
- // a lower case mapping:
- for(int jj = r; jj < (1 << CHAR_BIT); ++jj)
- this->m_lower_map[jj] = static_cast<char>(jj);
- }
-
-#ifndef BOOST_NO_ANSI_APIS
- r = ::GetStringTypeExA(this->m_locale, CT_CTYPE1, char_map, 1 << CHAR_BIT, this->m_type_map);
-#else
- r = ::GetStringTypeExW(this->m_locale, CT_CTYPE1, wide_char_map, 1 << CHAR_BIT, this->m_type_map);
-#endif
- BOOST_ASSERT(0 != r);
-}
-
-BOOST_REGEX_DECL lcid_type BOOST_REGEX_CALL w32_get_default_locale()
-{
- return ::GetUserDefaultLCID();
-}
-
-BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_lower(char c, lcid_type id)
-{
-#ifndef BOOST_NO_ANSI_APIS
- WORD mask;
- if(::GetStringTypeExA(id, CT_CTYPE1, &c, 1, &mask) && (mask & C1_LOWER))
- return true;
- return false;
-#else
- UINT code_page = get_code_page_for_locale_id(id);
- if (code_page == 0)
- return false;
-
- WCHAR wide_c;
- if (::MultiByteToWideChar(code_page, 0, &c, 1, &wide_c, 1) == 0)
- return false;
-
- WORD mask;
- if(::GetStringTypeExW(id, CT_CTYPE1, &wide_c, 1, &mask) && (mask & C1_LOWER))
- return true;
- return false;
-#endif
-}
-
-BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_lower(wchar_t c, lcid_type id)
-{
- WORD mask;
- if(::GetStringTypeExW(id, CT_CTYPE1, &c, 1, &mask) && (mask & C1_LOWER))
- return true;
- return false;
-}
-#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
-BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_lower(unsigned short ca, lcid_type id)
-{
- WORD mask;
- wchar_t c = ca;
- if(::GetStringTypeExW(id, CT_CTYPE1, &c, 1, &mask) && (mask & C1_LOWER))
- return true;
- return false;
-}
-#endif
-
-BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_upper(char c, lcid_type id)
-{
-#ifndef BOOST_NO_ANSI_APIS
- WORD mask;
- if(::GetStringTypeExA(id, CT_CTYPE1, &c, 1, &mask) && (mask & C1_UPPER))
- return true;
- return false;
-#else
- UINT code_page = get_code_page_for_locale_id(id);
- if (code_page == 0)
- return false;
-
- WCHAR wide_c;
- if (::MultiByteToWideChar(code_page, 0, &c, 1, &wide_c, 1) == 0)
- return false;
-
- WORD mask;
- if(::GetStringTypeExW(id, CT_CTYPE1, &wide_c, 1, &mask) && (mask & C1_UPPER))
- return true;
- return false;
-#endif
-}
-
-BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_upper(wchar_t c, lcid_type id)
-{
- WORD mask;
- if(::GetStringTypeExW(id, CT_CTYPE1, &c, 1, &mask) && (mask & C1_UPPER))
- return true;
- return false;
-}
-#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
-BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_upper(unsigned short ca, lcid_type id)
-{
- WORD mask;
- wchar_t c = ca;
- if(::GetStringTypeExW(id, CT_CTYPE1, &c, 1, &mask) && (mask & C1_UPPER))
- return true;
- return false;
-}
-#endif
-
-void free_module(void* mod)
-{
- ::FreeLibrary(static_cast<HMODULE>(mod));
-}
-
-BOOST_REGEX_DECL cat_type BOOST_REGEX_CALL w32_cat_open(const std::string& name)
-{
-#ifndef BOOST_NO_ANSI_APIS
- cat_type result(::LoadLibraryA(name.c_str()), &free_module);
- return result;
-#else
- LPWSTR wide_name = (LPWSTR)_alloca( (name.size() + 1) * sizeof(WCHAR) );
- if (::MultiByteToWideChar(CP_ACP, 0, name.c_str(), name.size(), wide_name, name.size() + 1) == 0)
- return cat_type();
-
- cat_type result(::LoadLibraryW(wide_name), &free_module);
- return result;
-#endif
-}
-
-BOOST_REGEX_DECL std::string BOOST_REGEX_CALL w32_cat_get(const cat_type& cat, lcid_type, int i, const std::string& def)
-{
-#ifndef BOOST_NO_ANSI_APIS
- char buf[256];
- if(0 == ::LoadStringA(
- static_cast<HMODULE>(cat.get()),
- i,
- buf,
- 256
- ))
- {
- return def;
- }
-#else
- WCHAR wbuf[256];
- int r = ::LoadStringW(
- static_cast<HMODULE>(cat.get()),
- i,
- wbuf,
- 256
- );
- if (r == 0)
- return def;
-
- LPSTR buf = (LPSTR)_alloca( (r + 1) * 2 );
- if (::WideCharToMultiByte(CP_ACP, 0, wbuf, r, buf, (r + 1) * 2, NULL, NULL) == 0)
- return def;
-#endif
- return std::string(buf);
-}
-
-#ifndef BOOST_NO_WREGEX
-BOOST_REGEX_DECL std::wstring BOOST_REGEX_CALL w32_cat_get(const cat_type& cat, lcid_type, int i, const std::wstring& def)
-{
- wchar_t buf[256];
- if(0 == ::LoadStringW(
- static_cast<HMODULE>(cat.get()),
- i,
- buf,
- 256
- ))
- {
- return def;
- }
- return std::wstring(buf);
-}
-#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)
-{
- unsigned short buf[256];
- if(0 == ::LoadStringW(
- static_cast<HMODULE>(cat.get()),
- i,
- (LPWSTR)buf,
- 256
- ))
- {
- return def;
- }
- return std::basic_string<unsigned short>(buf);
-}
-#endif
-#endif
-BOOST_REGEX_DECL std::string BOOST_REGEX_CALL w32_transform(lcid_type id, const char* p1, const char* p2)
-{
-#ifndef BOOST_NO_ANSI_APIS
- int bytes = ::LCMapStringA(
- id, // locale identifier
- LCMAP_SORTKEY, // mapping transformation type
- p1, // source string
- static_cast<int>(p2 - p1), // number of characters in source string
- 0, // destination buffer
- 0 // size of destination buffer
- );
- if(!bytes)
- return std::string(p1, p2);
- std::string result(++bytes, '\0');
- bytes = ::LCMapStringA(
- id, // locale identifier
- LCMAP_SORTKEY, // mapping transformation type
- p1, // source string
- static_cast<int>(p2 - p1), // number of characters in source string
- &*result.begin(), // destination buffer
- bytes // size of destination buffer
- );
-#else
- UINT code_page = get_code_page_for_locale_id(id);
- if(code_page == 0)
- return std::string(p1, p2);
-
- int src_len = static_cast<int>(p2 - p1);
- LPWSTR wide_p1 = (LPWSTR)_alloca( (src_len + 1) * 2 );
- if(::MultiByteToWideChar(code_page, 0, p1, src_len, wide_p1, src_len + 1) == 0)
- return std::string(p1, p2);
-
- int bytes = ::LCMapStringW(
- id, // locale identifier
- LCMAP_SORTKEY, // mapping transformation type
- wide_p1, // source string
- src_len, // number of characters in source string
- 0, // destination buffer
- 0 // size of destination buffer
- );
- if(!bytes)
- return std::string(p1, p2);
- std::string result(++bytes, '\0');
- bytes = ::LCMapStringW(
- id, // locale identifier
- LCMAP_SORTKEY, // mapping transformation type
- wide_p1, // source string
- src_len, // number of characters in source string
- (LPWSTR)&*result.begin(), // destination buffer
- bytes // size of destination buffer
- );
-#endif
- if(bytes > static_cast<int>(result.size()))
- return std::string(p1, p2);
- while(result.size() && result[result.size()-1] == '\0')
- {
- result.erase(result.size()-1);
- }
- return result;
-}
-
-#ifndef BOOST_NO_WREGEX
-BOOST_REGEX_DECL std::wstring BOOST_REGEX_CALL w32_transform(lcid_type id, const wchar_t* p1, const wchar_t* p2)
-{
- int bytes = ::LCMapStringW(
- id, // locale identifier
- LCMAP_SORTKEY, // mapping transformation type
- p1, // source string
- static_cast<int>(p2 - p1), // number of characters in source string
- 0, // destination buffer
- 0 // size of destination buffer
- );
- if(!bytes)
- return std::wstring(p1, p2);
- std::string result(++bytes, '\0');
- bytes = ::LCMapStringW(
- id, // locale identifier
- LCMAP_SORTKEY, // mapping transformation type
- p1, // source string
- static_cast<int>(p2 - p1), // number of characters in source string
- reinterpret_cast<wchar_t*>(&*result.begin()), // destination buffer *of bytes*
- bytes // size of destination buffer
- );
- if(bytes > static_cast<int>(result.size()))
- return std::wstring(p1, p2);
- while(result.size() && result[result.size()-1] == L'\0')
- {
- result.erase(result.size()-1);
- }
- std::wstring r2;
- for(std::string::size_type i = 0; i < result.size(); ++i)
- r2.append(1, static_cast<wchar_t>(static_cast<unsigned char>(result[i])));
- return r2;
-}
-#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
-BOOST_REGEX_DECL std::basic_string<unsigned short> BOOST_REGEX_CALL w32_transform(lcid_type id, const unsigned short* p1, const unsigned short* p2)
-{
- int bytes = ::LCMapStringW(
- id, // locale identifier
- LCMAP_SORTKEY, // mapping transformation type
- (LPCWSTR)p1, // source string
- static_cast<int>(p2 - p1), // number of characters in source string
- 0, // destination buffer
- 0 // size of destination buffer
- );
- if(!bytes)
- return std::basic_string<unsigned short>(p1, p2);
- std::string result(++bytes, '\0');
- bytes = ::LCMapStringW(
- id, // locale identifier
- LCMAP_SORTKEY, // mapping transformation type
- (LPCWSTR)p1, // source string
- static_cast<int>(p2 - p1), // number of characters in source string
- reinterpret_cast<wchar_t*>(&*result.begin()), // destination buffer *of bytes*
- bytes // size of destination buffer
- );
- if(bytes > static_cast<int>(result.size()))
- return std::basic_string<unsigned short>(p1, p2);
- while(result.size() && result[result.size()-1] == L'\0')
- {
- result.erase(result.size()-1);
- }
- std::basic_string<unsigned short> r2;
- for(std::string::size_type i = 0; i < result.size(); ++i)
- r2.append(1, static_cast<unsigned short>(static_cast<unsigned char>(result[i])));
- return r2;
-}
-#endif
-#endif
-BOOST_REGEX_DECL char BOOST_REGEX_CALL w32_tolower(char c, lcid_type id)
-{
- char result[2];
-#ifndef BOOST_NO_ANSI_APIS
- int b = ::LCMapStringA(
- id, // locale identifier
- LCMAP_LOWERCASE, // mapping transformation type
- &c, // source string
- 1, // number of characters in source string
- result, // destination buffer
- 1); // size of destination buffer
- if(b == 0)
- return c;
-#else
- UINT code_page = get_code_page_for_locale_id(id);
- if (code_page == 0)
- return c;
-
- WCHAR wide_c;
- if (::MultiByteToWideChar(code_page, 0, &c, 1, &wide_c, 1) == 0)
- return c;
-
- WCHAR wide_result;
- int b = ::LCMapStringW(
- id, // locale identifier
- LCMAP_LOWERCASE, // mapping transformation type
- &wide_c, // source string
- 1, // number of characters in source string
- &wide_result, // destination buffer
- 1); // size of destination buffer
- if(b == 0)
- return c;
-
- if (::WideCharToMultiByte(code_page, 0, &wide_result, 1, result, 2, NULL, NULL) == 0)
- return c;
-#endif
- return result[0];
-}
-
-#ifndef BOOST_NO_WREGEX
-BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL w32_tolower(wchar_t c, lcid_type id)
-{
- wchar_t result[2];
- int b = ::LCMapStringW(
- id, // locale identifier
- LCMAP_LOWERCASE, // mapping transformation type
- &c, // source string
- 1, // number of characters in source string
- result, // destination buffer
- 1); // size of destination buffer
- if(b == 0)
- return c;
- return result[0];
-}
-#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
-BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL w32_tolower(unsigned short c, lcid_type id)
-{
- wchar_t result[2];
- int b = ::LCMapStringW(
- id, // locale identifier
- LCMAP_LOWERCASE, // mapping transformation type
- (wchar_t const*)&c, // source string
- 1, // number of characters in source string
- result, // destination buffer
- 1); // size of destination buffer
- if(b == 0)
- return c;
- return result[0];
-}
-#endif
-#endif
-BOOST_REGEX_DECL char BOOST_REGEX_CALL w32_toupper(char c, lcid_type id)
-{
- char result[2];
-#ifndef BOOST_NO_ANSI_APIS
- int b = ::LCMapStringA(
- id, // locale identifier
- LCMAP_UPPERCASE, // mapping transformation type
- &c, // source string
- 1, // number of characters in source string
- result, // destination buffer
- 1); // size of destination buffer
- if(b == 0)
- return c;
-#else
- UINT code_page = get_code_page_for_locale_id(id);
- if(code_page == 0)
- return c;
-
- WCHAR wide_c;
- if (::MultiByteToWideChar(code_page, 0, &c, 1, &wide_c, 1) == 0)
- return c;
-
- WCHAR wide_result;
- int b = ::LCMapStringW(
- id, // locale identifier
- LCMAP_UPPERCASE, // mapping transformation type
- &wide_c, // source string
- 1, // number of characters in source string
- &wide_result, // destination buffer
- 1); // size of destination buffer
- if(b == 0)
- return c;
-
- if (::WideCharToMultiByte(code_page, 0, &wide_result, 1, result, 2, NULL, NULL) == 0)
- return c;
-#endif
- return result[0];
-}
-
-#ifndef BOOST_NO_WREGEX
-BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL w32_toupper(wchar_t c, lcid_type id)
-{
- wchar_t result[2];
- int b = ::LCMapStringW(
- id, // locale identifier
- LCMAP_UPPERCASE, // mapping transformation type
- &c, // source string
- 1, // number of characters in source string
- result, // destination buffer
- 1); // size of destination buffer
- if(b == 0)
- return c;
- return result[0];
-}
-#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
-BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL w32_toupper(unsigned short c, lcid_type id)
-{
- wchar_t result[2];
- int b = ::LCMapStringW(
- id, // locale identifier
- LCMAP_UPPERCASE, // mapping transformation type
- (wchar_t const*)&c, // source string
- 1, // number of characters in source string
- result, // destination buffer
- 1); // size of destination buffer
- if(b == 0)
- return c;
- return result[0];
-}
-#endif
-#endif
-BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is(lcid_type id, boost::uint32_t m, char c)
-{
- WORD mask;
-#ifndef BOOST_NO_ANSI_APIS
- if(::GetStringTypeExA(id, CT_CTYPE1, &c, 1, &mask) && (mask & m & w32_regex_traits_implementation<char>::mask_base))
- return true;
-#else
- UINT code_page = get_code_page_for_locale_id(id);
- if(code_page == 0)
- return false;
-
- WCHAR wide_c;
- if (::MultiByteToWideChar(code_page, 0, &c, 1, &wide_c, 1) == 0)
- return false;
-
- if(::GetStringTypeExW(id, CT_CTYPE1, &wide_c, 1, &mask) && (mask & m & w32_regex_traits_implementation<char>::mask_base))
- return true;
-#endif
- if((m & w32_regex_traits_implementation<char>::mask_word) && (c == '_'))
- return true;
- return false;
-}
-
-#ifndef BOOST_NO_WREGEX
-BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is(lcid_type id, boost::uint32_t m, wchar_t c)
-{
- WORD mask;
- if(::GetStringTypeExW(id, CT_CTYPE1, &c, 1, &mask) && (mask & m & w32_regex_traits_implementation<wchar_t>::mask_base))
- return true;
- if((m & w32_regex_traits_implementation<wchar_t>::mask_word) && (c == '_'))
- return true;
- if((m & w32_regex_traits_implementation<wchar_t>::mask_unicode) && (c > 0xff))
- return true;
- return false;
-}
-#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
-BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is(lcid_type id, boost::uint32_t m, unsigned short c)
-{
- WORD mask;
- if(::GetStringTypeExW(id, CT_CTYPE1, (wchar_t const*)&c, 1, &mask) && (mask & m & w32_regex_traits_implementation<wchar_t>::mask_base))
- return true;
- if((m & w32_regex_traits_implementation<wchar_t>::mask_word) && (c == '_'))
- return true;
- if((m & w32_regex_traits_implementation<wchar_t>::mask_unicode) && (c > 0xff))
- return true;
- return false;
-}
-#endif
-#endif
-
-} // re_detail
-} // boost
-
-#endif
-
diff --git a/3rdParty/Boost/libs/regex/src/wc_regex_traits.cpp b/3rdParty/Boost/libs/regex/src/wc_regex_traits.cpp
deleted file mode 100644
index 3640f29..0000000
--- a/3rdParty/Boost/libs/regex/src/wc_regex_traits.cpp
+++ /dev/null
@@ -1,313 +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: wc_regex_traits.cpp
- * VERSION: see <boost/version.hpp>
- * DESCRIPTION: Implements out of line members for c_regex_traits<wchar_t>
- */
-
-
-#define BOOST_REGEX_SOURCE
-
-#include <boost/detail/workaround.hpp>
-#include <memory>
-#include <string>
-
-#if defined(_DLL_CPPLIB) && !defined(_M_CEE_PURE) && defined(_NATIVE_WCHAR_T_DEFINED) \
- && !(defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION) || defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER))
-//
-// This is a horrible workaround, but without declaring these symbols extern we get
-// duplicate symbol errors when linking if the application is built without
-// /Zc:wchar_t
-//
-#ifdef _CRTIMP2_PURE
-# define BOOST_REGEX_STDLIB_DECL _CRTIMP2_PURE
-#else
-# define BOOST_REGEX_STDLIB_DECL _CRTIMP2
-#endif
-
-namespace std{
-
-#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
-template class BOOST_REGEX_STDLIB_DECL allocator<unsigned short>;
-template class BOOST_REGEX_STDLIB_DECL _String_val<unsigned short, allocator<unsigned short> >;
-template class BOOST_REGEX_STDLIB_DECL basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >;
-#endif
-
-#if BOOST_WORKAROUND(BOOST_MSVC, > 1300) && BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400))
-template<> BOOST_REGEX_STDLIB_DECL std::size_t __cdecl char_traits<unsigned short>::length(unsigned short const*);
-#endif
-
-template BOOST_REGEX_STDLIB_DECL bool __cdecl operator==(
- const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&,
- const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&);
-template BOOST_REGEX_STDLIB_DECL bool __cdecl operator==(
- const unsigned short *,
- const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&);
-template BOOST_REGEX_STDLIB_DECL bool __cdecl operator==(
- const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&,
- const unsigned short *);
-template BOOST_REGEX_STDLIB_DECL bool __cdecl operator<(
- const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&,
- const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&);
-template BOOST_REGEX_STDLIB_DECL bool __cdecl operator>(
- const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&,
- const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&);
-}
-#endif
-
-#include <boost/regex/config.hpp>
-#include <boost/detail/workaround.hpp>
-
-#if !BOOST_WORKAROUND(__BORLANDC__, < 0x560)
-
-#include <boost/regex/v4/c_regex_traits.hpp>
-#ifndef BOOST_NO_WREGEX
-#include <boost/regex/v4/primary_transform.hpp>
-#include <boost/regex/v4/regex_traits_defaults.hpp>
-
-#if defined(BOOST_NO_STDC_NAMESPACE)
-namespace std{
- using ::wcstol;
-}
-#endif
-
-namespace boost{
-
-c_regex_traits<wchar_t>::string_type BOOST_REGEX_CALL c_regex_traits<wchar_t>::transform(const wchar_t* p1, const wchar_t* p2)
-{
- std::size_t r;
- std::size_t s = 10;
- std::wstring src(p1, p2);
- std::wstring result(s, L' ');
- while(s < (r = std::wcsxfrm(&*result.begin(), src.c_str(), s)))
- {
- result.append(r - s + 3, L' ');
- s = result.size();
- }
- result.erase(r);
- return result;
-}
-
-c_regex_traits<wchar_t>::string_type BOOST_REGEX_CALL c_regex_traits<wchar_t>::transform_primary(const wchar_t* p1, const wchar_t* p2)
-{
- static wchar_t s_delim;
- static const int s_collate_type = ::boost::re_detail::find_sort_syntax(static_cast<const c_regex_traits<wchar_t>*>(0), &s_delim);
- std::wstring result;
- //
- // What we do here depends upon the format of the sort key returned by
- // sort key returned by this->transform:
- //
- switch(s_collate_type)
- {
- case ::boost::re_detail::sort_C:
- case ::boost::re_detail::sort_unknown:
- // the best we can do is translate to lower case, then get a regular sort key:
- {
- result.assign(p1, p2);
- for(std::wstring::size_type i = 0; i < result.size(); ++i)
- result[i] = (std::towlower)(result[i]);
- result = c_regex_traits<wchar_t>::transform(&*result.begin(), &*result.begin() + result.size());
- break;
- }
- case ::boost::re_detail::sort_fixed:
- {
- // get a regular sort key, and then truncate it:
- result = c_regex_traits<wchar_t>::transform(&*result.begin(), &*result.begin() + result.size());
- result.erase(s_delim);
- break;
- }
- case ::boost::re_detail::sort_delim:
- // get a regular sort key, and then truncate everything after the delim:
- result = c_regex_traits<wchar_t>::transform(&*result.begin(), &*result.begin() + result.size());
- if(result.size() && (result[0] == s_delim))
- break;
- std::size_t i;
- for(i = 0; i < result.size(); ++i)
- {
- if(result[i] == s_delim)
- break;
- }
- result.erase(i);
- break;
- }
- if(result.empty())
- result = std::wstring(1, char(0));
- return result;
-}
-
-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
-};
-
-c_regex_traits<wchar_t>::char_class_type BOOST_REGEX_CALL c_regex_traits<wchar_t>::lookup_classname(const wchar_t* p1, const wchar_t* p2)
-{
- static const char_class_type masks[] =
- {
- 0,
- char_class_alnum,
- char_class_alpha,
- char_class_blank,
- char_class_cntrl,
- char_class_digit,
- char_class_digit,
- char_class_graph,
- char_class_lower,
- char_class_lower,
- char_class_print,
- char_class_punct,
- char_class_space,
- char_class_space,
- char_class_upper,
- char_class_unicode,
- char_class_upper,
- char_class_alnum | char_class_word,
- char_class_alnum | char_class_word,
- char_class_xdigit,
- };
-
- int id = ::boost::re_detail::get_default_class_id(p1, p2);
- if(id < 0)
- {
- std::wstring s(p1, p2);
- for(std::wstring::size_type i = 0; i < s.size(); ++i)
- s[i] = (std::towlower)(s[i]);
- id = ::boost::re_detail::get_default_class_id(&*s.begin(), &*s.begin() + s.size());
- }
- BOOST_ASSERT(id+1 < static_cast<int>(sizeof(masks) / sizeof(masks[0])));
- return masks[id+1];
-}
-
-bool BOOST_REGEX_CALL c_regex_traits<wchar_t>::isctype(wchar_t c, char_class_type mask)
-{
- return
- ((mask & char_class_space) && (std::iswspace)(c))
- || ((mask & char_class_print) && (std::iswprint)(c))
- || ((mask & char_class_cntrl) && (std::iswcntrl)(c))
- || ((mask & char_class_upper) && (std::iswupper)(c))
- || ((mask & char_class_lower) && (std::iswlower)(c))
- || ((mask & char_class_alpha) && (std::iswalpha)(c))
- || ((mask & char_class_digit) && (std::iswdigit)(c))
- || ((mask & char_class_punct) && (std::iswpunct)(c))
- || ((mask & char_class_xdigit) && (std::iswxdigit)(c))
- || ((mask & char_class_blank) && (std::iswspace)(c) && !::boost::re_detail::is_separator(c))
- || ((mask & char_class_word) && (c == '_'))
- || ((mask & char_class_unicode) && (c & ~static_cast<wchar_t>(0xff)));
-}
-
-c_regex_traits<wchar_t>::string_type BOOST_REGEX_CALL c_regex_traits<wchar_t>::lookup_collatename(const wchar_t* p1, const wchar_t* p2)
-{
-#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 wchar_t* p0 = p1;
- while(p0 != p2)
- name.append(1, char(*p0++));
-#endif
- name = ::boost::re_detail::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, wchar_t(*b++));
- return result;
- }
-#endif
- if(p2 - p1 == 1)
- return string_type(1, *p1);
- return string_type();
-}
-
-int BOOST_REGEX_CALL c_regex_traits<wchar_t>::value(wchar_t c, int radix)
-{
-#ifdef __BORLANDC__
- // workaround for broken wcstol:
- if((std::iswxdigit)(c) == 0)
- return -1;
-#endif
- wchar_t b[2] = { c, '\0', };
- wchar_t* ep;
- int result = std::wcstol(b, &ep, radix);
- if(ep == b)
- return -1;
- return result;
-}
-
-#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
-c_regex_traits<unsigned short>::string_type BOOST_REGEX_CALL c_regex_traits<unsigned short>::transform(const unsigned short* p1, const unsigned short* p2)
-{
- std::wstring result = c_regex_traits<wchar_t>::transform((const wchar_t*)p1, (const wchar_t*)p2);
- return string_type(result.begin(), result.end());
-}
-
-c_regex_traits<unsigned short>::string_type BOOST_REGEX_CALL c_regex_traits<unsigned short>::transform_primary(const unsigned short* p1, const unsigned short* p2)
-{
- std::wstring result = c_regex_traits<wchar_t>::transform_primary((const wchar_t*)p1, (const wchar_t*)p2);
- return string_type(result.begin(), result.end());
-}
-
-c_regex_traits<unsigned short>::char_class_type BOOST_REGEX_CALL c_regex_traits<unsigned short>::lookup_classname(const unsigned short* p1, const unsigned short* p2)
-{
- return c_regex_traits<wchar_t>::lookup_classname((const wchar_t*)p1, (const wchar_t*)p2);
-}
-
-c_regex_traits<unsigned short>::string_type BOOST_REGEX_CALL c_regex_traits<unsigned short>::lookup_collatename(const unsigned short* p1, const unsigned short* p2)
-{
- std::wstring result = c_regex_traits<wchar_t>::lookup_collatename((const wchar_t*)p1, (const wchar_t*)p2);
- return string_type(result.begin(), result.end());
-}
-
-bool BOOST_REGEX_CALL c_regex_traits<unsigned short>::isctype(unsigned short c, char_class_type m)
-{
- return c_regex_traits<wchar_t>::isctype(c, m);
-}
-
-int BOOST_REGEX_CALL c_regex_traits<unsigned short>::value(unsigned short c, int radix)
-{
- return c_regex_traits<wchar_t>::value(c, radix);
-}
-
-#endif
-
-}
-
-#endif // BOOST_NO_WREGEX
-
-#endif // __BORLANDC__
-
diff --git a/3rdParty/Boost/libs/regex/src/wide_posix_api.cpp b/3rdParty/Boost/libs/regex/src/wide_posix_api.cpp
deleted file mode 100644
index c8a9190..0000000
--- a/3rdParty/Boost/libs/regex/src/wide_posix_api.cpp
+++ /dev/null
@@ -1,310 +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: wide_posix_api.cpp
- * VERSION: see <boost/version.hpp>
- * DESCRIPTION: Implements the wide character POSIX API wrappers.
- */
-
-#define BOOST_REGEX_SOURCE
-
-#include <boost/regex/config.hpp>
-
-#ifndef BOOST_NO_WREGEX
-
-#include <boost/regex.hpp>
-#include <boost/cregex.hpp>
-
-#include <cwchar>
-#include <cstring>
-#include <cstdio>
-
-#if defined(BOOST_NO_STDC_NAMESPACE) || defined(__NetBSD__)
-namespace std{
-# ifndef BOOST_NO_SWPRINTF
- using ::swprintf;
-# endif
-}
-#endif
-
-
-namespace boost{
-
-namespace {
-
-unsigned int wmagic_value = 28631;
-
-const wchar_t* wnames[] = {
- L"REG_NOERROR",
- L"REG_NOMATCH",
- L"REG_BADPAT",
- L"REG_ECOLLATE",
- L"REG_ECTYPE",
- L"REG_EESCAPE",
- L"REG_ESUBREG",
- L"REG_EBRACK",
- L"REG_EPAREN",
- L"REG_EBRACE",
- L"REG_BADBR",
- L"REG_ERANGE",
- L"REG_ESPACE",
- L"REG_BADRPT",
- L"REG_EEND",
- L"REG_ESIZE",
- L"REG_ERPAREN",
- L"REG_EMPTY",
- L"REG_ECOMPLEXITY",
- L"REG_ESTACK",
- L"REG_E_UNKNOWN",
-};
-}
-
-typedef boost::basic_regex<wchar_t, c_regex_traits<wchar_t> > c_regex_type;
-
-BOOST_REGEX_DECL int BOOST_REGEX_CCALL regcompW(regex_tW* expression, const wchar_t* ptr, int f)
-{
- if(expression->re_magic != wmagic_value)
- {
- expression->guts = 0;
-#ifndef BOOST_NO_EXCEPTIONS
- try{
-#endif
- expression->guts = new c_regex_type();
-#ifndef BOOST_NO_EXCEPTIONS
- } catch(...)
- {
- return REG_ESPACE;
- }
-#else
- if(0 == expression->guts)
- return REG_E_MEMORY;
-#endif
- }
- // set default flags:
- boost::uint_fast32_t flags = (f & REG_PERLEX) ? 0 : ((f & REG_EXTENDED) ? wregex::extended : wregex::basic);
- expression->eflags = (f & REG_NEWLINE) ? match_not_dot_newline : match_default;
-
- // and translate those that are actually set:
- if(f & REG_NOCOLLATE)
- {
- flags |= wregex::nocollate;
-#ifndef BOOST_REGEX_V3
- flags &= ~wregex::collate;
-#endif
- }
-
- if(f & REG_NOSUB)
- {
- //expression->eflags |= match_any;
- flags |= wregex::nosubs;
- }
-
- if(f & REG_NOSPEC)
- flags |= wregex::literal;
- if(f & REG_ICASE)
- flags |= wregex::icase;
- if(f & REG_ESCAPE_IN_LISTS)
- flags &= ~wregex::no_escape_in_lists;
- if(f & REG_NEWLINE_ALT)
- flags |= wregex::newline_alt;
-
- const wchar_t* p2;
- if(f & REG_PEND)
- p2 = expression->re_endp;
- else p2 = ptr + std::wcslen(ptr);
-
- int result;
-
-#ifndef BOOST_NO_EXCEPTIONS
- try{
-#endif
- expression->re_magic = wmagic_value;
- static_cast<c_regex_type*>(expression->guts)->set_expression(ptr, p2, flags);
- expression->re_nsub = static_cast<c_regex_type*>(expression->guts)->mark_count() - 1;
- result = static_cast<c_regex_type*>(expression->guts)->error_code();
-#ifndef BOOST_NO_EXCEPTIONS
- }
- catch(const boost::regex_error& be)
- {
- result = be.code();
- }
- catch(...)
- {
- result = REG_E_UNKNOWN;
- }
-#endif
- if(result)
- regfreeW(expression);
- return result;
-
-}
-
-BOOST_REGEX_DECL regsize_t BOOST_REGEX_CCALL regerrorW(int code, const regex_tW* e, wchar_t* buf, regsize_t buf_size)
-{
- std::size_t result = 0;
- if(code & REG_ITOA)
- {
- code &= ~REG_ITOA;
- if((code <= (int)REG_E_UNKNOWN) && (code >= 0))
- {
- result = std::wcslen(wnames[code]) + 1;
- if(buf_size >= result)
-#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) && !defined(_WIN32_WCE) && !defined(UNDER_CE)
- ::wcscpy_s(buf, buf_size, wnames[code]);
-#else
- std::wcscpy(buf, wnames[code]);
-#endif
- return result;
- }
- return result;
- }
-#if !defined(BOOST_NO_SWPRINTF)
- if(code == REG_ATOI)
- {
- wchar_t localbuf[5];
- if(e == 0)
- return 0;
- for(int i = 0; i <= (int)REG_E_UNKNOWN; ++i)
- {
- if(std::wcscmp(e->re_endp, wnames[i]) == 0)
- {
-#if defined(_WIN32_WCE) && !defined(UNDER_CE)
- (std::swprintf)(localbuf, L"%d", i);
-#else
- (std::swprintf)(localbuf, 5, L"%d", i);
-#endif
- if(std::wcslen(localbuf) < buf_size)
-#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) && !defined(_WIN32_WCE) && !defined(UNDER_CE)
- ::wcscpy_s(buf, buf_size, localbuf);
-#else
- std::wcscpy(buf, localbuf);
-#endif
- return std::wcslen(localbuf) + 1;
- }
- }
-#if defined(_WIN32_WCE) && !defined(UNDER_CE)
- (std::swprintf)(localbuf, L"%d", 0);
-#else
- (std::swprintf)(localbuf, 5, L"%d", 0);
-#endif
- if(std::wcslen(localbuf) < buf_size)
-#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) && !defined(_WIN32_WCE) && !defined(UNDER_CE)
- ::wcscpy_s(buf, buf_size, localbuf);
-#else
- std::wcscpy(buf, localbuf);
-#endif
- return std::wcslen(localbuf) + 1;
- }
-#endif
- if(code <= (int)REG_E_UNKNOWN)
- {
- std::string p;
- if((e) && (e->re_magic == wmagic_value))
- p = static_cast<c_regex_type*>(e->guts)->get_traits().error_string(static_cast< ::boost::regex_constants::error_type>(code));
- else
- {
- p = re_detail::get_default_error_string(static_cast< ::boost::regex_constants::error_type>(code));
- }
- std::size_t len = p.size();
- if(len < buf_size)
- {
- re_detail::copy(p.c_str(), p.c_str() + p.size() + 1, buf);
- }
- return len + 1;
- }
- if(buf_size)
- *buf = 0;
- return 0;
-}
-
-BOOST_REGEX_DECL int BOOST_REGEX_CCALL regexecW(const regex_tW* expression, const wchar_t* buf, regsize_t n, regmatch_t* array, int eflags)
-{
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4267)
-#endif
- bool result = false;
- match_flag_type flags = match_default | expression->eflags;
- const wchar_t* end;
- const wchar_t* start;
- wcmatch m;
-
- if(eflags & REG_NOTBOL)
- flags |= match_not_bol;
- if(eflags & REG_NOTEOL)
- flags |= match_not_eol;
- if(eflags & REG_STARTEND)
- {
- start = buf + array[0].rm_so;
- end = buf + array[0].rm_eo;
- }
- else
- {
- start = buf;
- end = buf + std::wcslen(buf);
- }
-
-#ifndef BOOST_NO_EXCEPTIONS
- try{
-#endif
- if(expression->re_magic == wmagic_value)
- {
- result = regex_search(start, end, m, *static_cast<c_regex_type*>(expression->guts), flags);
- }
- else
- return result;
-#ifndef BOOST_NO_EXCEPTIONS
- } catch(...)
- {
- return REG_E_UNKNOWN;
- }
-#endif
- if(result)
- {
- // extract what matched:
- std::size_t i;
- for(i = 0; (i < n) && (i < expression->re_nsub + 1); ++i)
- {
- array[i].rm_so = (m[i].matched == false) ? -1 : (m[i].first - buf);
- array[i].rm_eo = (m[i].matched == false) ? -1 : (m[i].second - buf);
- }
- // and set anything else to -1:
- for(i = expression->re_nsub + 1; i < n; ++i)
- {
- array[i].rm_so = -1;
- array[i].rm_eo = -1;
- }
- return 0;
- }
- return REG_NOMATCH;
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-}
-
-BOOST_REGEX_DECL void BOOST_REGEX_CCALL regfreeW(regex_tW* expression)
-{
- if(expression->re_magic == wmagic_value)
- {
- delete static_cast<c_regex_type*>(expression->guts);
- }
- expression->re_magic = 0;
-}
-
-} // namespace boost;
-
-#endif
-
-
-
-
diff --git a/3rdParty/Boost/libs/regex/src/winstances.cpp b/3rdParty/Boost/libs/regex/src/winstances.cpp
deleted file mode 100644
index 1e0b859..0000000
--- a/3rdParty/Boost/libs/regex/src/winstances.cpp
+++ /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: winstances.cpp
- * VERSION: see <boost/version.hpp>
- * DESCRIPTION: regex wide character template instances.
- */
-
-#define BOOST_REGEX_SOURCE
-
-#include <boost/regex/config.hpp>
-
-#if !defined(BOOST_NO_WREGEX) && !defined(BOOST_REGEX_NO_EXTERNAL_TEMPLATES)
-#define BOOST_REGEX_WIDE_INSTANTIATE
-
-#ifdef __BORLANDC__
-#pragma hrdstop
-#endif
-
-#include <boost/regex.hpp>
-
-#endif
-
-
-
diff --git a/3rdParty/Boost/libs/signals/src/connection.cpp b/3rdParty/Boost/libs/signals/src/connection.cpp
deleted file mode 100644
index b4ed8b4..0000000
--- a/3rdParty/Boost/libs/signals/src/connection.cpp
+++ /dev/null
@@ -1,155 +0,0 @@
-// Boost.Signals library
-
-// Copyright Douglas Gregor 2001-2004. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// For more information, see http://www.boost.org
-
-#define BOOST_SIGNALS_SOURCE
-
-#include <boost/signals/connection.hpp>
-#include <cassert>
-
-namespace boost {
- namespace BOOST_SIGNALS_NAMESPACE {
-
- connection::connection(const connection& other) :
- con(other.con), controlling_connection(other.controlling_connection)
- {
- }
-
- connection::~connection()
- {
- if (controlling_connection) {
- disconnect();
- }
- }
-
- void
- connection::reset(BOOST_SIGNALS_NAMESPACE::detail::basic_connection* new_con)
- {
- con.reset(new_con);
- }
-
- bool connection::operator==(const connection& other) const
- {
- return con.get() == other.con.get();
- }
-
- bool connection::operator<(const connection& other) const
- {
- return con.get() < other.con.get();
- }
-
- connection& connection::operator=(const connection& other)
- {
- connection(other).swap(*this);
- return *this;
- }
-
- void connection::swap(connection& other)
- {
- this->con.swap(other.con);
- std::swap(this->controlling_connection, other.controlling_connection);
- }
-
- void swap(connection& c1, connection& c2)
- {
- c1.swap(c2);
- }
-
- scoped_connection::scoped_connection(const connection& other) :
- connection(other),
- released(false)
- {
- }
-
- scoped_connection::scoped_connection(const scoped_connection& other) :
- connection(other),
- released(other.released)
- {
- }
-
- scoped_connection::~scoped_connection()
- {
- if (!released) {
- this->disconnect();
- }
- }
-
- connection scoped_connection::release()
- {
- released = true;
- return *this;
- }
-
- void scoped_connection::swap(scoped_connection& other)
- {
- this->connection::swap(other);
- bool other_released = other.released;
- other.released = this->released;
- this->released = other_released;
- }
-
- void swap(scoped_connection& c1, scoped_connection& c2)
- {
- c1.swap(c2);
- }
-
- scoped_connection&
- scoped_connection::operator=(const connection& other)
- {
- scoped_connection(other).swap(*this);
- return *this;
- }
-
- scoped_connection&
- scoped_connection::operator=(const scoped_connection& other)
- {
- scoped_connection(other).swap(*this);
- return *this;
- }
-
- void
- connection::add_bound_object(const BOOST_SIGNALS_NAMESPACE::detail::bound_object& b)
- {
- assert(con.get() != 0);
- con->bound_objects.push_back(b);
- }
-
-
- void connection::disconnect() const
- {
- if (this->connected()) {
- // Make sure we have a reference to the basic_connection object,
- // because 'this' may disappear
- shared_ptr<detail::basic_connection> local_con = con;
-
- void (*signal_disconnect)(void*, void*) = local_con->signal_disconnect;
-
- // Note that this connection no longer exists
- // Order is important here: we could get into an infinite loop if this
- // isn't cleared before we try the disconnect.
- local_con->signal_disconnect = 0;
-
- // Disconnect signal
- signal_disconnect(local_con->signal, local_con->signal_data);
-
- // Disconnect all bound objects
- typedef std::list<BOOST_SIGNALS_NAMESPACE::detail::bound_object>::iterator iterator;
- for (iterator i = local_con->bound_objects.begin();
- i != local_con->bound_objects.end(); ++i) {
- assert(i->disconnect != 0);
- i->disconnect(i->obj, i->data);
- }
- }
- }
- } // end namespace boost
-} // end namespace boost
-
-#ifndef BOOST_MSVC
-// Explicit instantiations to keep everything in the library
-template class std::list<boost::BOOST_SIGNALS_NAMESPACE::detail::bound_object>;
-#endif
diff --git a/3rdParty/Boost/libs/signals/src/named_slot_map.cpp b/3rdParty/Boost/libs/signals/src/named_slot_map.cpp
deleted file mode 100644
index 85a4bda..0000000
--- a/3rdParty/Boost/libs/signals/src/named_slot_map.cpp
+++ /dev/null
@@ -1,134 +0,0 @@
-// Boost.Signals library
-
-// Copyright Douglas Gregor 2001-2004. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// For more information, see http://www.boost.org
-
-#define BOOST_SIGNALS_SOURCE
-
-#include <boost/signals/detail/named_slot_map.hpp>
-#include <cassert>
-#include <map>
-#include <list>
-#include <typeinfo>
-
-namespace boost { namespace BOOST_SIGNALS_NAMESPACE { namespace detail {
-
-typedef std::list<connection_slot_pair> group_list;
-typedef group_list::iterator slot_pair_iterator;
-typedef std::map<stored_group, group_list, compare_type> slot_container_type;
-typedef slot_container_type::iterator group_iterator;
-typedef slot_container_type::const_iterator const_group_iterator;
-
-
-#if BOOST_WORKAROUND(_MSC_VER, <= 1500)
-void named_slot_map_iterator::decrement() { assert(false); }
-void named_slot_map_iterator::advance(difference_type) { assert(false); }
-#endif
-
-named_slot_map::named_slot_map(const compare_type& compare) : groups(compare)
-{
- clear();
-}
-
-void named_slot_map::clear()
-{
- groups.clear();
- groups[stored_group(stored_group::sk_front)];
- groups[stored_group(stored_group::sk_back)];
- back = groups.end();
- --back;
-}
-
-named_slot_map::iterator named_slot_map::begin()
-{
- return named_slot_map::iterator(groups.begin(), groups.end());
-}
-
-named_slot_map::iterator named_slot_map::end()
-{
- return named_slot_map::iterator(groups.end(), groups.end());
-}
-
-named_slot_map::iterator
-named_slot_map::insert(const stored_group& name, const connection& con,
- const any& slot, connect_position at)
-{
- group_iterator group;
- if (name.empty()) {
- switch (at) {
- case at_front: group = groups.begin(); break;
- case at_back: group = back; break;
- }
- } else {
- group = groups.find(name);
- if (group == groups.end()) {
- slot_container_type::value_type v(name, group_list());
- group = groups.insert(v).first;
- }
- }
- iterator it;
- it.group = group;
- it.last_group = groups.end();
-
- switch (at) {
- case at_back:
- group->second.push_back(connection_slot_pair(con, slot));
- it.slot_ = group->second.end();
- it.slot_assigned = true;
- --(it.slot_);
- break;
-
- case at_front:
- group->second.push_front(connection_slot_pair(con, slot));
- it.slot_ = group->second.begin();
- it.slot_assigned = true;
- break;
- }
- return it;
-}
-
-void named_slot_map::disconnect(const stored_group& name)
-{
- group_iterator group = groups.find(name);
- if (group != groups.end()) {
- slot_pair_iterator i = group->second.begin();
- while (i != group->second.end()) {
- slot_pair_iterator next = i;
- ++next;
- i->first.disconnect();
- i = next;
- }
- groups.erase(group);
- }
-}
-
-void named_slot_map::erase(iterator pos)
-{
- // Erase the slot
- pos.slot_->first.disconnect();
- pos.group->second.erase(pos.slot_);
-}
-
-void named_slot_map::remove_disconnected_slots()
-{
- // Remove any disconnected slots
- group_iterator g = groups.begin();
- while (g != groups.end()) {
- slot_pair_iterator s = g->second.begin();
- while (s != g->second.end()) {
- if (s->first.connected()) ++s;
- else g->second.erase(s++);
- }
-
- // Clear out empty groups
- if (empty(g)) groups.erase(g++);
- else ++g;
- }
-}
-
-
-} } }
diff --git a/3rdParty/Boost/libs/signals/src/signal_base.cpp b/3rdParty/Boost/libs/signals/src/signal_base.cpp
deleted file mode 100644
index 759672d..0000000
--- a/3rdParty/Boost/libs/signals/src/signal_base.cpp
+++ /dev/null
@@ -1,189 +0,0 @@
-// Boost.Signals library
-
-// Copyright Douglas Gregor 2001-2004. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// For more information, see http://www.boost.org
-
-#define BOOST_SIGNALS_SOURCE
-
-#include <boost/signals/detail/signal_base.hpp>
-#include <cassert>
-
-namespace boost {
- namespace BOOST_SIGNALS_NAMESPACE {
- namespace detail {
- signal_base_impl::signal_base_impl(const compare_type& comp,
- const any& combiner)
- : call_depth(0),
- slots_(comp),
- combiner_(combiner)
- {
- flags.delayed_disconnect = false;
- flags.clearing = false;
- }
-
- signal_base_impl::~signal_base_impl()
- {
- // Set the "clearing" flag to ignore extraneous disconnect requests,
- // because all slots will be disconnected on destruction anyway.
- flags.clearing = true;
- }
-
- void signal_base_impl::disconnect_all_slots()
- {
- // Do nothing if we're already clearing the slot list
- if (flags.clearing)
- return;
-
- if (call_depth == 0) {
- // Clearing the slot list will disconnect all slots automatically
- temporarily_set_clearing set_clearing(this);
- slots_.clear();
- }
- else {
- // We can't actually remove elements from the slot list because there
- // are still iterators into the slot list that must not be
- // invalidated by this operation. So just disconnect each slot
- // without removing it from the slot list. When the call depth does
- // reach zero, the call list will be cleared.
- flags.delayed_disconnect = true;
- temporarily_set_clearing set_clearing(this);
- for (iterator i = slots_.begin(); i != slots_.end(); ++i) {
- i->first.disconnect();
- }
- }
- }
-
- connection
- signal_base_impl::
- connect_slot(const any& slot_,
- const stored_group& name,
- shared_ptr<slot_base::data_t> data,
- connect_position at)
- {
- // Transfer the burden of ownership to a local, scoped
- // connection.
- data->watch_bound_objects.set_controlling(false);
- scoped_connection safe_connection(data->watch_bound_objects);
-
- // Allocate storage for an iterator that will hold the point of
- // insertion of the slot into the list. This is used to later remove
- // the slot when it is disconnected.
- std::auto_ptr<iterator> saved_iter(new iterator);
-
- // Add the slot to the list.
- iterator pos =
- slots_.insert(name, data->watch_bound_objects, slot_, at);
-
- // The assignment operation here absolutely must not throw, which
- // intuitively makes sense (because any container's insert method
- // becomes impossible to use in an exception-safe manner without this
- // assumption), but doesn't appear to be mentioned in the standard.
- *saved_iter = pos;
-
- // Fill out the connection object appropriately. None of these
- // operations can throw
- data->watch_bound_objects.get_connection()->signal = this;
- data->watch_bound_objects.get_connection()->signal_data =
- saved_iter.release();
- data->watch_bound_objects.get_connection()->signal_disconnect =
- &signal_base_impl::slot_disconnected;
-
- // Make the copy of the connection in the list disconnect when it is
- // destroyed. The local, scoped connection is then released
- // because ownership has been transferred.
- pos->first.set_controlling();
- return safe_connection.release();
- }
-
- bool signal_base_impl::empty() const
- {
- // Disconnected slots may still be in the list of slots if
- // a) this is called while slots are being invoked (call_depth > 0)
- // b) an exception was thrown in remove_disconnected_slots
- for (iterator i = slots_.begin(); i != slots_.end(); ++i) {
- if (i->first.connected())
- return false;
- }
-
- return true;
- }
-
- std::size_t signal_base_impl::num_slots() const
- {
- // Disconnected slots may still be in the list of slots if
- // a) this is called while slots are being invoked (call_depth > 0)
- // b) an exception was thrown in remove_disconnected_slots
- std::size_t count = 0;
- for (iterator i = slots_.begin(); i != slots_.end(); ++i) {
- if (i->first.connected())
- ++count;
- }
- return count;
- }
-
- void signal_base_impl::disconnect(const stored_group& group)
- { slots_.disconnect(group); }
-
- void signal_base_impl::slot_disconnected(void* obj, void* data)
- {
- signal_base_impl* self = reinterpret_cast<signal_base_impl*>(obj);
-
- // We won't need the slot iterator after this
- std::auto_ptr<iterator> slot(reinterpret_cast<iterator*>(data));
-
- // If we're flags.clearing, we don't bother updating the list of slots
- if (!self->flags.clearing) {
- // If we're in a call, note the fact that a slot has been deleted so
- // we can come back later to remove the iterator
- if (self->call_depth > 0) {
- self->flags.delayed_disconnect = true;
- }
- else {
- // Just remove the slot now, it's safe
- self->slots_.erase(*slot);
- }
- }
- }
-
- void signal_base_impl::remove_disconnected_slots() const
- { slots_.remove_disconnected_slots(); }
-
- call_notification::
- call_notification(const shared_ptr<signal_base_impl>& b) :
- impl(b)
- {
- // A call will be made, so increment the call depth as a notification
- impl->call_depth++;
- }
-
- call_notification::~call_notification()
- {
- impl->call_depth--;
-
- // If the call depth is zero and we have some slots that have been
- // disconnected during the calls, remove those slots from the list
- if (impl->call_depth == 0 &&
- impl->flags.delayed_disconnect) {
- impl->remove_disconnected_slots();
- impl->flags.delayed_disconnect = false;
- }
- }
-
- signal_base::signal_base(const compare_type& comp, const any& combiner)
- : impl()
- {
- impl.reset(new signal_base_impl(comp, combiner));
- }
-
- signal_base::~signal_base()
- {
- }
-
- } // namespace detail
- } // namespace BOOST_SIGNALS_NAMESPACE
-} // namespace boost
-
diff --git a/3rdParty/Boost/libs/signals/src/slot.cpp b/3rdParty/Boost/libs/signals/src/slot.cpp
deleted file mode 100644
index 7c296d6..0000000
--- a/3rdParty/Boost/libs/signals/src/slot.cpp
+++ /dev/null
@@ -1,71 +0,0 @@
-// Boost.Signals library
-
-// Copyright Douglas Gregor 2001-2004. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// For more information, see http://www.boost.org
-
-#define BOOST_SIGNALS_SOURCE
-
-#include <boost/signals/slot.hpp>
-
-namespace boost {
- namespace BOOST_SIGNALS_NAMESPACE {
- namespace detail {
- void slot_base::create_connection()
- {
- // Create a new connection object
- basic_connection* con = new basic_connection();
-
- /* nothrow */ {
- // The signal portion isn't really necessary, except that we need a
- // signal for the connection to be connected.
- con->signal = static_cast<void*>(this);
- con->signal_data = 0;
- con->blocked_ = false ;
- con->signal_disconnect = &bound_object_destructed;
- }
-
- // This connection watches for destruction of bound objects. Note
- // that the reset routine will delete con if an allocation throws
- data->watch_bound_objects.reset(con);
-
- // We create a scoped connection, so that exceptions thrown while
- // adding bound objects will cause a cleanup of the bound objects
- // already connected.
- scoped_connection safe_connection(data->watch_bound_objects);
-
- // Now notify each of the bound objects that they are connected to this
- // slot.
- for(std::vector<const trackable*>::iterator i =
- data->bound_objects.begin();
- i != data->bound_objects.end(); ++i) {
- // Notify the object that the slot is connecting to it
- BOOST_SIGNALS_NAMESPACE::detail::bound_object binding;
- (*i)->signal_connected(data->watch_bound_objects, binding);
-
- // This will notify the bound object that the connection just made
- // should be disconnected if an exception is thrown before the
- // end of this iteration
- BOOST_SIGNALS_NAMESPACE::detail::auto_disconnect_bound_object
- disconnector(binding);
-
- // Add the binding to the list of bindings for the connection
- con->bound_objects.push_back(binding);
-
- // The connection object now knows about the bound object, so if an
- // exception is thrown later the connection object will notify the
- // bound object of the disconnection automatically
- disconnector.release();
- }
-
- // No exceptions will be thrown past this point.
- safe_connection.release();
-
- data->watch_bound_objects.set_controlling(true);
- }
- } // end namespace detail
- } // end namespace BOOST_SIGNALS_NAMESPACE
-} // end namespace boost
diff --git a/3rdParty/Boost/libs/signals/src/trackable.cpp b/3rdParty/Boost/libs/signals/src/trackable.cpp
deleted file mode 100644
index 4f63586..0000000
--- a/3rdParty/Boost/libs/signals/src/trackable.cpp
+++ /dev/null
@@ -1,59 +0,0 @@
-// Boost.Signals library
-
-// Copyright Douglas Gregor 2001-2004. Use, modification and
-// distribution is subject to the Boost Software License, Version
-// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// For more information, see http://www.boost.org
-
-#define BOOST_SIGNALS_SOURCE
-
-#include <boost/signals/trackable.hpp>
-#include <algorithm>
-
-namespace boost {
- namespace BOOST_SIGNALS_NAMESPACE {
- void trackable::signal_disconnected(void* obj, void* data)
- {
- trackable* self = reinterpret_cast<trackable*>(obj);
- connection_iterator* signal =
- reinterpret_cast<connection_iterator*>(data);
-
- // If we're dying, don't bother erasing the connection from the list;
- // it'll be gone anyway
- if (!self->dying) {
- self->connected_signals.erase(*signal);
- }
-
- // This iterator pointer won't ever be used again
- delete signal;
- }
-
- void
- trackable::signal_connected(connection c,
- BOOST_SIGNALS_NAMESPACE::detail::bound_object& binding) const
- {
- // Insert the connection
- connection_iterator pos =
- connected_signals.insert(connected_signals.end(), c);
-
- // Make this copy of the object disconnect when destroyed
- pos->set_controlling();
-
- binding.obj = const_cast<void*>(reinterpret_cast<const void*>(this));
- binding.data = reinterpret_cast<void*>(new connection_iterator(pos));
- binding.disconnect = &signal_disconnected;
- }
-
- trackable::~trackable()
- {
- dying = true;
- }
- } // end namespace BOOST_SIGNALS_NAMESPACE
-}
-
-#ifndef BOOST_MSVC
-// Explicit instantiations to keep in the library
-template class std::list<boost::BOOST_SIGNALS_NAMESPACE::connection>;
-#endif
diff --git a/3rdParty/Boost/libs/system/src/error_code.cpp b/3rdParty/Boost/libs/system/src/error_code.cpp
deleted file mode 100644
index 030ab70..0000000
--- a/3rdParty/Boost/libs/system/src/error_code.cpp
+++ /dev/null
@@ -1,433 +0,0 @@
-// error_code support implementation file ----------------------------------//
-
-// Copyright Beman Dawes 2002, 2006
-
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See library home page at http://www.boost.org/libs/system
-
-//----------------------------------------------------------------------------//
-
-#include <boost/config/warning_disable.hpp>
-
-// define BOOST_SYSTEM_SOURCE so that <boost/system/config.hpp> knows
-// the library is being built (possibly exporting rather than importing code)
-#define BOOST_SYSTEM_SOURCE
-
-#include <boost/system/config.hpp>
-#include <boost/system/error_code.hpp>
-#include <boost/cerrno.hpp>
-#include <vector>
-#include <cstdlib>
-#include <cassert>
-
-using namespace boost::system;
-using namespace boost::system::posix_error;
-
-#include <cstring> // for strerror/strerror_r
-
-# if defined( BOOST_WINDOWS_API )
-# include <windows.h>
-# ifndef ERROR_INCORRECT_SIZE
-# define ERROR_INCORRECT_SIZE ERROR_BAD_ARGUMENTS
-# endif
-# endif
-
-//----------------------------------------------------------------------------//
-
-namespace
-{
- // standard error categories ---------------------------------------------//
-
- class generic_error_category : public error_category
- {
- public:
- generic_error_category(){}
- const char * name() const;
- std::string message( int ev ) const;
- };
-
- class system_error_category : public error_category
- {
- public:
- system_error_category(){}
- const char * name() const;
- std::string message( int ev ) const;
- error_condition default_error_condition( int ev ) const;
- };
-
- // generic_error_category implementation ---------------------------------//
-
- const char * generic_error_category::name() const
- {
- return "generic";
- }
-
- std::string generic_error_category::message( int ev ) const
- {
- static std::string unknown_err( "Unknown error" );
- // strerror_r is preferred because it is always thread safe,
- // however, we fallback to strerror in certain cases because:
- // -- Windows doesn't provide strerror_r.
- // -- HP and Sundo provide strerror_r on newer systems, but there is
- // no way to tell if is available at runtime and in any case their
- // versions of strerror are thread safe anyhow.
- // -- Linux only sometimes provides strerror_r.
- // -- Tru64 provides strerror_r only when compiled -pthread.
- // -- VMS doesn't provide strerror_r, but on this platform, strerror is
- // thread safe.
- # if defined(BOOST_WINDOWS_API) || defined(__hpux) || defined(__sun)\
- || (defined(__linux) && (!defined(__USE_XOPEN2K) || defined(BOOST_SYSTEM_USE_STRERROR)))\
- || (defined(__osf__) && !defined(_REENTRANT))\
- || (defined(__vms))\
- || (defined(__QNXNTO__))
- const char * c_str = std::strerror( ev );
- return c_str
- ? std::string( c_str )
- : unknown_err;
- # else // use strerror_r
- char buf[64];
- char * bp = buf;
- std::size_t sz = sizeof(buf);
- # if defined(__CYGWIN__) || defined(__USE_GNU)
- // Oddball version of strerror_r
- const char * c_str = strerror_r( ev, bp, sz );
- return c_str
- ? std::string( c_str )
- : unknown_err;
- # else
- // POSIX version of strerror_r
- int result;
- for (;;)
- {
- // strerror_r returns 0 on success, otherwise ERANGE if buffer too small,
- // invalid_argument if ev not a valid error number
- # if defined (__sgi)
- const char * c_str = strerror( ev );
- result = 0;
- return c_str
- ? std::string( c_str )
- : unknown_err;
- # else
- result = strerror_r( ev, bp, sz );
- # endif
- if (result == 0 )
- break;
- else
- {
- # if defined(__linux)
- // Linux strerror_r returns -1 on error, with error number in errno
- result = errno;
- # endif
- if ( result != ERANGE ) break;
- if ( sz > sizeof(buf) ) std::free( bp );
- sz *= 2;
- if ( (bp = static_cast<char*>(std::malloc( sz ))) == 0 )
- return std::string( "ENOMEM" );
- }
- }
- std::string msg;
- try
- {
- msg = ( ( result == invalid_argument ) ? "Unknown error" : bp );
- }
-
-# ifndef BOOST_NO_EXCEPTIONS
- // See ticket #2098
- catch(...)
- {
- // just eat the exception
- }
-# endif
-
- if ( sz > sizeof(buf) ) std::free( bp );
- sz = 0;
- return msg;
- # endif // else POSIX version of strerror_r
- # endif // else use strerror_r
- }
- // system_error_category implementation --------------------------------//
-
- const char * system_error_category::name() const
- {
- return "system";
- }
-
- error_condition system_error_category::default_error_condition( int ev ) const
- {
- switch ( ev )
- {
- case 0: return make_error_condition( success );
- # if defined(BOOST_POSIX_API)
- // POSIX-like O/S -> posix_errno decode table ---------------------------//
- case E2BIG: return make_error_condition( argument_list_too_long );
- case EACCES: return make_error_condition( permission_denied );
- case EADDRINUSE: return make_error_condition( address_in_use );
- case EADDRNOTAVAIL: return make_error_condition( address_not_available );
- case EAFNOSUPPORT: return make_error_condition( address_family_not_supported );
- case EAGAIN: return make_error_condition( resource_unavailable_try_again );
-# if EALREADY != EBUSY // EALREADY and EBUSY are the same on QNX Neutrino
- case EALREADY: return make_error_condition( connection_already_in_progress );
-# endif
- case EBADF: return make_error_condition( bad_file_descriptor );
- case EBADMSG: return make_error_condition( bad_message );
- case EBUSY: return make_error_condition( device_or_resource_busy );
- case ECANCELED: return make_error_condition( operation_canceled );
- case ECHILD: return make_error_condition( no_child_process );
- case ECONNABORTED: return make_error_condition( connection_aborted );
- case ECONNREFUSED: return make_error_condition( connection_refused );
- case ECONNRESET: return make_error_condition( connection_reset );
- case EDEADLK: return make_error_condition( resource_deadlock_would_occur );
- case EDESTADDRREQ: return make_error_condition( destination_address_required );
- case EDOM: return make_error_condition( argument_out_of_domain );
- case EEXIST: return make_error_condition( file_exists );
- case EFAULT: return make_error_condition( bad_address );
- case EFBIG: return make_error_condition( file_too_large );
- case EHOSTUNREACH: return make_error_condition( host_unreachable );
- case EIDRM: return make_error_condition( identifier_removed );
- case EILSEQ: return make_error_condition( illegal_byte_sequence );
- case EINPROGRESS: return make_error_condition( operation_in_progress );
- case EINTR: return make_error_condition( interrupted );
- case EINVAL: return make_error_condition( invalid_argument );
- case EIO: return make_error_condition( io_error );
- case EISCONN: return make_error_condition( already_connected );
- case EISDIR: return make_error_condition( is_a_directory );
- case ELOOP: return make_error_condition( too_many_synbolic_link_levels );
- case EMFILE: return make_error_condition( too_many_files_open );
- case EMLINK: return make_error_condition( too_many_links );
- case EMSGSIZE: return make_error_condition( message_size );
- case ENAMETOOLONG: return make_error_condition( filename_too_long );
- case ENETDOWN: return make_error_condition( network_down );
- case ENETRESET: return make_error_condition( network_reset );
- case ENETUNREACH: return make_error_condition( network_unreachable );
- case ENFILE: return make_error_condition( too_many_files_open_in_system );
- case ENOBUFS: return make_error_condition( no_buffer_space );
- case ENODATA: return make_error_condition( no_message_available );
- case ENODEV: return make_error_condition( no_such_device );
- case ENOENT: return make_error_condition( no_such_file_or_directory );
- case ENOEXEC: return make_error_condition( executable_format_error );
- case ENOLCK: return make_error_condition( no_lock_available );
- case ENOLINK: return make_error_condition( no_link );
- case ENOMEM: return make_error_condition( not_enough_memory );
- case ENOMSG: return make_error_condition( no_message );
- case ENOPROTOOPT: return make_error_condition( no_protocol_option );
- case ENOSPC: return make_error_condition( no_space_on_device );
- case ENOSR: return make_error_condition( no_stream_resources );
- case ENOSTR: return make_error_condition( not_a_stream );
- case ENOSYS: return make_error_condition( function_not_supported );
- case ENOTCONN: return make_error_condition( not_connected );
- case ENOTDIR: return make_error_condition( not_a_directory );
- # if ENOTEMPTY != EEXIST // AIX treats ENOTEMPTY and EEXIST as the same value
- case ENOTEMPTY: return make_error_condition( directory_not_empty );
- # endif // ENOTEMPTY != EEXIST
- case ENOTRECOVERABLE: return make_error_condition( state_not_recoverable );
- case ENOTSOCK: return make_error_condition( not_a_socket );
- case ENOTSUP: return make_error_condition( not_supported );
- case ENOTTY: return make_error_condition( inappropriate_io_control_operation );
- case ENXIO: return make_error_condition( no_such_device_or_address );
- # if EOPNOTSUPP != ENOTSUP
- case EOPNOTSUPP: return make_error_condition( operation_not_supported );
- # endif // EOPNOTSUPP != ENOTSUP
- case EOVERFLOW: return make_error_condition( value_too_large );
- case EOWNERDEAD: return make_error_condition( owner_dead );
- case EPERM: return make_error_condition( operation_not_permitted );
- case EPIPE: return make_error_condition( broken_pipe );
- case EPROTO: return make_error_condition( protocol_error );
- case EPROTONOSUPPORT: return make_error_condition( protocol_not_supported );
- case EPROTOTYPE: return make_error_condition( wrong_protocol_type );
- case ERANGE: return make_error_condition( result_out_of_range );
- case EROFS: return make_error_condition( read_only_file_system );
- case ESPIPE: return make_error_condition( invalid_seek );
- case ESRCH: return make_error_condition( no_such_process );
- case ETIME: return make_error_condition( stream_timeout );
- case ETIMEDOUT: return make_error_condition( timed_out );
- case ETXTBSY: return make_error_condition( text_file_busy );
- # if EAGAIN != EWOULDBLOCK
- case EWOULDBLOCK: return make_error_condition( operation_would_block );
- # endif // EAGAIN != EWOULDBLOCK
- case EXDEV: return make_error_condition( cross_device_link );
- #else
- // Windows system -> posix_errno decode table ---------------------------//
- // see WinError.h comments for descriptions of errors
- case ERROR_ACCESS_DENIED: return make_error_condition( permission_denied );
- case ERROR_ALREADY_EXISTS: return make_error_condition( file_exists );
- case ERROR_BAD_UNIT: return make_error_condition( no_such_device );
- case ERROR_BUFFER_OVERFLOW: return make_error_condition( filename_too_long );
- case ERROR_BUSY: return make_error_condition( device_or_resource_busy );
- case ERROR_BUSY_DRIVE: return make_error_condition( device_or_resource_busy );
- case ERROR_CANNOT_MAKE: return make_error_condition( permission_denied );
- case ERROR_CANTOPEN: return make_error_condition( io_error );
- case ERROR_CANTREAD: return make_error_condition( io_error );
- case ERROR_CANTWRITE: return make_error_condition( io_error );
- case ERROR_CURRENT_DIRECTORY: return make_error_condition( permission_denied );
- case ERROR_DEV_NOT_EXIST: return make_error_condition( no_such_device );
- case ERROR_DEVICE_IN_USE: return make_error_condition( device_or_resource_busy );
- case ERROR_DIR_NOT_EMPTY: return make_error_condition( directory_not_empty );
- case ERROR_DIRECTORY: return make_error_condition( invalid_argument ); // WinError.h: "The directory name is invalid"
- case ERROR_DISK_FULL: return make_error_condition( no_space_on_device );
- case ERROR_FILE_EXISTS: return make_error_condition( file_exists );
- case ERROR_FILE_NOT_FOUND: return make_error_condition( no_such_file_or_directory );
- case ERROR_HANDLE_DISK_FULL: return make_error_condition( no_space_on_device );
- case ERROR_INVALID_ACCESS: return make_error_condition( permission_denied );
- case ERROR_INVALID_DRIVE: return make_error_condition( no_such_device );
- case ERROR_INVALID_FUNCTION: return make_error_condition( function_not_supported );
- case ERROR_INVALID_HANDLE: return make_error_condition( invalid_argument );
- case ERROR_INVALID_NAME: return make_error_condition( invalid_argument );
- case ERROR_LOCK_VIOLATION: return make_error_condition( no_lock_available );
- case ERROR_LOCKED: return make_error_condition( no_lock_available );
- case ERROR_NEGATIVE_SEEK: return make_error_condition( invalid_argument );
- case ERROR_NOACCESS: return make_error_condition( permission_denied );
- case ERROR_NOT_ENOUGH_MEMORY: return make_error_condition( not_enough_memory );
- case ERROR_NOT_READY: return make_error_condition( resource_unavailable_try_again );
- case ERROR_NOT_SAME_DEVICE: return make_error_condition( cross_device_link );
- case ERROR_OPEN_FAILED: return make_error_condition( io_error );
- case ERROR_OPEN_FILES: return make_error_condition( device_or_resource_busy );
- case ERROR_OPERATION_ABORTED: return make_error_condition( operation_canceled );
- case ERROR_OUTOFMEMORY: return make_error_condition( not_enough_memory );
- case ERROR_PATH_NOT_FOUND: return make_error_condition( no_such_file_or_directory );
- case ERROR_READ_FAULT: return make_error_condition( io_error );
- case ERROR_RETRY: return make_error_condition( resource_unavailable_try_again );
- case ERROR_SEEK: return make_error_condition( io_error );
- case ERROR_SHARING_VIOLATION: return make_error_condition( permission_denied );
- case ERROR_TOO_MANY_OPEN_FILES: return make_error_condition( too_many_files_open );
- case ERROR_WRITE_FAULT: return make_error_condition( io_error );
- case ERROR_WRITE_PROTECT: return make_error_condition( permission_denied );
- case WSAEACCES: return make_error_condition( permission_denied );
- case WSAEADDRINUSE: return make_error_condition( address_in_use );
- case WSAEADDRNOTAVAIL: return make_error_condition( address_not_available );
- case WSAEAFNOSUPPORT: return make_error_condition( address_family_not_supported );
- case WSAEALREADY: return make_error_condition( connection_already_in_progress );
- case WSAEBADF: return make_error_condition( bad_file_descriptor );
- case WSAECONNABORTED: return make_error_condition( connection_aborted );
- case WSAECONNREFUSED: return make_error_condition( connection_refused );
- case WSAECONNRESET: return make_error_condition( connection_reset );
- case WSAEDESTADDRREQ: return make_error_condition( destination_address_required );
- case WSAEFAULT: return make_error_condition( bad_address );
- case WSAEHOSTUNREACH: return make_error_condition( host_unreachable );
- case WSAEINPROGRESS: return make_error_condition( operation_in_progress );
- case WSAEINTR: return make_error_condition( interrupted );
- case WSAEINVAL: return make_error_condition( invalid_argument );
- case WSAEISCONN: return make_error_condition( already_connected );
- case WSAEMFILE: return make_error_condition( too_many_files_open );
- case WSAEMSGSIZE: return make_error_condition( message_size );
- case WSAENAMETOOLONG: return make_error_condition( filename_too_long );
- case WSAENETDOWN: return make_error_condition( network_down );
- case WSAENETRESET: return make_error_condition( network_reset );
- case WSAENETUNREACH: return make_error_condition( network_unreachable );
- case WSAENOBUFS: return make_error_condition( no_buffer_space );
- case WSAENOPROTOOPT: return make_error_condition( no_protocol_option );
- case WSAENOTCONN: return make_error_condition( not_connected );
- case WSAENOTSOCK: return make_error_condition( not_a_socket );
- case WSAEOPNOTSUPP: return make_error_condition( operation_not_supported );
- case WSAEPROTONOSUPPORT: return make_error_condition( protocol_not_supported );
- case WSAEPROTOTYPE: return make_error_condition( wrong_protocol_type );
- case WSAETIMEDOUT: return make_error_condition( timed_out );
- case WSAEWOULDBLOCK: return make_error_condition( operation_would_block );
- #endif
- default: return error_condition( ev, system_category );
- }
- }
-
-# if !defined( BOOST_WINDOWS_API )
-
- std::string system_error_category::message( int ev ) const
- {
- return generic_category.message( ev );
- }
-# else
-// TODO:
-
-//Some quick notes on the implementation (sorry for the noise if
-//someone has already mentioned them):
-//
-//- The ::LocalFree() usage isn't exception safe.
-//
-//See:
-//
-//<http://boost.cvs.sourceforge.net/boost/boost/boost/asio/system_exception.hpp?revision=1.1&view=markup>
-//
-//in the implementation of what() for an example.
-//
-//Cheers,
-//Chris
- std::string system_error_category::message( int ev ) const
- {
-# ifndef BOOST_NO_ANSI_APIS
- LPVOID lpMsgBuf;
- DWORD retval = ::FormatMessageA(
- FORMAT_MESSAGE_ALLOCATE_BUFFER |
- FORMAT_MESSAGE_FROM_SYSTEM |
- FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL,
- ev,
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
- (LPSTR) &lpMsgBuf,
- 0,
- NULL
- );
- if (retval == 0)
- return std::string("Unknown error");
-
- std::string str( static_cast<LPCSTR>(lpMsgBuf) );
- ::LocalFree( lpMsgBuf ); // free the buffer
-# else // WinCE workaround
- LPVOID lpMsgBuf;
- DWORD retval = ::FormatMessageW(
- FORMAT_MESSAGE_ALLOCATE_BUFFER |
- FORMAT_MESSAGE_FROM_SYSTEM |
- FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL,
- ev,
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
- (LPWSTR) &lpMsgBuf,
- 0,
- NULL
- );
- if (retval == 0)
- return std::string("Unknown error");
-
- int num_chars = (wcslen( static_cast<LPCWSTR>(lpMsgBuf) ) + 1) * 2;
- LPSTR narrow_buffer = (LPSTR)_alloca( num_chars );
- if (::WideCharToMultiByte(CP_ACP, 0, static_cast<LPCWSTR>(lpMsgBuf), -1, narrow_buffer, num_chars, NULL, NULL) == 0)
- return std::string("Unknown error");
-
- std::string str( narrow_buffer );
- ::LocalFree( lpMsgBuf ); // free the buffer
-# endif
- while ( str.size()
- && (str[str.size()-1] == '\n' || str[str.size()-1] == '\r') )
- str.erase( str.size()-1 );
- if ( str.size() && str[str.size()-1] == '.' )
- { str.erase( str.size()-1 ); }
- return str;
- }
-# endif
-
-} // unnamed namespace
-
-namespace boost
-{
- namespace system
- {
-
- BOOST_SYSTEM_DECL error_code throws; // "throw on error" special error_code;
- // note that it doesn't matter if this
- // isn't initialized before use since
- // the only use is to take its
- // address for comparison purposes
-
- BOOST_SYSTEM_DECL const error_category & get_system_category()
- {
- static const system_error_category system_category_const;
- return system_category_const;
- }
-
- BOOST_SYSTEM_DECL const error_category & get_generic_category()
- {
- static const generic_error_category generic_category_const;
- return generic_category_const;
- }
-
- } // namespace system
-} // namespace boost
diff --git a/3rdParty/Boost/libs/thread/src/pthread/exceptions.cpp b/3rdParty/Boost/libs/thread/src/pthread/exceptions.cpp
deleted file mode 100644
index 8881303..0000000
--- a/3rdParty/Boost/libs/thread/src/pthread/exceptions.cpp
+++ /dev/null
@@ -1,124 +0,0 @@
-// Copyright (C) 2001-2003
-// William E. Kempf
-//
-// 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)
-
-#include <boost/thread/detail/config.hpp>
-
-#include <boost/thread/exceptions.hpp>
-#include <cstring>
-#include <string>
-
-namespace boost {
-
-thread_exception::thread_exception()
- : m_sys_err(0)
-{
-}
-
-thread_exception::thread_exception(int sys_err_code)
- : m_sys_err(sys_err_code)
-{
-}
-
-thread_exception::~thread_exception() throw()
-{
-}
-
-int thread_exception::native_error() const
-{
- return m_sys_err;
-}
-
-lock_error::lock_error()
-{
-}
-
-lock_error::lock_error(int sys_err_code)
- : thread_exception(sys_err_code)
-{
-}
-
-lock_error::~lock_error() throw()
-{
-}
-
-const char* lock_error::what() const throw()
-{
- return "boost::lock_error";
-}
-
-thread_resource_error::thread_resource_error()
-{
-}
-
-thread_resource_error::thread_resource_error(int sys_err_code)
- : thread_exception(sys_err_code)
-{
-}
-
-thread_resource_error::~thread_resource_error() throw()
-{
-}
-
-const char* thread_resource_error::what() const throw()
-{
- return "boost::thread_resource_error";
-}
-
-unsupported_thread_option::unsupported_thread_option()
-{
-}
-
-unsupported_thread_option::unsupported_thread_option(int sys_err_code)
- : thread_exception(sys_err_code)
-{
-}
-
-unsupported_thread_option::~unsupported_thread_option() throw()
-{
-}
-
-const char* unsupported_thread_option::what() const throw()
-{
- return "boost::unsupported_thread_option";
-}
-
-invalid_thread_argument::invalid_thread_argument()
-{
-}
-
-invalid_thread_argument::invalid_thread_argument(int sys_err_code)
- : thread_exception(sys_err_code)
-{
-}
-
-invalid_thread_argument::~invalid_thread_argument() throw()
-{
-}
-
-const char* invalid_thread_argument::what() const throw()
-{
- return "boost::invalid_thread_argument";
-}
-
-thread_permission_error::thread_permission_error()
-{
-}
-
-thread_permission_error::thread_permission_error(int sys_err_code)
- : thread_exception(sys_err_code)
-{
-}
-
-thread_permission_error::~thread_permission_error() throw()
-{
-}
-
-const char* thread_permission_error::what() const throw()
-{
- return "boost::thread_permission_error";
-}
-
-} // namespace boost
diff --git a/3rdParty/Boost/libs/thread/src/pthread/once.cpp b/3rdParty/Boost/libs/thread/src/pthread/once.cpp
deleted file mode 100644
index 6e3722a..0000000
--- a/3rdParty/Boost/libs/thread/src/pthread/once.cpp
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright (C) 2007 Anthony Williams
-//
-// 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)
-
-#define __STDC_CONSTANT_MACROS
-#include <boost/thread/once.hpp>
-#include <boost/assert.hpp>
-#include <pthread.h>
-#include <stdlib.h>
-
-namespace boost
-{
- namespace detail
- {
- BOOST_THREAD_DECL boost::uintmax_t once_global_epoch=UINTMAX_C(~0);
- BOOST_THREAD_DECL pthread_mutex_t once_epoch_mutex=PTHREAD_MUTEX_INITIALIZER;
- BOOST_THREAD_DECL pthread_cond_t once_epoch_cv = PTHREAD_COND_INITIALIZER;
-
- namespace
- {
- pthread_key_t epoch_tss_key;
- pthread_once_t epoch_tss_key_flag=PTHREAD_ONCE_INIT;
-
- extern "C" void delete_epoch_tss_data(void* data)
- {
- free(data);
- }
-
- extern "C" void create_epoch_tss_key()
- {
- BOOST_VERIFY(!pthread_key_create(&epoch_tss_key,delete_epoch_tss_data));
- }
-
- }
-
- boost::uintmax_t& get_once_per_thread_epoch()
- {
- BOOST_VERIFY(!pthread_once(&epoch_tss_key_flag,create_epoch_tss_key));
- void* data=pthread_getspecific(epoch_tss_key);
- if(!data)
- {
- data=malloc(sizeof(boost::uintmax_t));
- BOOST_VERIFY(!pthread_setspecific(epoch_tss_key,data));
- *static_cast<boost::uintmax_t*>(data)=UINTMAX_C(~0);
- }
- return *static_cast<boost::uintmax_t*>(data);
- }
- }
-
-}
diff --git a/3rdParty/Boost/libs/thread/src/pthread/thread.cpp b/3rdParty/Boost/libs/thread/src/pthread/thread.cpp
deleted file mode 100644
index cc71d97..0000000
--- a/3rdParty/Boost/libs/thread/src/pthread/thread.cpp
+++ /dev/null
@@ -1,678 +0,0 @@
-// Copyright (C) 2001-2003
-// William E. Kempf
-// Copyright (C) 2007-8 Anthony Williams
-//
-// 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)
-
-#include <boost/thread/detail/config.hpp>
-
-#include <boost/thread/thread.hpp>
-#include <boost/thread/xtime.hpp>
-#include <boost/thread/condition.hpp>
-#include <boost/thread/locks.hpp>
-#include <boost/thread/once.hpp>
-#include <boost/thread/tss.hpp>
-#ifdef __linux__
-#include <sys/sysinfo.h>
-#elif defined(__APPLE__) || defined(__FreeBSD__)
-#include <sys/types.h>
-#include <sys/sysctl.h>
-#elif defined BOOST_HAS_UNISTD_H
-#include <unistd.h>
-#endif
-
-#include "timeconv.inl"
-
-namespace boost
-{
- namespace detail
- {
- thread_data_base::~thread_data_base()
- {}
-
- struct thread_exit_callback_node
- {
- boost::detail::thread_exit_function_base* func;
- thread_exit_callback_node* next;
-
- thread_exit_callback_node(boost::detail::thread_exit_function_base* func_,
- thread_exit_callback_node* next_):
- func(func_),next(next_)
- {}
- };
-
- struct tss_data_node
- {
- void const* key;
- boost::shared_ptr<boost::detail::tss_cleanup_function> func;
- void* value;
- tss_data_node* next;
-
- tss_data_node(void const* key_,boost::shared_ptr<boost::detail::tss_cleanup_function> func_,void* value_,
- tss_data_node* next_):
- key(key_),func(func_),value(value_),next(next_)
- {}
- };
-
- namespace
- {
- boost::once_flag current_thread_tls_init_flag=BOOST_ONCE_INIT;
- pthread_key_t current_thread_tls_key;
-
- extern "C"
- {
- void tls_destructor(void* data)
- {
- boost::detail::thread_data_base* thread_info=static_cast<boost::detail::thread_data_base*>(data);
- if(thread_info)
- {
- while(thread_info->tss_data || thread_info->thread_exit_callbacks)
- {
- while(thread_info->thread_exit_callbacks)
- {
- detail::thread_exit_callback_node* const current_node=thread_info->thread_exit_callbacks;
- thread_info->thread_exit_callbacks=current_node->next;
- if(current_node->func)
- {
- (*current_node->func)();
- delete current_node->func;
- }
- delete current_node;
- }
- while(thread_info->tss_data)
- {
- detail::tss_data_node* const current_node=thread_info->tss_data;
- thread_info->tss_data=current_node->next;
- if(current_node->func)
- {
- (*current_node->func)(current_node->value);
- }
- delete current_node;
- }
- }
- thread_info->self.reset();
- }
- }
- }
-
-
- void create_current_thread_tls_key()
- {
- BOOST_VERIFY(!pthread_key_create(&current_thread_tls_key,&tls_destructor));
- }
- }
-
- boost::detail::thread_data_base* get_current_thread_data()
- {
- boost::call_once(current_thread_tls_init_flag,create_current_thread_tls_key);
- return (boost::detail::thread_data_base*)pthread_getspecific(current_thread_tls_key);
- }
-
- void set_current_thread_data(detail::thread_data_base* new_data)
- {
- boost::call_once(current_thread_tls_init_flag,create_current_thread_tls_key);
- BOOST_VERIFY(!pthread_setspecific(current_thread_tls_key,new_data));
- }
- }
-
- namespace
- {
- extern "C"
- {
- void* thread_proxy(void* param)
- {
- boost::detail::thread_data_ptr thread_info = static_cast<boost::detail::thread_data_base*>(param)->self;
- thread_info->self.reset();
- detail::set_current_thread_data(thread_info.get());
- try
- {
- thread_info->run();
- }
- catch(thread_interrupted const&)
- {
- }
-// Removed as it stops the debugger identifying the cause of the exception
-// Unhandled exceptions still cause the application to terminate
-// catch(...)
-// {
-// std::terminate();
-// }
-
- detail::tls_destructor(thread_info.get());
- detail::set_current_thread_data(0);
- boost::lock_guard<boost::mutex> lock(thread_info->data_mutex);
- thread_info->done=true;
- thread_info->done_condition.notify_all();
- return 0;
- }
- }
-
- struct externally_launched_thread:
- detail::thread_data_base
- {
- externally_launched_thread()
- {
- interrupt_enabled=false;
- }
-
- void run()
- {}
-
- private:
- externally_launched_thread(externally_launched_thread&);
- void operator=(externally_launched_thread&);
- };
-
- detail::thread_data_base* make_external_thread_data()
- {
- detail::thread_data_base* const me(new externally_launched_thread());
- me->self.reset(me);
- set_current_thread_data(me);
- return me;
- }
-
-
- detail::thread_data_base* get_or_make_current_thread_data()
- {
- detail::thread_data_base* current_thread_data(detail::get_current_thread_data());
- if(!current_thread_data)
- {
- current_thread_data=make_external_thread_data();
- }
- return current_thread_data;
- }
-
- }
-
-
- thread::thread()
- {}
-
- void thread::start_thread()
- {
- thread_info->self=thread_info;
- int const res = pthread_create(&thread_info->thread_handle, 0, &thread_proxy, thread_info.get());
- if (res != 0)
- {
- thread_info->self.reset();
- throw thread_resource_error();
- }
- }
-
- thread::~thread()
- {
- detach();
- }
-
- detail::thread_data_ptr thread::get_thread_info() const
- {
- lock_guard<mutex> l(thread_info_mutex);
- return thread_info;
- }
-
- void thread::join()
- {
- detail::thread_data_ptr const local_thread_info=get_thread_info();
- if(local_thread_info)
- {
- bool do_join=false;
-
- {
- unique_lock<mutex> lock(local_thread_info->data_mutex);
- while(!local_thread_info->done)
- {
- local_thread_info->done_condition.wait(lock);
- }
- do_join=!local_thread_info->join_started;
-
- if(do_join)
- {
- local_thread_info->join_started=true;
- }
- else
- {
- while(!local_thread_info->joined)
- {
- local_thread_info->done_condition.wait(lock);
- }
- }
- }
- if(do_join)
- {
- void* result=0;
- BOOST_VERIFY(!pthread_join(local_thread_info->thread_handle,&result));
- lock_guard<mutex> lock(local_thread_info->data_mutex);
- local_thread_info->joined=true;
- local_thread_info->done_condition.notify_all();
- }
-
- lock_guard<mutex> l1(thread_info_mutex);
- if(thread_info==local_thread_info)
- {
- thread_info.reset();
- }
- }
- }
-
- bool thread::timed_join(system_time const& wait_until)
- {
- detail::thread_data_ptr const local_thread_info=get_thread_info();
- if(local_thread_info)
- {
- bool do_join=false;
-
- {
- unique_lock<mutex> lock(local_thread_info->data_mutex);
- while(!local_thread_info->done)
- {
- if(!local_thread_info->done_condition.timed_wait(lock,wait_until))
- {
- return false;
- }
- }
- do_join=!local_thread_info->join_started;
-
- if(do_join)
- {
- local_thread_info->join_started=true;
- }
- else
- {
- while(!local_thread_info->joined)
- {
- local_thread_info->done_condition.wait(lock);
- }
- }
- }
- if(do_join)
- {
- void* result=0;
- BOOST_VERIFY(!pthread_join(local_thread_info->thread_handle,&result));
- lock_guard<mutex> lock(local_thread_info->data_mutex);
- local_thread_info->joined=true;
- local_thread_info->done_condition.notify_all();
- }
-
- lock_guard<mutex> l1(thread_info_mutex);
- if(thread_info==local_thread_info)
- {
- thread_info.reset();
- }
- }
- return true;
- }
-
- bool thread::joinable() const
- {
- return get_thread_info();
- }
-
-
- void thread::detach()
- {
- detail::thread_data_ptr local_thread_info;
- {
- lock_guard<mutex> l1(thread_info_mutex);
- thread_info.swap(local_thread_info);
- }
-
- if(local_thread_info)
- {
- lock_guard<mutex> lock(local_thread_info->data_mutex);
- if(!local_thread_info->join_started)
- {
- BOOST_VERIFY(!pthread_detach(local_thread_info->thread_handle));
- local_thread_info->join_started=true;
- local_thread_info->joined=true;
- }
- }
- }
-
- namespace this_thread
- {
-
- void sleep(const system_time& st)
- {
- detail::thread_data_base* const thread_info=detail::get_current_thread_data();
-
- if(thread_info)
- {
- unique_lock<mutex> lk(thread_info->sleep_mutex);
- while(thread_info->sleep_condition.timed_wait(lk,st));
- }
- else
- {
- xtime const xt=get_xtime(st);
-
- for (int foo=0; foo < 5; ++foo)
- {
-# if defined(BOOST_HAS_PTHREAD_DELAY_NP)
- timespec ts;
- to_timespec_duration(xt, ts);
- BOOST_VERIFY(!pthread_delay_np(&ts));
-# elif defined(BOOST_HAS_NANOSLEEP)
- timespec ts;
- to_timespec_duration(xt, ts);
-
- // nanosleep takes a timespec that is an offset, not
- // an absolute time.
- nanosleep(&ts, 0);
-# else
- mutex mx;
- mutex::scoped_lock lock(mx);
- condition cond;
- cond.timed_wait(lock, xt);
-# endif
- xtime cur;
- xtime_get(&cur, TIME_UTC);
- if (xtime_cmp(xt, cur) <= 0)
- return;
- }
- }
- }
-
- void yield()
- {
-# if defined(BOOST_HAS_SCHED_YIELD)
- BOOST_VERIFY(!sched_yield());
-# elif defined(BOOST_HAS_PTHREAD_YIELD)
- BOOST_VERIFY(!pthread_yield());
-# else
- xtime xt;
- xtime_get(&xt, TIME_UTC);
- sleep(xt);
-# endif
- }
- }
-
- unsigned thread::hardware_concurrency()
- {
-#if defined(PTW32_VERSION) || defined(__hpux)
- return pthread_num_processors_np();
-#elif defined(__linux__)
- return get_nprocs();
-#elif defined(__APPLE__) || defined(__FreeBSD__)
- int count;
- size_t size=sizeof(count);
- return sysctlbyname("hw.ncpu",&count,&size,NULL,0)?0:count;
-#elif defined(BOOST_HAS_UNISTD_H) && defined(_SC_NPROCESSORS_ONLN)
- int const count=sysconf(_SC_NPROCESSORS_ONLN);
- return (count>0)?count:0;
-#else
- return 0;
-#endif
- }
-
- thread::id thread::get_id() const
- {
- detail::thread_data_ptr const local_thread_info=get_thread_info();
- if(local_thread_info)
- {
- return id(local_thread_info);
- }
- else
- {
- return id();
- }
- }
-
- void thread::interrupt()
- {
- detail::thread_data_ptr const local_thread_info=get_thread_info();
- if(local_thread_info)
- {
- lock_guard<mutex> lk(local_thread_info->data_mutex);
- local_thread_info->interrupt_requested=true;
- if(local_thread_info->current_cond)
- {
- BOOST_VERIFY(!pthread_cond_broadcast(local_thread_info->current_cond));
- }
- }
- }
-
- bool thread::interruption_requested() const
- {
- detail::thread_data_ptr const local_thread_info=get_thread_info();
- if(local_thread_info)
- {
- lock_guard<mutex> lk(local_thread_info->data_mutex);
- return local_thread_info->interrupt_requested;
- }
- else
- {
- return false;
- }
- }
-
- thread::native_handle_type thread::native_handle()
- {
- detail::thread_data_ptr const local_thread_info=get_thread_info();
- if(local_thread_info)
- {
- lock_guard<mutex> lk(local_thread_info->data_mutex);
- return local_thread_info->thread_handle;
- }
- else
- {
- return pthread_t();
- }
- }
-
-
-
- namespace this_thread
- {
- thread::id get_id()
- {
- boost::detail::thread_data_base* const thread_info=get_or_make_current_thread_data();
- return thread::id(thread_info?thread_info->shared_from_this():detail::thread_data_ptr());
- }
-
- void interruption_point()
- {
- boost::detail::thread_data_base* const thread_info=detail::get_current_thread_data();
- if(thread_info && thread_info->interrupt_enabled)
- {
- lock_guard<mutex> lg(thread_info->data_mutex);
- if(thread_info->interrupt_requested)
- {
- thread_info->interrupt_requested=false;
- throw thread_interrupted();
- }
- }
- }
-
- bool interruption_enabled()
- {
- boost::detail::thread_data_base* const thread_info=detail::get_current_thread_data();
- return thread_info && thread_info->interrupt_enabled;
- }
-
- bool interruption_requested()
- {
- boost::detail::thread_data_base* const thread_info=detail::get_current_thread_data();
- if(!thread_info)
- {
- return false;
- }
- else
- {
- lock_guard<mutex> lg(thread_info->data_mutex);
- return thread_info->interrupt_requested;
- }
- }
-
- disable_interruption::disable_interruption():
- interruption_was_enabled(interruption_enabled())
- {
- if(interruption_was_enabled)
- {
- detail::get_current_thread_data()->interrupt_enabled=false;
- }
- }
-
- disable_interruption::~disable_interruption()
- {
- if(detail::get_current_thread_data())
- {
- detail::get_current_thread_data()->interrupt_enabled=interruption_was_enabled;
- }
- }
-
- restore_interruption::restore_interruption(disable_interruption& d)
- {
- if(d.interruption_was_enabled)
- {
- detail::get_current_thread_data()->interrupt_enabled=true;
- }
- }
-
- restore_interruption::~restore_interruption()
- {
- if(detail::get_current_thread_data())
- {
- detail::get_current_thread_data()->interrupt_enabled=false;
- }
- }
- }
-
- namespace detail
- {
- void add_thread_exit_function(thread_exit_function_base* func)
- {
- detail::thread_data_base* const current_thread_data(get_or_make_current_thread_data());
- thread_exit_callback_node* const new_node=
- new thread_exit_callback_node(func,current_thread_data->thread_exit_callbacks);
- current_thread_data->thread_exit_callbacks=new_node;
- }
-
- tss_data_node* find_tss_data(void const* key)
- {
- detail::thread_data_base* const current_thread_data(get_current_thread_data());
- if(current_thread_data)
- {
- detail::tss_data_node* current_node=current_thread_data->tss_data;
- while(current_node)
- {
- if(current_node->key==key)
- {
- return current_node;
- }
- current_node=current_node->next;
- }
- }
- return NULL;
- }
-
- void* get_tss_data(void const* key)
- {
- if(tss_data_node* const current_node=find_tss_data(key))
- {
- return current_node->value;
- }
- return NULL;
- }
-
- void set_tss_data(void const* key,boost::shared_ptr<tss_cleanup_function> func,void* tss_data,bool cleanup_existing)
- {
- if(tss_data_node* const current_node=find_tss_data(key))
- {
- if(cleanup_existing && current_node->func)
- {
- (*current_node->func)(current_node->value);
- }
- current_node->func=func;
- current_node->value=tss_data;
- }
- else
- {
- detail::thread_data_base* const current_thread_data(get_or_make_current_thread_data());
- tss_data_node* const new_node=new tss_data_node(key,func,tss_data,current_thread_data->tss_data);
- current_thread_data->tss_data=new_node;
- }
- }
- }
-
-// thread_group::thread_group()
-// {
-// }
-
-// thread_group::~thread_group()
-// {
-// // We shouldn't have to scoped_lock here, since referencing this object
-// // from another thread while we're deleting it in the current thread is
-// // going to lead to undefined behavior any way.
-// for (std::list<thread*>::iterator it = m_threads.begin();
-// it != m_threads.end(); ++it)
-// {
-// delete (*it);
-// }
-// }
-
-// thread* thread_group::create_thread(const function0<void>& threadfunc)
-// {
-// // No scoped_lock required here since the only "shared data" that's
-// // modified here occurs inside add_thread which does scoped_lock.
-// std::auto_ptr<thread> thrd(new thread(threadfunc));
-// add_thread(thrd.get());
-// return thrd.release();
-// }
-
-// void thread_group::add_thread(thread* thrd)
-// {
-// mutex::scoped_lock scoped_lock(m_mutex);
-
-// // For now we'll simply ignore requests to add a thread object multiple
-// // times. Should we consider this an error and either throw or return an
-// // error value?
-// std::list<thread*>::iterator it = std::find(m_threads.begin(),
-// m_threads.end(), thrd);
-// BOOST_ASSERT(it == m_threads.end());
-// if (it == m_threads.end())
-// m_threads.push_back(thrd);
-// }
-
-// void thread_group::remove_thread(thread* thrd)
-// {
-// mutex::scoped_lock scoped_lock(m_mutex);
-
-// // For now we'll simply ignore requests to remove a thread object that's
-// // not in the group. Should we consider this an error and either throw or
-// // return an error value?
-// std::list<thread*>::iterator it = std::find(m_threads.begin(),
-// m_threads.end(), thrd);
-// BOOST_ASSERT(it != m_threads.end());
-// if (it != m_threads.end())
-// m_threads.erase(it);
-// }
-
-// void thread_group::join_all()
-// {
-// mutex::scoped_lock scoped_lock(m_mutex);
-// for (std::list<thread*>::iterator it = m_threads.begin();
-// it != m_threads.end(); ++it)
-// {
-// (*it)->join();
-// }
-// }
-
-// void thread_group::interrupt_all()
-// {
-// boost::lock_guard<mutex> guard(m_mutex);
-
-// for(std::list<thread*>::iterator it=m_threads.begin(),end=m_threads.end();
-// it!=end;
-// ++it)
-// {
-// (*it)->interrupt();
-// }
-// }
-
-
-// size_t thread_group::size() const
-// {
-// return m_threads.size();
-// }
-
-}
diff --git a/3rdParty/Boost/libs/thread/src/pthread/timeconv.inl b/3rdParty/Boost/libs/thread/src/pthread/timeconv.inl
deleted file mode 100644
index 5ec3b17..0000000
--- a/3rdParty/Boost/libs/thread/src/pthread/timeconv.inl
+++ /dev/null
@@ -1,130 +0,0 @@
-// Copyright (C) 2001-2003
-// William E. Kempf
-//
-// 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)
-
-// boostinspect:nounnamed
-
-namespace {
-const int MILLISECONDS_PER_SECOND = 1000;
-const int NANOSECONDS_PER_SECOND = 1000000000;
-const int NANOSECONDS_PER_MILLISECOND = 1000000;
-
-const int MICROSECONDS_PER_SECOND = 1000000;
-const int NANOSECONDS_PER_MICROSECOND = 1000;
-
-inline void to_time(int milliseconds, boost::xtime& xt)
-{
- int res = 0;
- res = boost::xtime_get(&xt, boost::TIME_UTC);
- assert(res == boost::TIME_UTC);
-
- xt.sec += (milliseconds / MILLISECONDS_PER_SECOND);
- xt.nsec += ((milliseconds % MILLISECONDS_PER_SECOND) *
- NANOSECONDS_PER_MILLISECOND);
-
- if (xt.nsec >= NANOSECONDS_PER_SECOND)
- {
- ++xt.sec;
- xt.nsec -= NANOSECONDS_PER_SECOND;
- }
-}
-
-#if defined(BOOST_HAS_PTHREADS)
-inline void to_timespec(const boost::xtime& xt, timespec& ts)
-{
- ts.tv_sec = static_cast<int>(xt.sec);
- ts.tv_nsec = static_cast<int>(xt.nsec);
- if(ts.tv_nsec >= NANOSECONDS_PER_SECOND)
- {
- ts.tv_sec += ts.tv_nsec / NANOSECONDS_PER_SECOND;
- ts.tv_nsec %= NANOSECONDS_PER_SECOND;
- }
-}
-
-inline void to_time(int milliseconds, timespec& ts)
-{
- boost::xtime xt;
- to_time(milliseconds, xt);
- to_timespec(xt, ts);
-}
-
-inline void to_timespec_duration(const boost::xtime& xt, timespec& ts)
-{
- boost::xtime cur;
- int res = 0;
- res = boost::xtime_get(&cur, boost::TIME_UTC);
- assert(res == boost::TIME_UTC);
-
- if (boost::xtime_cmp(xt, cur) <= 0)
- {
- ts.tv_sec = 0;
- ts.tv_nsec = 0;
- }
- else
- {
- ts.tv_sec = xt.sec - cur.sec;
- ts.tv_nsec = xt.nsec - cur.nsec;
-
- if( ts.tv_nsec < 0 )
- {
- ts.tv_sec -= 1;
- ts.tv_nsec += NANOSECONDS_PER_SECOND;
- }
- if(ts.tv_nsec >= NANOSECONDS_PER_SECOND)
- {
- ts.tv_sec += ts.tv_nsec / NANOSECONDS_PER_SECOND;
- ts.tv_nsec %= NANOSECONDS_PER_SECOND;
- }
- }
-}
-#endif
-
-inline void to_duration(boost::xtime xt, int& milliseconds)
-{
- boost::xtime cur;
- int res = 0;
- res = boost::xtime_get(&cur, boost::TIME_UTC);
- assert(res == boost::TIME_UTC);
-
- if (boost::xtime_cmp(xt, cur) <= 0)
- milliseconds = 0;
- else
- {
- if (cur.nsec > xt.nsec)
- {
- xt.nsec += NANOSECONDS_PER_SECOND;
- --xt.sec;
- }
- milliseconds = (int)((xt.sec - cur.sec) * MILLISECONDS_PER_SECOND) +
- (((xt.nsec - cur.nsec) + (NANOSECONDS_PER_MILLISECOND/2)) /
- NANOSECONDS_PER_MILLISECOND);
- }
-}
-
-inline void to_microduration(boost::xtime xt, int& microseconds)
-{
- boost::xtime cur;
- int res = 0;
- res = boost::xtime_get(&cur, boost::TIME_UTC);
- assert(res == boost::TIME_UTC);
-
- if (boost::xtime_cmp(xt, cur) <= 0)
- microseconds = 0;
- else
- {
- if (cur.nsec > xt.nsec)
- {
- xt.nsec += NANOSECONDS_PER_SECOND;
- --xt.sec;
- }
- microseconds = (int)((xt.sec - cur.sec) * MICROSECONDS_PER_SECOND) +
- (((xt.nsec - cur.nsec) + (NANOSECONDS_PER_MICROSECOND/2)) /
- NANOSECONDS_PER_MICROSECOND);
- }
-}
-}
-
-// Change Log:
-// 1 Jun 01 Initial creation.
diff --git a/3rdParty/Boost/libs/thread/src/tss_null.cpp b/3rdParty/Boost/libs/thread/src/tss_null.cpp
deleted file mode 100644
index ff13b30..0000000
--- a/3rdParty/Boost/libs/thread/src/tss_null.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// (C) Copyright Michael Glassford 2004.
-// (C) Copyright 2007 Anthony Williams
-// 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)
-
-#include <boost/thread/detail/config.hpp>
-
-#if defined(BOOST_HAS_WINTHREADS) && (defined(BOOST_THREAD_BUILD_LIB) || defined(BOOST_THREAD_TEST) || defined(UNDER_CE)) && (!defined(_MSC_VER) || defined(UNDER_CE))
-
- /*
- This file is a "null" implementation of tss cleanup; it's
- purpose is to to eliminate link errors in cases
- where it is known that tss cleanup is not needed.
- */
-
- extern "C" void tss_cleanup_implemented(void)
- {
- /*
- This function's sole purpose is to cause a link error in cases where
- automatic tss cleanup is not implemented by Boost.Threads as a
- reminder that user code is responsible for calling the necessary
- functions at the appropriate times (and for implementing an a
- tss_cleanup_implemented() function to eliminate the linker's
- missing symbol error).
-
- If Boost.Threads later implements automatic tss cleanup in cases
- where it currently doesn't (which is the plan), the duplicate
- symbol error will warn the user that their custom solution is no
- longer needed and can be removed.
- */
- }
-
-#endif //defined(BOOST_HAS_WINTHREADS) && defined(BOOST_THREAD_BUILD_LIB) && !defined(_MSC_VER)
diff --git a/3rdParty/Boost/libs/thread/src/win32/exceptions.cpp b/3rdParty/Boost/libs/thread/src/win32/exceptions.cpp
deleted file mode 100644
index 8881303..0000000
--- a/3rdParty/Boost/libs/thread/src/win32/exceptions.cpp
+++ /dev/null
@@ -1,124 +0,0 @@
-// Copyright (C) 2001-2003
-// William E. Kempf
-//
-// 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)
-
-#include <boost/thread/detail/config.hpp>
-
-#include <boost/thread/exceptions.hpp>
-#include <cstring>
-#include <string>
-
-namespace boost {
-
-thread_exception::thread_exception()
- : m_sys_err(0)
-{
-}
-
-thread_exception::thread_exception(int sys_err_code)
- : m_sys_err(sys_err_code)
-{
-}
-
-thread_exception::~thread_exception() throw()
-{
-}
-
-int thread_exception::native_error() const
-{
- return m_sys_err;
-}
-
-lock_error::lock_error()
-{
-}
-
-lock_error::lock_error(int sys_err_code)
- : thread_exception(sys_err_code)
-{
-}
-
-lock_error::~lock_error() throw()
-{
-}
-
-const char* lock_error::what() const throw()
-{
- return "boost::lock_error";
-}
-
-thread_resource_error::thread_resource_error()
-{
-}
-
-thread_resource_error::thread_resource_error(int sys_err_code)
- : thread_exception(sys_err_code)
-{
-}
-
-thread_resource_error::~thread_resource_error() throw()
-{
-}
-
-const char* thread_resource_error::what() const throw()
-{
- return "boost::thread_resource_error";
-}
-
-unsupported_thread_option::unsupported_thread_option()
-{
-}
-
-unsupported_thread_option::unsupported_thread_option(int sys_err_code)
- : thread_exception(sys_err_code)
-{
-}
-
-unsupported_thread_option::~unsupported_thread_option() throw()
-{
-}
-
-const char* unsupported_thread_option::what() const throw()
-{
- return "boost::unsupported_thread_option";
-}
-
-invalid_thread_argument::invalid_thread_argument()
-{
-}
-
-invalid_thread_argument::invalid_thread_argument(int sys_err_code)
- : thread_exception(sys_err_code)
-{
-}
-
-invalid_thread_argument::~invalid_thread_argument() throw()
-{
-}
-
-const char* invalid_thread_argument::what() const throw()
-{
- return "boost::invalid_thread_argument";
-}
-
-thread_permission_error::thread_permission_error()
-{
-}
-
-thread_permission_error::thread_permission_error(int sys_err_code)
- : thread_exception(sys_err_code)
-{
-}
-
-thread_permission_error::~thread_permission_error() throw()
-{
-}
-
-const char* thread_permission_error::what() const throw()
-{
- return "boost::thread_permission_error";
-}
-
-} // namespace boost
diff --git a/3rdParty/Boost/libs/thread/src/win32/thread.cpp b/3rdParty/Boost/libs/thread/src/win32/thread.cpp
deleted file mode 100644
index a72f053..0000000
--- a/3rdParty/Boost/libs/thread/src/win32/thread.cpp
+++ /dev/null
@@ -1,597 +0,0 @@
-// 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)
-// (C) Copyright 2007 Anthony Williams
-// (C) Copyright 2007 David Deakins
-
-#define _WIN32_WINNT 0x400
-#define WINVER 0x400
-
-#include <boost/thread/thread.hpp>
-#include <algorithm>
-#include <windows.h>
-#ifndef UNDER_CE
-#include <process.h>
-#endif
-#include <stdio.h>
-#include <boost/thread/once.hpp>
-#include <boost/thread/tss.hpp>
-#include <boost/assert.hpp>
-#include <boost/thread/detail/tss_hooks.hpp>
-#include <boost/date_time/posix_time/conversion.hpp>
-
-namespace boost
-{
- namespace
- {
- boost::once_flag current_thread_tls_init_flag=BOOST_ONCE_INIT;
- DWORD current_thread_tls_key=0;
-
- void create_current_thread_tls_key()
- {
- tss_cleanup_implemented(); // if anyone uses TSS, we need the cleanup linked in
- current_thread_tls_key=TlsAlloc();
- BOOST_ASSERT(current_thread_tls_key!=TLS_OUT_OF_INDEXES);
- }
-
- void cleanup_tls_key()
- {
- if(current_thread_tls_key)
- {
- TlsFree(current_thread_tls_key);
- current_thread_tls_key=0;
- }
- }
-
- detail::thread_data_base* get_current_thread_data()
- {
- if(!current_thread_tls_key)
- {
- return 0;
- }
- return (detail::thread_data_base*)TlsGetValue(current_thread_tls_key);
- }
-
- void set_current_thread_data(detail::thread_data_base* new_data)
- {
- boost::call_once(current_thread_tls_init_flag,create_current_thread_tls_key);
- BOOST_VERIFY(TlsSetValue(current_thread_tls_key,new_data));
- }
-
-#ifdef BOOST_NO_THREADEX
-// Windows CE doesn't define _beginthreadex
-
- struct ThreadProxyData
- {
- typedef unsigned (__stdcall* func)(void*);
- func start_address_;
- void* arglist_;
- ThreadProxyData(func start_address,void* arglist) : start_address_(start_address), arglist_(arglist) {}
- };
-
- DWORD WINAPI ThreadProxy(LPVOID args)
- {
- ThreadProxyData* data=reinterpret_cast<ThreadProxyData*>(args);
- DWORD ret=data->start_address_(data->arglist_);
- delete data;
- return ret;
- }
-
- typedef void* uintptr_t;
-
- inline uintptr_t const _beginthreadex(void* security, unsigned stack_size, unsigned (__stdcall* start_address)(void*),
- void* arglist, unsigned initflag, unsigned* thrdaddr)
- {
- DWORD threadID;
- HANDLE hthread=CreateThread(static_cast<LPSECURITY_ATTRIBUTES>(security),stack_size,ThreadProxy,
- new ThreadProxyData(start_address,arglist),initflag,&threadID);
- if (hthread!=0)
- *thrdaddr=threadID;
- return reinterpret_cast<uintptr_t const>(hthread);
- }
-
-#endif
-
- }
-
- namespace detail
- {
- struct thread_exit_callback_node
- {
- boost::detail::thread_exit_function_base* func;
- thread_exit_callback_node* next;
-
- thread_exit_callback_node(boost::detail::thread_exit_function_base* func_,
- thread_exit_callback_node* next_):
- func(func_),next(next_)
- {}
- };
-
- struct tss_data_node
- {
- void const* key;
- boost::shared_ptr<boost::detail::tss_cleanup_function> func;
- void* value;
- tss_data_node* next;
-
- tss_data_node(void const* key_,boost::shared_ptr<boost::detail::tss_cleanup_function> func_,void* value_,
- tss_data_node* next_):
- key(key_),func(func_),value(value_),next(next_)
- {}
- };
-
- }
-
- namespace
- {
- void run_thread_exit_callbacks()
- {
- detail::thread_data_ptr current_thread_data(get_current_thread_data(),false);
- if(current_thread_data)
- {
- while(current_thread_data->tss_data || current_thread_data->thread_exit_callbacks)
- {
- while(current_thread_data->thread_exit_callbacks)
- {
- detail::thread_exit_callback_node* const current_node=current_thread_data->thread_exit_callbacks;
- current_thread_data->thread_exit_callbacks=current_node->next;
- if(current_node->func)
- {
- (*current_node->func)();
- boost::detail::heap_delete(current_node->func);
- }
- boost::detail::heap_delete(current_node);
- }
- while(current_thread_data->tss_data)
- {
- detail::tss_data_node* const current_node=current_thread_data->tss_data;
- current_thread_data->tss_data=current_node->next;
- if(current_node->func)
- {
- (*current_node->func)(current_node->value);
- }
- boost::detail::heap_delete(current_node);
- }
- }
-
- set_current_thread_data(0);
- }
- }
-
- unsigned __stdcall thread_start_function(void* param)
- {
- detail::thread_data_base* const thread_info(reinterpret_cast<detail::thread_data_base*>(param));
- set_current_thread_data(thread_info);
- try
- {
- thread_info->run();
- }
- catch(thread_interrupted const&)
- {
- }
-// Removed as it stops the debugger identifying the cause of the exception
-// Unhandled exceptions still cause the application to terminate
-// catch(...)
-// {
-// std::terminate();
-// }
- run_thread_exit_callbacks();
- return 0;
- }
- }
-
- thread::thread()
- {}
-
- void thread::start_thread()
- {
- uintptr_t const new_thread=_beginthreadex(0,0,&thread_start_function,thread_info.get(),CREATE_SUSPENDED,&thread_info->id);
- if(!new_thread)
- {
- throw thread_resource_error();
- }
- intrusive_ptr_add_ref(thread_info.get());
- thread_info->thread_handle=(detail::win32::handle)(new_thread);
- ResumeThread(thread_info->thread_handle);
- }
-
- thread::thread(detail::thread_data_ptr data):
- thread_info(data)
- {}
-
- namespace
- {
- struct externally_launched_thread:
- detail::thread_data_base
- {
- externally_launched_thread()
- {
- ++count;
- interruption_enabled=false;
- }
-
- void run()
- {}
- private:
- externally_launched_thread(externally_launched_thread&);
- void operator=(externally_launched_thread&);
- };
-
- void make_external_thread_data()
- {
- externally_launched_thread* me=detail::heap_new<externally_launched_thread>();
- set_current_thread_data(me);
- }
-
- detail::thread_data_base* get_or_make_current_thread_data()
- {
- detail::thread_data_base* current_thread_data(get_current_thread_data());
- if(!current_thread_data)
- {
- make_external_thread_data();
- current_thread_data=get_current_thread_data();
- }
- return current_thread_data;
- }
-
- }
-
- thread::~thread()
- {
- detach();
- }
-
- thread::id thread::get_id() const
- {
- return thread::id(get_thread_info());
- }
-
- bool thread::joinable() const
- {
- return get_thread_info();
- }
-
- void thread::join()
- {
- detail::thread_data_ptr local_thread_info=get_thread_info();
- if(local_thread_info)
- {
- this_thread::interruptible_wait(local_thread_info->thread_handle,detail::timeout::sentinel());
- release_handle();
- }
- }
-
- bool thread::timed_join(boost::system_time const& wait_until)
- {
- detail::thread_data_ptr local_thread_info=get_thread_info();
- if(local_thread_info)
- {
- if(!this_thread::interruptible_wait(local_thread_info->thread_handle,get_milliseconds_until(wait_until)))
- {
- return false;
- }
- release_handle();
- }
- return true;
- }
-
- void thread::detach()
- {
- release_handle();
- }
-
- void thread::release_handle()
- {
- lock_guard<mutex> l1(thread_info_mutex);
- thread_info=0;
- }
-
- void thread::interrupt()
- {
- detail::thread_data_ptr local_thread_info=get_thread_info();
- if(local_thread_info)
- {
- local_thread_info->interrupt();
- }
- }
-
- bool thread::interruption_requested() const
- {
- detail::thread_data_ptr local_thread_info=get_thread_info();
- return local_thread_info.get() && (detail::win32::WaitForSingleObject(local_thread_info->interruption_handle,0)==0);
- }
-
- unsigned thread::hardware_concurrency()
- {
- SYSTEM_INFO info={0};
- GetSystemInfo(&info);
- return info.dwNumberOfProcessors;
- }
-
- thread::native_handle_type thread::native_handle()
- {
- detail::thread_data_ptr local_thread_info=get_thread_info();
- return local_thread_info?(detail::win32::handle)local_thread_info->thread_handle:detail::win32::invalid_handle_value;
- }
-
- detail::thread_data_ptr thread::get_thread_info() const
- {
- boost::mutex::scoped_lock l(thread_info_mutex);
- return thread_info;
- }
-
- namespace this_thread
- {
- namespace
- {
- LARGE_INTEGER get_due_time(detail::timeout const& target_time)
- {
- LARGE_INTEGER due_time={0};
- if(target_time.relative)
- {
- unsigned long const elapsed_milliseconds=GetTickCount()-target_time.start;
- LONGLONG const remaining_milliseconds=(target_time.milliseconds-elapsed_milliseconds);
- LONGLONG const hundred_nanoseconds_in_one_millisecond=10000;
-
- if(remaining_milliseconds>0)
- {
- due_time.QuadPart=-(remaining_milliseconds*hundred_nanoseconds_in_one_millisecond);
- }
- }
- else
- {
- SYSTEMTIME target_system_time={0};
- target_system_time.wYear=target_time.abs_time.date().year();
- target_system_time.wMonth=target_time.abs_time.date().month();
- target_system_time.wDay=target_time.abs_time.date().day();
- target_system_time.wHour=(WORD)target_time.abs_time.time_of_day().hours();
- target_system_time.wMinute=(WORD)target_time.abs_time.time_of_day().minutes();
- target_system_time.wSecond=(WORD)target_time.abs_time.time_of_day().seconds();
-
- if(!SystemTimeToFileTime(&target_system_time,((FILETIME*)&due_time)))
- {
- due_time.QuadPart=0;
- }
- else
- {
- long const hundred_nanoseconds_in_one_second=10000000;
- due_time.QuadPart+=target_time.abs_time.time_of_day().fractional_seconds()*(hundred_nanoseconds_in_one_second/target_time.abs_time.time_of_day().ticks_per_second());
- }
- }
- return due_time;
- }
- }
-
-
- bool interruptible_wait(detail::win32::handle handle_to_wait_for,detail::timeout target_time)
- {
- detail::win32::handle handles[3]={0};
- unsigned handle_count=0;
- unsigned wait_handle_index=~0U;
- unsigned interruption_index=~0U;
- unsigned timeout_index=~0U;
- if(handle_to_wait_for!=detail::win32::invalid_handle_value)
- {
- wait_handle_index=handle_count;
- handles[handle_count++]=handle_to_wait_for;
- }
- if(get_current_thread_data() && get_current_thread_data()->interruption_enabled)
- {
- interruption_index=handle_count;
- handles[handle_count++]=get_current_thread_data()->interruption_handle;
- }
-
- detail::win32::handle_manager timer_handle;
-
-#ifndef UNDER_CE
- unsigned const min_timer_wait_period=20;
-
- if(!target_time.is_sentinel())
- {
- detail::timeout::remaining_time const time_left=target_time.remaining_milliseconds();
- if(time_left.milliseconds > min_timer_wait_period)
- {
- // for a long-enough timeout, use a waitable timer (which tracks clock changes)
- timer_handle=CreateWaitableTimer(NULL,false,NULL);
- if(timer_handle!=0)
- {
- LARGE_INTEGER due_time=get_due_time(target_time);
-
- bool const set_time_succeeded=SetWaitableTimer(timer_handle,&due_time,0,0,0,false)!=0;
- if(set_time_succeeded)
- {
- timeout_index=handle_count;
- handles[handle_count++]=timer_handle;
- }
- }
- }
- else if(!target_time.relative)
- {
- // convert short absolute-time timeouts into relative ones, so we don't race against clock changes
- target_time=detail::timeout(time_left.milliseconds);
- }
- }
-#endif
-
- bool const using_timer=timeout_index!=~0u;
- detail::timeout::remaining_time time_left(0);
-
- do
- {
- if(!using_timer)
- {
- time_left=target_time.remaining_milliseconds();
- }
-
- if(handle_count)
- {
- unsigned long const notified_index=detail::win32::WaitForMultipleObjects(handle_count,handles,false,using_timer?INFINITE:time_left.milliseconds);
- if(notified_index<handle_count)
- {
- if(notified_index==wait_handle_index)
- {
- return true;
- }
- else if(notified_index==interruption_index)
- {
- detail::win32::ResetEvent(get_current_thread_data()->interruption_handle);
- throw thread_interrupted();
- }
- else if(notified_index==timeout_index)
- {
- return false;
- }
- }
- }
- else
- {
- detail::win32::Sleep(time_left.milliseconds);
- }
- if(target_time.relative)
- {
- target_time.milliseconds-=detail::timeout::max_non_infinite_wait;
- }
- }
- while(time_left.more);
- return false;
- }
-
- thread::id get_id()
- {
- return thread::id(get_or_make_current_thread_data());
- }
-
- void interruption_point()
- {
- if(interruption_enabled() && interruption_requested())
- {
- detail::win32::ResetEvent(get_current_thread_data()->interruption_handle);
- throw thread_interrupted();
- }
- }
-
- bool interruption_enabled()
- {
- return get_current_thread_data() && get_current_thread_data()->interruption_enabled;
- }
-
- bool interruption_requested()
- {
- return get_current_thread_data() && (detail::win32::WaitForSingleObject(get_current_thread_data()->interruption_handle,0)==0);
- }
-
- void yield()
- {
- detail::win32::Sleep(0);
- }
-
- disable_interruption::disable_interruption():
- interruption_was_enabled(interruption_enabled())
- {
- if(interruption_was_enabled)
- {
- get_current_thread_data()->interruption_enabled=false;
- }
- }
-
- disable_interruption::~disable_interruption()
- {
- if(get_current_thread_data())
- {
- get_current_thread_data()->interruption_enabled=interruption_was_enabled;
- }
- }
-
- restore_interruption::restore_interruption(disable_interruption& d)
- {
- if(d.interruption_was_enabled)
- {
- get_current_thread_data()->interruption_enabled=true;
- }
- }
-
- restore_interruption::~restore_interruption()
- {
- if(get_current_thread_data())
- {
- get_current_thread_data()->interruption_enabled=false;
- }
- }
- }
-
- namespace detail
- {
- void add_thread_exit_function(thread_exit_function_base* func)
- {
- detail::thread_data_base* const current_thread_data(get_or_make_current_thread_data());
- thread_exit_callback_node* const new_node=
- heap_new<thread_exit_callback_node>(func,
- current_thread_data->thread_exit_callbacks);
- current_thread_data->thread_exit_callbacks=new_node;
- }
-
- tss_data_node* find_tss_data(void const* key)
- {
- detail::thread_data_base* const current_thread_data(get_current_thread_data());
- if(current_thread_data)
- {
- detail::tss_data_node* current_node=current_thread_data->tss_data;
- while(current_node)
- {
- if(current_node->key==key)
- {
- return current_node;
- }
- current_node=current_node->next;
- }
- }
- return NULL;
- }
-
- void* get_tss_data(void const* key)
- {
- if(tss_data_node* const current_node=find_tss_data(key))
- {
- return current_node->value;
- }
- return NULL;
- }
-
- void set_tss_data(void const* key,boost::shared_ptr<tss_cleanup_function> func,void* tss_data,bool cleanup_existing)
- {
- if(tss_data_node* const current_node=find_tss_data(key))
- {
- if(cleanup_existing && current_node->func.get())
- {
- (*current_node->func)(current_node->value);
- }
- current_node->func=func;
- current_node->value=tss_data;
- }
- else
- {
- detail::thread_data_base* const current_thread_data(get_or_make_current_thread_data());
- tss_data_node* const new_node=heap_new<tss_data_node>(key,func,tss_data,current_thread_data->tss_data);
- current_thread_data->tss_data=new_node;
- }
- }
- }
-}
-
-
-extern "C" BOOST_THREAD_DECL void on_process_enter()
-{}
-
-extern "C" BOOST_THREAD_DECL void on_thread_enter()
-{}
-
-extern "C" BOOST_THREAD_DECL void on_process_exit()
-{
- boost::cleanup_tls_key();
-}
-
-extern "C" BOOST_THREAD_DECL void on_thread_exit()
-{
- boost::run_thread_exit_callbacks();
-}
-
diff --git a/3rdParty/Boost/libs/thread/src/win32/timeconv.inl b/3rdParty/Boost/libs/thread/src/win32/timeconv.inl
deleted file mode 100644
index 5ec3b17..0000000
--- a/3rdParty/Boost/libs/thread/src/win32/timeconv.inl
+++ /dev/null
@@ -1,130 +0,0 @@
-// Copyright (C) 2001-2003
-// William E. Kempf
-//
-// 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)
-
-// boostinspect:nounnamed
-
-namespace {
-const int MILLISECONDS_PER_SECOND = 1000;
-const int NANOSECONDS_PER_SECOND = 1000000000;
-const int NANOSECONDS_PER_MILLISECOND = 1000000;
-
-const int MICROSECONDS_PER_SECOND = 1000000;
-const int NANOSECONDS_PER_MICROSECOND = 1000;
-
-inline void to_time(int milliseconds, boost::xtime& xt)
-{
- int res = 0;
- res = boost::xtime_get(&xt, boost::TIME_UTC);
- assert(res == boost::TIME_UTC);
-
- xt.sec += (milliseconds / MILLISECONDS_PER_SECOND);
- xt.nsec += ((milliseconds % MILLISECONDS_PER_SECOND) *
- NANOSECONDS_PER_MILLISECOND);
-
- if (xt.nsec >= NANOSECONDS_PER_SECOND)
- {
- ++xt.sec;
- xt.nsec -= NANOSECONDS_PER_SECOND;
- }
-}
-
-#if defined(BOOST_HAS_PTHREADS)
-inline void to_timespec(const boost::xtime& xt, timespec& ts)
-{
- ts.tv_sec = static_cast<int>(xt.sec);
- ts.tv_nsec = static_cast<int>(xt.nsec);
- if(ts.tv_nsec >= NANOSECONDS_PER_SECOND)
- {
- ts.tv_sec += ts.tv_nsec / NANOSECONDS_PER_SECOND;
- ts.tv_nsec %= NANOSECONDS_PER_SECOND;
- }
-}
-
-inline void to_time(int milliseconds, timespec& ts)
-{
- boost::xtime xt;
- to_time(milliseconds, xt);
- to_timespec(xt, ts);
-}
-
-inline void to_timespec_duration(const boost::xtime& xt, timespec& ts)
-{
- boost::xtime cur;
- int res = 0;
- res = boost::xtime_get(&cur, boost::TIME_UTC);
- assert(res == boost::TIME_UTC);
-
- if (boost::xtime_cmp(xt, cur) <= 0)
- {
- ts.tv_sec = 0;
- ts.tv_nsec = 0;
- }
- else
- {
- ts.tv_sec = xt.sec - cur.sec;
- ts.tv_nsec = xt.nsec - cur.nsec;
-
- if( ts.tv_nsec < 0 )
- {
- ts.tv_sec -= 1;
- ts.tv_nsec += NANOSECONDS_PER_SECOND;
- }
- if(ts.tv_nsec >= NANOSECONDS_PER_SECOND)
- {
- ts.tv_sec += ts.tv_nsec / NANOSECONDS_PER_SECOND;
- ts.tv_nsec %= NANOSECONDS_PER_SECOND;
- }
- }
-}
-#endif
-
-inline void to_duration(boost::xtime xt, int& milliseconds)
-{
- boost::xtime cur;
- int res = 0;
- res = boost::xtime_get(&cur, boost::TIME_UTC);
- assert(res == boost::TIME_UTC);
-
- if (boost::xtime_cmp(xt, cur) <= 0)
- milliseconds = 0;
- else
- {
- if (cur.nsec > xt.nsec)
- {
- xt.nsec += NANOSECONDS_PER_SECOND;
- --xt.sec;
- }
- milliseconds = (int)((xt.sec - cur.sec) * MILLISECONDS_PER_SECOND) +
- (((xt.nsec - cur.nsec) + (NANOSECONDS_PER_MILLISECOND/2)) /
- NANOSECONDS_PER_MILLISECOND);
- }
-}
-
-inline void to_microduration(boost::xtime xt, int& microseconds)
-{
- boost::xtime cur;
- int res = 0;
- res = boost::xtime_get(&cur, boost::TIME_UTC);
- assert(res == boost::TIME_UTC);
-
- if (boost::xtime_cmp(xt, cur) <= 0)
- microseconds = 0;
- else
- {
- if (cur.nsec > xt.nsec)
- {
- xt.nsec += NANOSECONDS_PER_SECOND;
- --xt.sec;
- }
- microseconds = (int)((xt.sec - cur.sec) * MICROSECONDS_PER_SECOND) +
- (((xt.nsec - cur.nsec) + (NANOSECONDS_PER_MICROSECOND/2)) /
- NANOSECONDS_PER_MICROSECOND);
- }
-}
-}
-
-// Change Log:
-// 1 Jun 01 Initial creation.
diff --git a/3rdParty/Boost/libs/thread/src/win32/tss_dll.cpp b/3rdParty/Boost/libs/thread/src/win32/tss_dll.cpp
deleted file mode 100644
index 0522a12..0000000
--- a/3rdParty/Boost/libs/thread/src/win32/tss_dll.cpp
+++ /dev/null
@@ -1,72 +0,0 @@
-// (C) Copyright Michael Glassford 2004.
-// 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)
-
-#include <boost/thread/detail/config.hpp>
-
-#if defined(BOOST_HAS_WINTHREADS) && defined(BOOST_THREAD_BUILD_DLL)
-
- #include <boost/thread/detail/tss_hooks.hpp>
-
- #define WIN32_LEAN_AND_MEAN
- #include <windows.h>
-
- #if defined(__BORLANDC__)
- extern "C" BOOL WINAPI DllEntryPoint(HINSTANCE /*hInstance*/, DWORD dwReason, LPVOID /*lpReserved*/)
- #elif defined(_WIN32_WCE)
- extern "C" BOOL WINAPI DllMain(HANDLE /*hInstance*/, DWORD dwReason, LPVOID /*lpReserved*/)
- #else
- extern "C" BOOL WINAPI DllMain(HINSTANCE /*hInstance*/, DWORD dwReason, LPVOID /*lpReserved*/)
- #endif
- {
- switch(dwReason)
- {
- case DLL_PROCESS_ATTACH:
- {
- on_process_enter();
- on_thread_enter();
- break;
- }
-
- case DLL_THREAD_ATTACH:
- {
- on_thread_enter();
- break;
- }
-
- case DLL_THREAD_DETACH:
- {
- on_thread_exit();
- break;
- }
-
- case DLL_PROCESS_DETACH:
- {
- on_thread_exit();
- on_process_exit();
- break;
- }
- }
-
- return TRUE;
- }
-
- extern "C" void tss_cleanup_implemented(void)
- {
- /*
- This function's sole purpose is to cause a link error in cases where
- automatic tss cleanup is not implemented by Boost.Threads as a
- reminder that user code is responsible for calling the necessary
- functions at the appropriate times (and for implementing an a
- tss_cleanup_implemented() function to eliminate the linker's
- missing symbol error).
-
- If Boost.Threads later implements automatic tss cleanup in cases
- where it currently doesn't (which is the plan), the duplicate
- symbol error will warn the user that their custom solution is no
- longer needed and can be removed.
- */
- }
-
-#endif //defined(BOOST_HAS_WINTHREADS) && defined(BOOST_THREAD_BUILD_DLL)
diff --git a/3rdParty/Boost/libs/thread/src/win32/tss_pe.cpp b/3rdParty/Boost/libs/thread/src/win32/tss_pe.cpp
deleted file mode 100644
index ae89bc4..0000000
--- a/3rdParty/Boost/libs/thread/src/win32/tss_pe.cpp
+++ /dev/null
@@ -1,287 +0,0 @@
-// $Id: tss_pe.cpp 49324 2008-10-13 20:30:13Z anthonyw $
-// (C) Copyright Aaron W. LaFramboise, Roland Schwarz, Michael Glassford 2004.
-// (C) Copyright 2007 Roland Schwarz
-// (C) Copyright 2007 Anthony Williams
-// (C) Copyright 2007 David Deakins
-// 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)
-
-#include <boost/thread/detail/config.hpp>
-
-#if defined(BOOST_HAS_WINTHREADS) && defined(BOOST_THREAD_BUILD_LIB)
-
-#if defined(__MINGW32__) && !defined(_WIN64)
-
-#include <boost/thread/detail/tss_hooks.hpp>
-
-#include <windows.h>
-
-#include <cstdlib>
-
-extern "C" void tss_cleanup_implemented(void) {}
-
-namespace {
- void NTAPI on_tls_callback(void* h, DWORD dwReason, PVOID pv)
- {
- switch (dwReason)
- {
- case DLL_THREAD_DETACH:
- {
- on_thread_exit();
- break;
- }
- }
- }
-
- void on_after_ctors(void)
- {
- on_process_enter();
- }
-
- void on_before_dtors(void)
- {
- on_thread_exit();
- }
-
- void on_after_dtors(void)
- {
- on_process_exit();
- }
-}
-
-extern "C" {
-
- void (* after_ctors )(void) __attribute__((section(".ctors"))) = on_after_ctors;
- void (* before_dtors)(void) __attribute__((section(".dtors"))) = on_before_dtors;
- void (* after_dtors )(void) __attribute__((section(".dtors.zzz"))) = on_after_dtors;
-
- ULONG __tls_index__ = 0;
- char __tls_end__ __attribute__((section(".tls$zzz"))) = 0;
- char __tls_start__ __attribute__((section(".tls"))) = 0;
-
-
- PIMAGE_TLS_CALLBACK __crt_xl_start__ __attribute__ ((section(".CRT$XLA"))) = 0;
- PIMAGE_TLS_CALLBACK __crt_xl_tls_callback__ __attribute__ ((section(".CRT$XLB"))) = on_tls_callback;
- PIMAGE_TLS_CALLBACK __crt_xl_end__ __attribute__ ((section(".CRT$XLZ"))) = 0;
-}
-
-extern "C" const IMAGE_TLS_DIRECTORY32 _tls_used __attribute__ ((section(".rdata$T"))) =
-{
- (DWORD) &__tls_start__,
- (DWORD) &__tls_end__,
- (DWORD) &__tls_index__,
- (DWORD) (&__crt_xl_start__+1),
- (DWORD) 0,
- (DWORD) 0
-};
-
-
-#elif defined(_MSC_VER) && !defined(UNDER_CE)
-
- #include <boost/thread/detail/tss_hooks.hpp>
-
- #include <stdlib.h>
-
- #define WIN32_LEAN_AND_MEAN
- #include <windows.h>
-
- //Definitions required by implementation
-
- #if (_MSC_VER < 1300) // 1300 == VC++ 7.0
- typedef void (__cdecl *_PVFV)(void);
- #define INIRETSUCCESS
- #define PVAPI void
- #else
- typedef int (__cdecl *_PVFV)(void);
- #define INIRETSUCCESS 0
- #define PVAPI int
- #endif
-
- typedef void (NTAPI* _TLSCB)(HINSTANCE, DWORD, PVOID);
-
- //Symbols for connection to the runtime environment
-
- extern "C"
- {
- extern DWORD _tls_used; //the tls directory (located in .rdata segment)
- extern _TLSCB __xl_a[], __xl_z[]; //tls initializers */
- }
-
- namespace
- {
- //Forward declarations
-
- static PVAPI on_tls_prepare(void);
- static PVAPI on_process_init(void);
- static PVAPI on_process_term(void);
- static void NTAPI on_tls_callback(HINSTANCE, DWORD, PVOID);
-
- //The .CRT$Xxx information is taken from Codeguru:
- //http://www.codeguru.com/Cpp/misc/misc/threadsprocesses/article.php/c6945__2/
-
-#if (_MSC_VER >= 1400)
-#pragma section(".CRT$XIU",long,read)
-#pragma section(".CRT$XCU",long,read)
-#pragma section(".CRT$XTU",long,read)
-#pragma section(".CRT$XLC",long,read)
- __declspec(allocate(".CRT$XLC")) _TLSCB __xl_ca=on_tls_callback;
- __declspec(allocate(".CRT$XIU"))_PVFV p_tls_prepare = on_tls_prepare;
- __declspec(allocate(".CRT$XCU"))_PVFV p_process_init = on_process_init;
- __declspec(allocate(".CRT$XTU"))_PVFV p_process_term = on_process_term;
-#else
- #if (_MSC_VER >= 1300) // 1300 == VC++ 7.0
- # pragma data_seg(push, old_seg)
- #endif
- //Callback to run tls glue code first.
- //I don't think it is necessary to run it
- //at .CRT$XIB level, since we are only
- //interested in thread detachement. But
- //this could be changed easily if required.
-
- #pragma data_seg(".CRT$XIU")
- static _PVFV p_tls_prepare = on_tls_prepare;
- #pragma data_seg()
-
- //Callback after all global ctors.
-
- #pragma data_seg(".CRT$XCU")
- static _PVFV p_process_init = on_process_init;
- #pragma data_seg()
-
- //Callback for tls notifications.
-
- #pragma data_seg(".CRT$XLB")
- _TLSCB p_thread_callback = on_tls_callback;
- #pragma data_seg()
- //Callback for termination.
-
- #pragma data_seg(".CRT$XTU")
- static _PVFV p_process_term = on_process_term;
- #pragma data_seg()
- #if (_MSC_VER >= 1300) // 1300 == VC++ 7.0
- # pragma data_seg(pop, old_seg)
- #endif
-#endif
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4189)
-#endif
-
- PVAPI on_tls_prepare(void)
- {
- //The following line has an important side effect:
- //if the TLS directory is not already there, it will
- //be created by the linker. In other words, it forces a tls
- //directory to be generated by the linker even when static tls
- //(i.e. __declspec(thread)) is not used.
- //The volatile should prevent the optimizer
- //from removing the reference.
-
- DWORD volatile dw = _tls_used;
-
- #if (_MSC_VER < 1300) // 1300 == VC++ 7.0
- _TLSCB* pfbegin = __xl_a;
- _TLSCB* pfend = __xl_z;
- _TLSCB* pfdst = pfbegin;
- //pfdst = (_TLSCB*)_tls_used.AddressOfCallBacks;
-
- //The following loop will merge the address pointers
- //into a contiguous area, since the tlssup code seems
- //to require this (at least on MSVC 6)
-
- while (pfbegin < pfend)
- {
- if (*pfbegin != 0)
- {
- *pfdst = *pfbegin;
- ++pfdst;
- }
- ++pfbegin;
- }
-
- *pfdst = 0;
- #endif
-
- return INIRETSUCCESS;
- }
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
- PVAPI on_process_init(void)
- {
- //Schedule on_thread_exit() to be called for the main
- //thread before destructors of global objects have been
- //called.
-
- //It will not be run when 'quick' exiting the
- //library; however, this is the standard behaviour
- //for destructors of global objects, so that
- //shouldn't be a problem.
-
- atexit(on_thread_exit);
-
- //Call Boost process entry callback here
-
- on_process_enter();
-
- return INIRETSUCCESS;
- }
-
- PVAPI on_process_term(void)
- {
- on_process_exit();
- return INIRETSUCCESS;
- }
-
- void NTAPI on_tls_callback(HINSTANCE /*h*/, DWORD dwReason, PVOID /*pv*/)
- {
- switch (dwReason)
- {
- case DLL_THREAD_DETACH:
- on_thread_exit();
- break;
- }
- }
-
- BOOL WINAPI dll_callback(HANDLE, DWORD dwReason, LPVOID)
- {
- switch (dwReason)
- {
- case DLL_THREAD_DETACH:
- on_thread_exit();
- break;
- case DLL_PROCESS_DETACH:
- on_process_exit();
- break;
- }
- return true;
- }
- } //namespace
-
-extern "C"
-{
- extern BOOL (WINAPI * const _pRawDllMain)(HANDLE, DWORD, LPVOID)=&dll_callback;
-}
-
- extern "C" void tss_cleanup_implemented(void)
- {
- /*
- This function's sole purpose is to cause a link error in cases where
- automatic tss cleanup is not implemented by Boost.Threads as a
- reminder that user code is responsible for calling the necessary
- functions at the appropriate times (and for implementing an a
- tss_cleanup_implemented() function to eliminate the linker's
- missing symbol error).
-
- If Boost.Threads later implements automatic tss cleanup in cases
- where it currently doesn't (which is the plan), the duplicate
- symbol error will warn the user that their custom solution is no
- longer needed and can be removed.
- */
- }
-#endif //defined(_MSC_VER) && !defined(UNDER_CE)
-
-#endif //defined(BOOST_HAS_WINTHREADS) && defined(BOOST_THREAD_BUILD_LIB)