diff options
Diffstat (limited to '3rdParty/Boost/src/boost/filesystem')
| -rw-r--r-- | 3rdParty/Boost/src/boost/filesystem/operations.hpp | 18 | ||||
| -rw-r--r-- | 3rdParty/Boost/src/boost/filesystem/path.hpp | 58 | 
2 files changed, 53 insertions, 23 deletions
diff --git a/3rdParty/Boost/src/boost/filesystem/operations.hpp b/3rdParty/Boost/src/boost/filesystem/operations.hpp index 5c2080c..4d52ab7 100644 --- a/3rdParty/Boost/src/boost/filesystem/operations.hpp +++ b/3rdParty/Boost/src/boost/filesystem/operations.hpp @@ -15,6 +15,7 @@  #define BOOST_FILESYSTEM_OPERATIONS_HPP  #include <boost/filesystem/path.hpp> +#include <boost/detail/scoped_enum_emulation.hpp>  #include <boost/shared_ptr.hpp>  #include <boost/utility/enable_if.hpp> @@ -182,7 +183,7 @@ namespace boost        BOOST_FILESYSTEM_DECL system::error_code          rename_api( const std::string & from, const std::string & to );        BOOST_FILESYSTEM_DECL system::error_code -        copy_file_api( const std::string & from, const std::string & to ); +        copy_file_api( const std::string & from, const std::string & to, bool fail_if_exists );  #   if defined(BOOST_WINDOWS_API) @@ -226,7 +227,7 @@ namespace boost        BOOST_FILESYSTEM_DECL system::error_code          rename_api( const std::wstring & from, const std::wstring & to );        BOOST_FILESYSTEM_DECL system::error_code -        copy_file_api( const std::wstring & from, const std::wstring & to ); +        copy_file_api( const std::wstring & from, const std::wstring & to, bool fail_if_exists );  #     endif  #   endif @@ -506,11 +507,16 @@ namespace boost            from_path, to_path, ec ) );      } -    BOOST_FS_FUNC(void) copy_file( const Path & from_path, const Path & to_path ) +    BOOST_SCOPED_ENUM_START(copy_option) +      { fail_if_exists, overwrite_if_exists }; +    BOOST_SCOPED_ENUM_END + +    BOOST_FS_FUNC(void) copy_file( const Path & from_path, const Path & to_path, +      BOOST_SCOPED_ENUM(copy_option) option = copy_option::fail_if_exists )      {        system::error_code ec( detail::copy_file_api(          from_path.external_directory_string(), -        to_path.external_directory_string() ) ); +        to_path.external_directory_string(), option == copy_option::fail_if_exists ) );        if ( ec )          boost::throw_exception( basic_filesystem_error<Path>(            "boost::filesystem::copy_file", @@ -659,9 +665,9 @@ namespace boost        { return is_symlink<wpath>( ph ); }      inline bool is_empty( const path & ph ) -      { return is_empty<path>( ph ); } +      { return boost::filesystem::is_empty<path>( ph ); }      inline bool is_empty( const wpath & ph ) -      { return is_empty<wpath>( ph ); } +      { return boost::filesystem::is_empty<wpath>( ph ); }      inline bool equivalent( const path & ph1, const path & ph2 )        { return equivalent<path>( ph1, ph2 ); } diff --git a/3rdParty/Boost/src/boost/filesystem/path.hpp b/3rdParty/Boost/src/boost/filesystem/path.hpp index bfb1aab..8f5eaa0 100644 --- a/3rdParty/Boost/src/boost/filesystem/path.hpp +++ b/3rdParty/Boost/src/boost/filesystem/path.hpp @@ -208,6 +208,15 @@ namespace boost            basic_path & append( InputIterator first, InputIterator last );  #     endif +      void clear() +      {  +#     if BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, >= 310) +        m_path.clear(); +#     else +        m_path.erase( m_path.begin(), m_path.end() ); +#     endif +      } +        void swap( basic_path & rhs )        {          m_path.swap( rhs.m_path ); @@ -390,42 +399,57 @@ namespace boost          lhs.begin(), lhs.end(), tmp.begin(), tmp.end() );      } -    //  operator == uses string compare rather than !(lhs < rhs) && !(rhs < lhs) because -    //  the result is the same yet the direct string compare is much more efficient that -    //  lexicographical_compare, and lexicographical_compare used twice at that. +    //  operator == uses hand-written compare rather than !(lhs < rhs) && !(rhs < lhs) +    //  because the result is the same yet the direct compare is much more efficient +    //  than lexicographical_compare, which would also be called twice.      template< class String, class Traits > -    inline bool operator==( const basic_path<String, Traits> & lhs, const basic_path<String, Traits> & rhs ) +    inline bool operator==( const basic_path<String, Traits> & lhs, +                    const typename basic_path<String, Traits>::string_type::value_type * rhs ) +    { +      typedef typename +        boost::BOOST_FILESYSTEM_NAMESPACE::basic_path<String, Traits> path_type; +      const typename path_type::string_type::value_type * l (lhs.string().c_str()); +      while ( (*l == *rhs +#      ifdef BOOST_WINDOWS_PATH +        || (*l == path_alt_separator<path_type>::value && *rhs == slash<path_type>::value)  +            || (*l == slash<path_type>::value && *rhs == path_alt_separator<path_type>::value) +#      endif +        ) && *l ) { ++l; ++rhs; } +      return *l == *rhs +#      ifdef BOOST_WINDOWS_PATH +        || (*l == path_alt_separator<path_type>::value && *rhs == slash<path_type>::value)  +          || (*l == slash<path_type>::value && *rhs == path_alt_separator<path_type>::value) +#      endif +        ;   +    } + +    template< class String, class Traits > +    inline bool operator==( const basic_path<String, Traits> & lhs, +                            const basic_path<String, Traits> & rhs )      {  -      return lhs.string() == rhs.string(); +      return lhs == rhs.string().c_str();      }      template< class String, class Traits >      inline bool operator==( const typename basic_path<String, Traits>::string_type::value_type * lhs,                      const basic_path<String, Traits> & rhs )      { -      return lhs == rhs.string(); +      return rhs == lhs;      }      template< class String, class Traits >      inline bool operator==( const typename basic_path<String, Traits>::string_type & lhs,                      const basic_path<String, Traits> & rhs )      { -      return lhs == rhs.string(); -    } - -    template< class String, class Traits > -    inline bool operator==( const basic_path<String, Traits> & lhs, -                    const typename basic_path<String, Traits>::string_type::value_type * rhs ) -    { -      return lhs.string() == rhs; +      return rhs == lhs.c_str();      }      template< class String, class Traits >      inline bool operator==( const basic_path<String, Traits> & lhs,                      const typename basic_path<String, Traits>::string_type & rhs )      { -      return lhs.string() == rhs; +      return lhs == rhs.c_str();      }      template< class String, class Traits > @@ -930,7 +954,7 @@ namespace boost      String basic_path<String, Traits>::stem() const      {        string_type name = filename(); -      typename string_type::size_type n = name.rfind('.'); +      typename string_type::size_type n = name.rfind(dot<path_type>::value);        return name.substr(0, n);      } @@ -938,7 +962,7 @@ namespace boost      String basic_path<String, Traits>::extension() const      {        string_type name = filename(); -      typename string_type::size_type n = name.rfind('.'); +      typename string_type::size_type n = name.rfind(dot<path_type>::value);        if (n != string_type::npos)          return name.substr(n);        else  | 
 Swift