You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and dots ('.'), can be up to 35 characters long. Letters must be lowercase.
172 lines
4.6 KiB
172 lines
4.6 KiB
/*============================================================================= |
|
Boost.Wave: A Standard compliant C++ preprocessor library |
|
|
|
http://www.boost.org/ |
|
|
|
Copyright (c) 2001-2011 Hartmut Kaiser. 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) |
|
=============================================================================*/ |
|
|
|
#if !defined(BOOST_WAVE_FILESYSTEM_COMPATIBILITY_MAR_09_2009_0142PM) |
|
#define BOOST_WAVE_FILESYSTEM_COMPATIBILITY_MAR_09_2009_0142PM |
|
|
|
#include <string> |
|
|
|
#include <boost/version.hpp> |
|
#include <boost/filesystem/path.hpp> |
|
#include <boost/filesystem/operations.hpp> |
|
|
|
namespace boost { namespace wave { namespace util |
|
{ |
|
/////////////////////////////////////////////////////////////////////////////// |
|
// filesystem wrappers allowing to handle different Boost versions |
|
#if !defined(BOOST_FILESYSTEM_NO_DEPRECATED) |
|
// interface wrappers for older Boost versions |
|
inline boost::filesystem::path initial_path() |
|
{ |
|
return boost::filesystem::initial_path(); |
|
} |
|
|
|
inline boost::filesystem::path current_path() |
|
{ |
|
return boost::filesystem::current_path(); |
|
} |
|
|
|
template <typename String> |
|
inline boost::filesystem::path create_path(String const& p) |
|
{ |
|
#if BOOST_FILESYSTEM_VERSION >= 3 |
|
return boost::filesystem::path(p); |
|
#else |
|
return boost::filesystem::path(p, boost::filesystem::native); |
|
#endif |
|
} |
|
|
|
inline std::string leaf(boost::filesystem::path const& p) |
|
{ |
|
#if BOOST_FILESYSTEM_VERSION >= 3 |
|
return p.leaf().string(); |
|
#else |
|
return p.leaf(); |
|
#endif |
|
} |
|
|
|
inline boost::filesystem::path branch_path(boost::filesystem::path const& p) |
|
{ |
|
return p.branch_path(); |
|
} |
|
|
|
inline boost::filesystem::path normalize(boost::filesystem::path& p) |
|
{ |
|
return p.normalize(); |
|
} |
|
|
|
inline std::string native_file_string(boost::filesystem::path const& p) |
|
{ |
|
#if BOOST_FILESYSTEM_VERSION >= 3 |
|
return p.string(); |
|
#else |
|
return p.native_file_string(); |
|
#endif |
|
} |
|
|
|
inline boost::filesystem::path complete_path( |
|
boost::filesystem::path const& p) |
|
{ |
|
#if BOOST_FILESYSTEM_VERSION >= 3 |
|
return boost::filesystem3::complete(p, initial_path()); |
|
#else |
|
return boost::filesystem::complete(p, initial_path()); |
|
#endif |
|
} |
|
|
|
inline boost::filesystem::path complete_path( |
|
boost::filesystem::path const& p, boost::filesystem::path const& base) |
|
{ |
|
#if BOOST_FILESYSTEM_VERSION >= 3 |
|
return boost::filesystem3::complete(p, base); |
|
#else |
|
return boost::filesystem::complete(p, base); |
|
#endif |
|
} |
|
|
|
#else |
|
|
|
// interface wrappers if deprecated functions do not exist |
|
inline boost::filesystem::path initial_path() |
|
{ |
|
#if BOOST_FILESYSTEM_VERSION >= 3 |
|
return boost::filesystem3::detail::initial_path(); |
|
#else |
|
return boost::filesystem::initial_path<boost::filesystem::path>(); |
|
#endif |
|
} |
|
|
|
inline boost::filesystem::path current_path() |
|
{ |
|
#if BOOST_FILESYSTEM_VERSION >= 3 |
|
return boost::filesystem3::current_path(); |
|
#else |
|
return boost::filesystem::current_path<boost::filesystem::path>(); |
|
#endif |
|
} |
|
|
|
template <typename String> |
|
inline boost::filesystem::path create_path(String const& p) |
|
{ |
|
return boost::filesystem::path(p); |
|
} |
|
|
|
inline std::string leaf(boost::filesystem::path const& p) |
|
{ |
|
#if BOOST_VERSION >= 104600 && BOOST_FILESYSTEM_VERSION >= 3 |
|
return p.filename().string(); |
|
#else |
|
return p.filename(); |
|
#endif |
|
} |
|
|
|
inline boost::filesystem::path branch_path(boost::filesystem::path const& p) |
|
{ |
|
return p.parent_path(); |
|
} |
|
|
|
inline boost::filesystem::path normalize(boost::filesystem::path& p) |
|
{ |
|
return p; // function doesn't exist anymore |
|
} |
|
|
|
inline std::string native_file_string(boost::filesystem::path const& p) |
|
{ |
|
#if BOOST_VERSION >= 104600 |
|
return p.string(); |
|
#else |
|
return p.file_string(); |
|
#endif |
|
} |
|
|
|
inline boost::filesystem::path complete_path( |
|
boost::filesystem::path const& p) |
|
{ |
|
#if BOOST_VERSION >= 104600 && BOOST_FILESYSTEM_VERSION >= 3 |
|
return boost::filesystem::absolute(p, initial_path()); |
|
#else |
|
return boost::filesystem::complete(p, initial_path()); |
|
#endif |
|
} |
|
|
|
inline boost::filesystem::path complete_path( |
|
boost::filesystem::path const& p, boost::filesystem::path const& base) |
|
{ |
|
#if BOOST_VERSION >= 104600 && BOOST_FILESYSTEM_VERSION >= 3 |
|
return boost::filesystem::absolute(p, base); |
|
#else |
|
return boost::filesystem::complete(p, base); |
|
#endif |
|
} |
|
#endif |
|
|
|
}}} |
|
|
|
#endif
|
|
|