diff options
| author | Remko Tronçon <git@el-tramo.be> | 2010-04-11 18:19:17 (GMT) | 
|---|---|---|
| committer | Remko Tronçon <git@el-tramo.be> | 2010-04-11 19:20:07 (GMT) | 
| commit | 857e44c156a1dbefcb49bb5792c4384cebd8762a (patch) | |
| tree | 11947fb81ad9c502627f1b2bb8f090fb8d53c107 /3rdParty/Boost/src/boost/filesystem/path.hpp | |
| parent | 77d4eb7588e113beaa03f3347523b26adefdeb06 (diff) | |
| download | swift-contrib-857e44c156a1dbefcb49bb5792c4384cebd8762a.zip swift-contrib-857e44c156a1dbefcb49bb5792c4384cebd8762a.tar.bz2  | |
Updated Boost to 1.42.
Diffstat (limited to '3rdParty/Boost/src/boost/filesystem/path.hpp')
| -rw-r--r-- | 3rdParty/Boost/src/boost/filesystem/path.hpp | 58 | 
1 files changed, 41 insertions, 17 deletions
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