diff options
Diffstat (limited to '3rdParty/Boost/libs')
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(¤t_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)  | 
 Swift