mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#742 NRLib now uses Boost from CMake
This commit is contained in:
parent
bffad18f9c
commit
54c98ca9f8
@ -355,6 +355,18 @@ endif ()
|
||||
# Set up libraries and dependent projects to link with
|
||||
#############################################################################
|
||||
|
||||
if (MSVC)
|
||||
set (RI_BOOST_LIBRARIES
|
||||
debug ${Boost_SYSTEM_LIBRARY_DEBUG}
|
||||
optimized ${Boost_SYSTEM_LIBRARY_RELEASE}
|
||||
debug ${Boost_FILESYSTEM_LIBRARY_DEBUG}
|
||||
optimized ${Boost_FILESYSTEM_LIBRARY_RELEASE}
|
||||
)
|
||||
else()
|
||||
set (RI_BOOST_LIBRARIES ${Boost_LIBRARIES})
|
||||
endif()
|
||||
|
||||
|
||||
set( LINK_LIBRARIES
|
||||
WellPathImportSsihub
|
||||
|
||||
@ -369,6 +381,8 @@ set( LINK_LIBRARIES
|
||||
|
||||
${OPENGL_LIBRARIES}
|
||||
${QT_LIBRARIES}
|
||||
|
||||
${RI_BOOST_LIBRARIES}
|
||||
|
||||
Qwt
|
||||
)
|
||||
|
@ -62,6 +62,8 @@ set(Boost_USE_MULTITHREADED ON)
|
||||
set(Boost_USE_STATIC_RUNTIME OFF)
|
||||
|
||||
|
||||
|
||||
|
||||
# Requires BOOST filesystem version 3, thus 1.44 is necessary.
|
||||
add_definitions(-DBOOST_FILESYSTEM_VERSION=3)
|
||||
find_package(Boost 1.44.0 COMPONENTS filesystem date_time system regex REQUIRED)
|
||||
|
12
ThirdParty/NRLib/CMakeLists.txt
vendored
12
ThirdParty/NRLib/CMakeLists.txt
vendored
@ -1,12 +1,18 @@
|
||||
cmake_minimum_required (VERSION 2.8)
|
||||
|
||||
ADD_DEFINITIONS("-DBOOST_ALL_NO_LIB")
|
||||
|
||||
project (NRLib)
|
||||
|
||||
#add_definitions(-DBOOST_FILESYSTEM_VERSION=3)
|
||||
#find_package(Boost 1.44.0 COMPONENTS filesystem date_time system regex REQUIRED)
|
||||
|
||||
include_directories(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/boost
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/nrlib
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/nrlib/well
|
||||
${Boost_INCLUDE_DIRS}
|
||||
|
||||
)
|
||||
|
||||
file ( GLOB NRLIB_IOTOOLS_SRC
|
||||
@ -20,10 +26,6 @@ file ( GLOB NRLIB_WELL_SRC
|
||||
)
|
||||
|
||||
add_library( ${PROJECT_NAME}
|
||||
boost/filesystem/operations.cpp
|
||||
boost/filesystem/path.cpp
|
||||
boost/filesystem/portability.cpp
|
||||
boost/system/error_code.cpp
|
||||
${NRLIB_IOTOOLS_SRC}
|
||||
${NRLIB_WELL_SRC}
|
||||
)
|
||||
|
331
ThirdParty/NRLib/boost/cerrno.hpp
vendored
331
ThirdParty/NRLib/boost/cerrno.hpp
vendored
@ -1,331 +0,0 @@
|
||||
// Boost cerrno.hpp header -------------------------------------------------//
|
||||
|
||||
// Copyright Beman Dawes 2005.
|
||||
// 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/system
|
||||
|
||||
#ifndef BOOST_CERRNO_HPP
|
||||
#define BOOST_CERRNO_HPP
|
||||
|
||||
#include <cerrno>
|
||||
|
||||
// supply errno values likely to be missing, particularly on Windows
|
||||
|
||||
#ifndef EAFNOSUPPORT
|
||||
#define EAFNOSUPPORT 9901
|
||||
#endif
|
||||
|
||||
#ifndef EADDRINUSE
|
||||
#define EADDRINUSE 9902
|
||||
#endif
|
||||
|
||||
#ifndef EADDRNOTAVAIL
|
||||
#define EADDRNOTAVAIL 9903
|
||||
#endif
|
||||
|
||||
#ifndef EISCONN
|
||||
#define EISCONN 9904
|
||||
#endif
|
||||
|
||||
#ifndef EBADMSG
|
||||
#define EBADMSG 9905
|
||||
#endif
|
||||
|
||||
#ifndef ECONNABORTED
|
||||
#define ECONNABORTED 9906
|
||||
#endif
|
||||
|
||||
#ifndef EALREADY
|
||||
#define EALREADY 9907
|
||||
#endif
|
||||
|
||||
#ifndef ECONNREFUSED
|
||||
#define ECONNREFUSED 9908
|
||||
#endif
|
||||
|
||||
#ifndef ECONNRESET
|
||||
#define ECONNRESET 9909
|
||||
#endif
|
||||
|
||||
#ifndef EDESTADDRREQ
|
||||
#define EDESTADDRREQ 9910
|
||||
#endif
|
||||
|
||||
#ifndef EHOSTUNREACH
|
||||
#define EHOSTUNREACH 9911
|
||||
#endif
|
||||
|
||||
#ifndef EIDRM
|
||||
#define EIDRM 9912
|
||||
#endif
|
||||
|
||||
#ifndef EMSGSIZE
|
||||
#define EMSGSIZE 9913
|
||||
#endif
|
||||
|
||||
#ifndef ENETDOWN
|
||||
#define ENETDOWN 9914
|
||||
#endif
|
||||
|
||||
#ifndef ENETRESET
|
||||
#define ENETRESET 9915
|
||||
#endif
|
||||
|
||||
#ifndef ENETUNREACH
|
||||
#define ENETUNREACH 9916
|
||||
#endif
|
||||
|
||||
#ifndef ENOBUFS
|
||||
#define ENOBUFS 9917
|
||||
#endif
|
||||
|
||||
#ifndef ENOLINK
|
||||
#define ENOLINK 9918
|
||||
#endif
|
||||
|
||||
#ifndef ENODATA
|
||||
#define ENODATA 9919
|
||||
#endif
|
||||
|
||||
#ifndef ENOMSG
|
||||
#define ENOMSG 9920
|
||||
#endif
|
||||
|
||||
#ifndef ENOPROTOOPT
|
||||
#define ENOPROTOOPT 9921
|
||||
#endif
|
||||
|
||||
#ifndef ENOSR
|
||||
#define ENOSR 9922
|
||||
#endif
|
||||
|
||||
#ifndef ENOTSOCK
|
||||
#define ENOTSOCK 9923
|
||||
#endif
|
||||
|
||||
#ifndef ENOSTR
|
||||
#define ENOSTR 9924
|
||||
#endif
|
||||
|
||||
#ifndef ENOTCONN
|
||||
#define ENOTCONN 9925
|
||||
#endif
|
||||
|
||||
#ifndef ENOTSUP
|
||||
#define ENOTSUP 9926
|
||||
#endif
|
||||
|
||||
#ifndef ECANCELED
|
||||
#define ECANCELED 9927
|
||||
#endif
|
||||
|
||||
#ifndef EINPROGRESS
|
||||
#define EINPROGRESS 9928
|
||||
#endif
|
||||
|
||||
#ifndef EOPNOTSUPP
|
||||
#define EOPNOTSUPP 9929
|
||||
#endif
|
||||
|
||||
#ifndef EWOULDBLOCK
|
||||
#define EWOULDBLOCK 9930
|
||||
#endif
|
||||
|
||||
#ifndef EOWNERDEAD
|
||||
#define EOWNERDEAD 9931
|
||||
#endif
|
||||
|
||||
#ifndef EPROTO
|
||||
#define EPROTO 9932
|
||||
#endif
|
||||
|
||||
#ifndef EPROTONOSUPPORT
|
||||
#define EPROTONOSUPPORT 9933
|
||||
#endif
|
||||
|
||||
#ifndef ENOTRECOVERABLE
|
||||
#define ENOTRECOVERABLE 9934
|
||||
#endif
|
||||
|
||||
#ifndef ETIME
|
||||
#define ETIME 9935
|
||||
#endif
|
||||
|
||||
#ifndef ETXTBSY
|
||||
#define ETXTBSY 9936
|
||||
#endif
|
||||
|
||||
#ifndef ETIMEDOUT
|
||||
#define ETIMEDOUT 9938
|
||||
#endif
|
||||
|
||||
#ifndef ELOOP
|
||||
#define ELOOP 9939
|
||||
#endif
|
||||
|
||||
#ifndef EOVERFLOW
|
||||
#define EOVERFLOW 9940
|
||||
#endif
|
||||
|
||||
#ifndef EPROTOTYPE
|
||||
#define EPROTOTYPE 9941
|
||||
#endif
|
||||
|
||||
#ifndef ENOSYS
|
||||
#define ENOSYS 9942
|
||||
#endif
|
||||
|
||||
#ifndef EINVAL
|
||||
#define EINVAL 9943
|
||||
#endif
|
||||
|
||||
#ifndef ERANGE
|
||||
#define ERANGE 9944
|
||||
#endif
|
||||
|
||||
#ifndef EILSEQ
|
||||
#define EILSEQ 9945
|
||||
#endif
|
||||
|
||||
// Windows Mobile doesn't appear to define these:
|
||||
|
||||
#ifndef E2BIG
|
||||
#define E2BIG 9946
|
||||
#endif
|
||||
|
||||
#ifndef EDOM
|
||||
#define EDOM 9947
|
||||
#endif
|
||||
|
||||
#ifndef EFAULT
|
||||
#define EFAULT 9948
|
||||
#endif
|
||||
|
||||
#ifndef EBADF
|
||||
#define EBADF 9949
|
||||
#endif
|
||||
|
||||
#ifndef EPIPE
|
||||
#define EPIPE 9950
|
||||
#endif
|
||||
|
||||
#ifndef EXDEV
|
||||
#define EXDEV 9951
|
||||
#endif
|
||||
|
||||
#ifndef EBUSY
|
||||
#define EBUSY 9952
|
||||
#endif
|
||||
|
||||
#ifndef ENOTEMPTY
|
||||
#define ENOTEMPTY 9953
|
||||
#endif
|
||||
|
||||
#ifndef ENOEXEC
|
||||
#define ENOEXEC 9954
|
||||
#endif
|
||||
|
||||
#ifndef EEXIST
|
||||
#define EEXIST 9955
|
||||
#endif
|
||||
|
||||
#ifndef EFBIG
|
||||
#define EFBIG 9956
|
||||
#endif
|
||||
|
||||
#ifndef ENAMETOOLONG
|
||||
#define ENAMETOOLONG 9957
|
||||
#endif
|
||||
|
||||
#ifndef ENOTTY
|
||||
#define ENOTTY 9958
|
||||
#endif
|
||||
|
||||
#ifndef EINTR
|
||||
#define EINTR 9959
|
||||
#endif
|
||||
|
||||
#ifndef ESPIPE
|
||||
#define ESPIPE 9960
|
||||
#endif
|
||||
|
||||
#ifndef EIO
|
||||
#define EIO 9961
|
||||
#endif
|
||||
|
||||
#ifndef EISDIR
|
||||
#define EISDIR 9962
|
||||
#endif
|
||||
|
||||
#ifndef ECHILD
|
||||
#define ECHILD 9963
|
||||
#endif
|
||||
|
||||
#ifndef ENOLCK
|
||||
#define ENOLCK 9964
|
||||
#endif
|
||||
|
||||
#ifndef ENOSPC
|
||||
#define ENOSPC 9965
|
||||
#endif
|
||||
|
||||
#ifndef ENXIO
|
||||
#define ENXIO 9966
|
||||
#endif
|
||||
|
||||
#ifndef ENODEV
|
||||
#define ENODEV 9967
|
||||
#endif
|
||||
|
||||
#ifndef ENOENT
|
||||
#define ENOENT 9968
|
||||
#endif
|
||||
|
||||
#ifndef ESRCH
|
||||
#define ESRCH 9969
|
||||
#endif
|
||||
|
||||
#ifndef ENOTDIR
|
||||
#define ENOTDIR 9970
|
||||
#endif
|
||||
|
||||
#ifndef ENOMEM
|
||||
#define ENOMEM 9971
|
||||
#endif
|
||||
|
||||
#ifndef EPERM
|
||||
#define EPERM 9972
|
||||
#endif
|
||||
|
||||
#ifndef EACCES
|
||||
#define EACCES 9973
|
||||
#endif
|
||||
|
||||
#ifndef EROFS
|
||||
#define EROFS 9974
|
||||
#endif
|
||||
|
||||
#ifndef EDEADLK
|
||||
#define EDEADLK 9975
|
||||
#endif
|
||||
|
||||
#ifndef EAGAIN
|
||||
#define EAGAIN 9976
|
||||
#endif
|
||||
|
||||
#ifndef ENFILE
|
||||
#define ENFILE 9977
|
||||
#endif
|
||||
|
||||
#ifndef EMFILE
|
||||
#define EMFILE 9978
|
||||
#endif
|
||||
|
||||
#ifndef EMLINK
|
||||
#define EMLINK 9979
|
||||
#endif
|
||||
|
||||
#endif // include guard
|
20
ThirdParty/NRLib/boost/filesystem.hpp
vendored
20
ThirdParty/NRLib/boost/filesystem.hpp
vendored
@ -1,20 +0,0 @@
|
||||
// boost/filesystem/filesystem.hpp -----------------------------------------//
|
||||
|
||||
// Copyright Beman Dawes 2005
|
||||
|
||||
// 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
|
||||
|
||||
//----------------------------------------------------------------------------//
|
||||
|
||||
#ifndef BOOST_FILESYSTEM_FILESYSTEM_HPP
|
||||
#define BOOST_FILESYSTEM_FILESYSTEM_HPP
|
||||
|
||||
#include <boost/filesystem/operations.hpp> // includes path.hpp
|
||||
#include <boost/filesystem/convenience.hpp>
|
||||
|
||||
#endif
|
||||
|
122
ThirdParty/NRLib/boost/filesystem/config.hpp
vendored
122
ThirdParty/NRLib/boost/filesystem/config.hpp
vendored
@ -1,122 +0,0 @@
|
||||
// boost/filesystem/config.hpp ---------------------------------------------//
|
||||
|
||||
// Copyright Beman Dawes 2003
|
||||
|
||||
// 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
|
||||
|
||||
//----------------------------------------------------------------------------//
|
||||
|
||||
#ifndef BOOST_FILESYSTEM_CONFIG_HPP
|
||||
#define BOOST_FILESYSTEM_CONFIG_HPP
|
||||
|
||||
#define BOOST_FILESYSTEM_I18N // aid users wishing to compile several versions
|
||||
|
||||
// ability to change namespace aids path_table.cpp ------------------------//
|
||||
#ifndef BOOST_FILESYSTEM_NAMESPACE
|
||||
# define BOOST_FILESYSTEM_NAMESPACE filesystem
|
||||
#endif
|
||||
|
||||
// This header implements separate compilation features as described in
|
||||
// http://www.boost.org/more/separate_compilation.html
|
||||
|
||||
// #include <boost/config.hpp>
|
||||
// #include <boost/detail/workaround.hpp>
|
||||
|
||||
// determine platform ------------------------------------------------------//
|
||||
|
||||
// BOOST_CYGWIN_PATH implies BOOST_WINDOWS_PATH and BOOST_POSIX_API
|
||||
|
||||
# if defined(BOOST_CYGWIN_PATH)
|
||||
# if defined(BOOST_POSIX_PATH)
|
||||
# error BOOST_POSIX_PATH is invalid when BOOST_CYGWIN_PATH is defined
|
||||
# endif
|
||||
# if defined(BOOST_WINDOWS_API)
|
||||
# error BOOST_WINDOWS_API is invalid when BOOST_CYGWIN_PATH is defined
|
||||
# endif
|
||||
# define BOOST_WINDOWS_PATH
|
||||
# define BOOST_POSIX_API
|
||||
# endif
|
||||
|
||||
// BOOST_POSIX_API or BOOST_WINDOWS_API specify which API to use
|
||||
|
||||
# if defined( BOOST_WINDOWS_API ) && defined( BOOST_POSIX_API )
|
||||
# error both BOOST_WINDOWS_API and BOOST_POSIX_API are defined
|
||||
# elif !defined( BOOST_WINDOWS_API ) && !defined( BOOST_POSIX_API )
|
||||
# if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__CYGWIN__)
|
||||
# define BOOST_WINDOWS_API
|
||||
# else
|
||||
# define BOOST_POSIX_API
|
||||
# endif
|
||||
# endif
|
||||
|
||||
// BOOST_WINDOWS_PATH enables Windows path syntax recognition
|
||||
|
||||
# if !defined(BOOST_POSIX_PATH) && (defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__CYGWIN__))
|
||||
# define BOOST_WINDOWS_PATH
|
||||
# endif
|
||||
|
||||
// narrow support only for badly broken compilers or libraries -------------//
|
||||
|
||||
// NRLib-version: Support for wide characters does not compile.
|
||||
|
||||
//# if defined(BOOST_NO_STD_WSTRING) || defined(BOOST_NO_SFINAE) || defined(BOOST_NO_STD_LOCALE) || BOOST_WORKAROUND(__BORLANDC__, <0x610)
|
||||
# define BOOST_FILESYSTEM_NARROW_ONLY
|
||||
//# endif
|
||||
|
||||
// enable dynamic linking on Windows ---------------------------------------//
|
||||
|
||||
# if (defined(BOOST_ALL_DYN_LINK) || defined(BOOST_FILESYSTEM_DYN_LINK)) && defined(__BORLANDC__) && __BORLANDC__ < 0x610 && defined(__WIN32__)
|
||||
# error Dynamic linking Boost.Filesystem does not work for Borland; use static linking instead
|
||||
# endif
|
||||
|
||||
#ifdef BOOST_HAS_DECLSPEC // defined in config system
|
||||
// we need to import/export our code only if the user has specifically
|
||||
// asked for it by defining either BOOST_ALL_DYN_LINK if they want all boost
|
||||
// libraries to be dynamically linked, or BOOST_FILESYSTEM_DYN_LINK
|
||||
// if they want just this one to be dynamically liked:
|
||||
#if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_FILESYSTEM_DYN_LINK)
|
||||
// export if this is our own source, otherwise import:
|
||||
#ifdef BOOST_FILESYSTEM_SOURCE
|
||||
# define BOOST_FILESYSTEM_DECL __declspec(dllexport)
|
||||
#else
|
||||
# define BOOST_FILESYSTEM_DECL __declspec(dllimport)
|
||||
#endif // BOOST_FILESYSTEM_SOURCE
|
||||
#endif // DYN_LINK
|
||||
#endif // BOOST_HAS_DECLSPEC
|
||||
//
|
||||
// if BOOST_FILESYSTEM_DECL isn't defined yet define it now:
|
||||
#ifndef BOOST_FILESYSTEM_DECL
|
||||
#define BOOST_FILESYSTEM_DECL
|
||||
#endif
|
||||
|
||||
// enable automatic library variant selection ------------------------------//
|
||||
|
||||
#if 0 // NRLib: Comment out auto-linking
|
||||
#if !defined(BOOST_FILESYSTEM_SOURCE) && !defined(BOOST_ALL_NO_LIB) && !defined(BOOST_FILESYSTEM_NO_LIB)
|
||||
//
|
||||
// Set the name of our library, this will get undef'ed by auto_link.hpp
|
||||
// once it's done with it:
|
||||
//
|
||||
#define BOOST_LIB_NAME boost_filesystem
|
||||
//
|
||||
// If we're importing code from a dll, then tell auto_link.hpp about it:
|
||||
//
|
||||
#if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_FILESYSTEM_DYN_LINK)
|
||||
# define BOOST_DYN_LINK
|
||||
#endif
|
||||
//
|
||||
// And include the header that does the work:
|
||||
//
|
||||
#include <boost/config/auto_link.hpp>
|
||||
#endif // auto-linking disabled
|
||||
#endif // #if 0
|
||||
|
||||
// NRLib: Definitions copied from other places in Boost.
|
||||
#define BOOST_STATIC_CONSTANT(type, assignment) static const type assignment
|
||||
|
||||
#define BOOST_FILESYSTEM_NO_DEPRECATED
|
||||
|
||||
#endif // BOOST_FILESYSTEM_CONFIG_HPP
|
333
ThirdParty/NRLib/boost/filesystem/convenience.hpp
vendored
333
ThirdParty/NRLib/boost/filesystem/convenience.hpp
vendored
@ -1,333 +0,0 @@
|
||||
// boost/filesystem/convenience.hpp ----------------------------------------//
|
||||
|
||||
// Copyright Beman Dawes, 2002-2005
|
||||
// Copyright Vladimir Prus, 2002
|
||||
// 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
|
||||
|
||||
//----------------------------------------------------------------------------//
|
||||
|
||||
#ifndef BOOST_FILESYSTEM_CONVENIENCE_HPP
|
||||
#define BOOST_FILESYSTEM_CONVENIENCE_HPP
|
||||
|
||||
#include <boost/filesystem/operations.hpp>
|
||||
#include <boost/system/error_code.hpp>
|
||||
#include <vector>
|
||||
#include <stack>
|
||||
|
||||
//#include <boost/config/abi_prefix.hpp> // must be the last #include
|
||||
|
||||
# ifndef BOOST_FILESYSTEM_NARROW_ONLY
|
||||
# define BOOST_FS_FUNC(BOOST_FS_TYPE) \
|
||||
template<class Path> typename boost::enable_if<is_basic_path<Path>, \
|
||||
BOOST_FS_TYPE>::type
|
||||
# define BOOST_FS_FUNC_STRING BOOST_FS_FUNC(typename Path::string_type)
|
||||
# define BOOST_FS_TYPENAME typename
|
||||
# else
|
||||
# define BOOST_FS_FUNC(BOOST_FS_TYPE) inline BOOST_FS_TYPE
|
||||
typedef boost::filesystem::path Path;
|
||||
# define BOOST_FS_FUNC_STRING inline std::string
|
||||
# define BOOST_FS_TYPENAME
|
||||
# endif
|
||||
|
||||
namespace boost
|
||||
{
|
||||
namespace filesystem
|
||||
{
|
||||
|
||||
BOOST_FS_FUNC(bool) create_directories(const Path& ph)
|
||||
{
|
||||
if (ph.empty() || exists(ph))
|
||||
{
|
||||
if ( !ph.empty() && !is_directory(ph) )
|
||||
throw basic_filesystem_error<Path>(
|
||||
"boost::filesystem::create_directories", ph,
|
||||
make_error_code( boost::system::errc::file_exists ) );
|
||||
return false;
|
||||
}
|
||||
|
||||
// First create branch, by calling ourself recursively
|
||||
create_directories(ph.parent_path());
|
||||
// Now that parent's path exists, create the directory
|
||||
create_directory(ph);
|
||||
return true;
|
||||
}
|
||||
|
||||
# ifndef BOOST_FILESYSTEM_NO_DEPRECATED
|
||||
|
||||
BOOST_FS_FUNC_STRING extension(const Path& ph)
|
||||
{
|
||||
typedef BOOST_FS_TYPENAME Path::string_type string_type;
|
||||
string_type filename = ph.filename();
|
||||
|
||||
BOOST_FS_TYPENAME string_type::size_type n = filename.rfind('.');
|
||||
if (n != string_type::npos)
|
||||
return filename.substr(n);
|
||||
else
|
||||
return string_type();
|
||||
}
|
||||
|
||||
BOOST_FS_FUNC_STRING basename(const Path& ph)
|
||||
{
|
||||
typedef BOOST_FS_TYPENAME Path::string_type string_type;
|
||||
string_type filename = ph.filename();
|
||||
BOOST_FS_TYPENAME string_type::size_type n = filename.rfind('.');
|
||||
return filename.substr(0, n);
|
||||
}
|
||||
|
||||
|
||||
BOOST_FS_FUNC(Path) change_extension( const Path & ph,
|
||||
const BOOST_FS_TYPENAME Path::string_type & new_extension )
|
||||
{ return ph.parent_path() / (basename(ph) + new_extension); }
|
||||
|
||||
# endif
|
||||
|
||||
# ifndef BOOST_FILESYSTEM_NARROW_ONLY
|
||||
|
||||
// "do-the-right-thing" overloads ---------------------------------------//
|
||||
|
||||
inline bool create_directories(const path& ph)
|
||||
{ return create_directories<path>(ph); }
|
||||
inline bool create_directories(const wpath& ph)
|
||||
{ return create_directories<wpath>(ph); }
|
||||
|
||||
# ifndef BOOST_FILESYSTEM_NO_DEPRECATED
|
||||
inline std::string extension(const path& ph)
|
||||
{ return extension<path>(ph); }
|
||||
inline std::wstring extension(const wpath& ph)
|
||||
{ return extension<wpath>(ph); }
|
||||
|
||||
inline std::string basename(const path& ph)
|
||||
{ return basename<path>( ph ); }
|
||||
inline std::wstring basename(const wpath& ph)
|
||||
{ return basename<wpath>( ph ); }
|
||||
|
||||
inline path change_extension( const path & ph, const std::string& new_ex )
|
||||
{ return change_extension<path>( ph, new_ex ); }
|
||||
inline wpath change_extension( const wpath & ph, const std::wstring& new_ex )
|
||||
{ return change_extension<wpath>( ph, new_ex ); }
|
||||
# endif
|
||||
|
||||
# endif
|
||||
|
||||
|
||||
// basic_recursive_directory_iterator helpers --------------------------//
|
||||
|
||||
namespace detail
|
||||
{
|
||||
template< class Path >
|
||||
struct recur_dir_itr_imp
|
||||
{
|
||||
typedef basic_directory_iterator< Path > element_type;
|
||||
std::stack< element_type, std::vector< element_type > > m_stack;
|
||||
int m_level;
|
||||
bool m_no_push;
|
||||
bool m_no_throw;
|
||||
|
||||
recur_dir_itr_imp() : m_level(0), m_no_push(false), m_no_throw(false) {}
|
||||
};
|
||||
|
||||
} // namespace detail
|
||||
|
||||
// basic_recursive_directory_iterator ----------------------------------//
|
||||
|
||||
template< class Path >
|
||||
class basic_recursive_directory_iterator
|
||||
//: public boost::iterator_facade<
|
||||
// basic_recursive_directory_iterator<Path>,
|
||||
// basic_directory_entry<Path>,
|
||||
// boost::single_pass_traversal_tag >
|
||||
{
|
||||
public:
|
||||
typedef Path path_type;
|
||||
typedef basic_directory_entry<Path> value_type;
|
||||
typedef value_type& reference;
|
||||
typedef const value_type* pointer;
|
||||
typedef ptrdiff_t difference_type;
|
||||
typedef std::input_iterator_tag iterator_category;
|
||||
|
||||
basic_recursive_directory_iterator() : m_imp(0) {} // creates the "end" iterator
|
||||
|
||||
explicit basic_recursive_directory_iterator( const Path & dir_path );
|
||||
basic_recursive_directory_iterator( const Path & dir_path,
|
||||
system::error_code & ec );
|
||||
|
||||
~basic_recursive_directory_iterator() { delete m_imp; }
|
||||
reference operator*() const
|
||||
{ return dereference(); }
|
||||
|
||||
pointer operator->() const
|
||||
{ return &(operator*()); }
|
||||
|
||||
const basic_recursive_directory_iterator& operator++() {
|
||||
increment();
|
||||
return *this;
|
||||
}
|
||||
|
||||
basic_recursive_directory_iterator operator++(int) {
|
||||
basic_recursive_directory_iterator tmp(*this);
|
||||
++*this;
|
||||
return tmp;
|
||||
}
|
||||
|
||||
bool operator==(const basic_recursive_directory_iterator& rhs) const
|
||||
{ return equal (rhs); }
|
||||
|
||||
bool operator!=(const basic_recursive_directory_iterator& rhs) const
|
||||
{ return !operator==(rhs); }
|
||||
|
||||
int level() const { return m_imp->m_level; }
|
||||
|
||||
void pop();
|
||||
void no_push()
|
||||
{
|
||||
BOOST_ASSERT( m_imp->get() && "attempt to no_push() on end iterator" );
|
||||
m_imp->m_no_push = true;
|
||||
}
|
||||
|
||||
file_status status() const
|
||||
{
|
||||
BOOST_ASSERT( m_imp->get()
|
||||
&& "attempt to call status() on end recursive_iterator" );
|
||||
return m_imp->m_stack.top()->status();
|
||||
}
|
||||
|
||||
file_status symlink_status() const
|
||||
{
|
||||
BOOST_ASSERT( m_imp->get()
|
||||
&& "attempt to call symlink_status() on end recursive_iterator" );
|
||||
return m_imp->m_stack.top()->symlink_status();
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
// shared_ptr provides shallow-copy semantics required for InputIterators.
|
||||
// m_imp->get()==0 indicates the end iterator.
|
||||
detail::recur_dir_itr_imp< Path > * m_imp;
|
||||
|
||||
//typename boost::iterator_facade<
|
||||
// basic_recursive_directory_iterator<Path>,
|
||||
// basic_directory_entry<Path>,
|
||||
// boost::single_pass_traversal_tag >::reference
|
||||
reference dereference() const
|
||||
{
|
||||
assert( m_imp != 0 && "attempt to dereference end iterator" );
|
||||
return *m_imp->m_stack.top();
|
||||
}
|
||||
|
||||
void increment();
|
||||
|
||||
bool equal( const basic_recursive_directory_iterator & rhs ) const
|
||||
{ return m_imp == rhs.m_imp; }
|
||||
|
||||
};
|
||||
|
||||
typedef basic_recursive_directory_iterator<path> recursive_directory_iterator;
|
||||
# ifndef BOOST_FILESYSTEM_NARROW_ONLY
|
||||
typedef basic_recursive_directory_iterator<wpath> wrecursive_directory_iterator;
|
||||
# endif
|
||||
|
||||
// basic_recursive_directory_iterator implementation -------------------//
|
||||
|
||||
// constructors
|
||||
template<class Path>
|
||||
basic_recursive_directory_iterator<Path>::
|
||||
basic_recursive_directory_iterator( const Path & dir_path )
|
||||
: m_imp( new detail::recur_dir_itr_imp<Path> )
|
||||
{
|
||||
m_imp->m_stack.push( basic_directory_iterator<Path>( dir_path ) );
|
||||
if ( m_imp->m_stack.top () == basic_directory_iterator<Path>() )
|
||||
{ m_imp->reset (); }
|
||||
}
|
||||
|
||||
template<class Path>
|
||||
basic_recursive_directory_iterator<Path>::
|
||||
basic_recursive_directory_iterator( const Path & dir_path,
|
||||
system::error_code & ec )
|
||||
: m_imp( new detail::recur_dir_itr_imp<Path> )
|
||||
{
|
||||
m_imp->m_no_throw = true;
|
||||
m_imp->m_stack.push( basic_directory_iterator<Path>( dir_path, ec ) );
|
||||
if ( m_imp->m_stack.top () == basic_directory_iterator<Path>() )
|
||||
{ m_imp->reset (); }
|
||||
}
|
||||
|
||||
// increment
|
||||
template<class Path>
|
||||
void basic_recursive_directory_iterator<Path>::increment()
|
||||
{
|
||||
BOOST_ASSERT( m_imp->get() && "increment on end iterator" );
|
||||
|
||||
static const basic_directory_iterator<Path> end_itr;
|
||||
|
||||
if ( m_imp->m_no_push )
|
||||
{ m_imp->m_no_push = false; }
|
||||
else if ( is_directory( m_imp->m_stack.top()->status() ) )
|
||||
{
|
||||
system::error_code ec;
|
||||
#if 0 // BOOST_WORKAROUND(__CODEGEARC__, BOOST_TESTED_AT(0x610))
|
||||
if ( m_imp->m_no_throw ) {
|
||||
m_imp->m_stack.push(
|
||||
basic_directory_iterator<Path>( *m_imp->m_stack.top(), ec )
|
||||
);
|
||||
}
|
||||
else {
|
||||
m_imp->m_stack.push(
|
||||
basic_directory_iterator<Path>( *m_imp->m_stack.top() )
|
||||
);
|
||||
}
|
||||
#else
|
||||
m_imp->m_stack.push(
|
||||
m_imp->m_no_throw
|
||||
? basic_directory_iterator<Path>( *m_imp->m_stack.top(), ec )
|
||||
: basic_directory_iterator<Path>( *m_imp->m_stack.top() ) );
|
||||
#endif
|
||||
if ( m_imp->m_stack.top() != end_itr )
|
||||
{
|
||||
++m_imp->m_level;
|
||||
return;
|
||||
}
|
||||
m_imp->m_stack.pop();
|
||||
}
|
||||
|
||||
while ( !m_imp->m_stack.empty()
|
||||
&& ++m_imp->m_stack.top() == end_itr )
|
||||
{
|
||||
m_imp->m_stack.pop();
|
||||
--m_imp->m_level;
|
||||
}
|
||||
|
||||
if ( m_imp->m_stack.empty() ) m_imp->reset(); // done, so make end iterator
|
||||
}
|
||||
|
||||
// pop
|
||||
template<class Path>
|
||||
void basic_recursive_directory_iterator<Path>::pop()
|
||||
{
|
||||
BOOST_ASSERT( m_imp->get() && "pop on end iterator" );
|
||||
BOOST_ASSERT( m_imp->m_level > 0 && "pop with level < 1" );
|
||||
|
||||
static const basic_directory_iterator<Path> end_itr;
|
||||
|
||||
do
|
||||
{
|
||||
m_imp->m_stack.pop();
|
||||
--m_imp->m_level;
|
||||
}
|
||||
while ( !m_imp->m_stack.empty()
|
||||
&& ++m_imp->m_stack.top() == end_itr );
|
||||
|
||||
if ( m_imp->m_stack.empty() ) m_imp->reset(); // done, so make end iterator
|
||||
}
|
||||
|
||||
} // namespace filesystem
|
||||
} // namespace boost
|
||||
|
||||
#undef BOOST_FS_FUNC_STRING
|
||||
#undef BOOST_FS_FUNC
|
||||
|
||||
//#include <boost/config/abi_suffix.hpp> // pops abi_prefix.hpp pragmas
|
||||
#endif // BOOST_FILESYSTEM_CONVENIENCE_HPP
|
584
ThirdParty/NRLib/boost/filesystem/fstream.hpp
vendored
584
ThirdParty/NRLib/boost/filesystem/fstream.hpp
vendored
@ -1,584 +0,0 @@
|
||||
// boost/filesystem/fstream.hpp --------------------------------------------//
|
||||
|
||||
// Copyright Beman Dawes 2002.
|
||||
// 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
|
||||
|
||||
//----------------------------------------------------------------------------//
|
||||
|
||||
#ifndef BOOST_FILESYSTEM_FSTREAM_HPP
|
||||
#define BOOST_FILESYSTEM_FSTREAM_HPP
|
||||
|
||||
#include <boost/filesystem/operations.hpp> // for 8.3 hack (see below)
|
||||
//#include <boost/utility/enable_if.hpp>
|
||||
//#include <boost/detail/workaround.hpp>
|
||||
|
||||
#include <iosfwd>
|
||||
#include <fstream>
|
||||
|
||||
//#include <boost/config/abi_prefix.hpp> // must be the last #include
|
||||
|
||||
// NOTE: fstream.hpp for Boost 1.32.0 and earlier supplied workarounds for
|
||||
// various compiler problems. They have been removed to ease development of the
|
||||
// basic i18n functionality. Once the new interface is stable, the workarounds
|
||||
// will be reinstated for any compilers that otherwise can support the rest of
|
||||
// the library after internationalization.
|
||||
|
||||
namespace boost
|
||||
{
|
||||
namespace filesystem
|
||||
{
|
||||
namespace detail
|
||||
{
|
||||
# if defined(BOOST_WINDOWS_API) && !defined(BOOST_FILESYSTEM_NARROW_ONLY)
|
||||
# if !defined(BOOST_DINKUMWARE_STDLIB) || BOOST_DINKUMWARE_STDLIB < 405
|
||||
// The 8.3 hack:
|
||||
// C++98 does not supply a wchar_t open, so try to get an equivalent
|
||||
// narrow char name based on the short, so-called 8.3, name.
|
||||
// Not needed for Dinkumware 405 and later as they do supply wchar_t open.
|
||||
BOOST_FILESYSTEM_DECL bool create_file_api( const std::wstring & ph,
|
||||
std::ios_base::openmode mode ); // true if succeeds
|
||||
BOOST_FILESYSTEM_DECL std::string narrow_path_api(
|
||||
const std::wstring & ph ); // return is empty if fails
|
||||
|
||||
inline std::string path_proxy( const std::wstring & file_ph,
|
||||
std::ios_base::openmode mode )
|
||||
// Return a non-existant path if cannot supply narrow short path.
|
||||
// An empty path doesn't work because some Dinkumware versions
|
||||
// assert the path is non-empty.
|
||||
{
|
||||
std::string narrow_ph;
|
||||
bool created_file( false );
|
||||
if ( !exists( file_ph )
|
||||
&& (mode & std::ios_base::out) != 0
|
||||
&& create_file_api( file_ph, mode ) )
|
||||
{
|
||||
created_file = true;
|
||||
}
|
||||
narrow_ph = narrow_path_api( file_ph );
|
||||
if ( narrow_ph.empty() )
|
||||
{
|
||||
if ( created_file ) remove_api( file_ph );
|
||||
narrow_ph = "\x01";
|
||||
}
|
||||
return narrow_ph;
|
||||
}
|
||||
# else
|
||||
// Dinkumware 405 and later does supply wchar_t functions
|
||||
inline const std::wstring & path_proxy( const std::wstring & file_ph,
|
||||
std::ios_base::openmode )
|
||||
{ return file_ph; }
|
||||
# endif
|
||||
# endif
|
||||
|
||||
inline const std::string & path_proxy( const std::string & file_ph,
|
||||
std::ios_base::openmode )
|
||||
{ return file_ph; }
|
||||
|
||||
} // namespace detail
|
||||
|
||||
template < class charT, class traits = std::char_traits<charT> >
|
||||
class basic_filebuf : public std::basic_filebuf<charT,traits>
|
||||
{
|
||||
private: // disallow copying
|
||||
basic_filebuf( const basic_filebuf & );
|
||||
const basic_filebuf & operator=( const basic_filebuf & );
|
||||
public:
|
||||
basic_filebuf() {}
|
||||
virtual ~basic_filebuf() {}
|
||||
|
||||
# ifndef BOOST_FILESYSTEM_NARROW_ONLY
|
||||
template<class Path>
|
||||
typename boost::enable_if<is_basic_path<Path>,
|
||||
basic_filebuf<charT,traits> *>::type
|
||||
open( const Path & file_ph, std::ios_base::openmode mode );
|
||||
|
||||
basic_filebuf<charT,traits> *
|
||||
open( const wpath & file_ph, std::ios_base::openmode mode );
|
||||
# endif
|
||||
|
||||
# if !BOOST_WORKAROUND( BOOST_MSVC, <= 1200 ) // VC++ 6.0 can't handle this
|
||||
basic_filebuf<charT,traits> *
|
||||
open( const path & file_ph, std::ios_base::openmode mode );
|
||||
# endif
|
||||
};
|
||||
|
||||
template < class charT, class traits = std::char_traits<charT> >
|
||||
class basic_ifstream : public std::basic_ifstream<charT,traits>
|
||||
{
|
||||
private: // disallow copying
|
||||
basic_ifstream( const basic_ifstream & );
|
||||
const basic_ifstream & operator=( const basic_ifstream & );
|
||||
public:
|
||||
basic_ifstream() {}
|
||||
|
||||
// use two signatures, rather than one signature with default second
|
||||
// argument, to workaround VC++ 7.1 bug (ID VSWhidbey 38416)
|
||||
|
||||
# ifndef BOOST_FILESYSTEM_NARROW_ONLY
|
||||
template<class Path>
|
||||
explicit basic_ifstream( const Path & file_ph,
|
||||
typename boost::enable_if<is_basic_path<Path> >::type* dummy = 0 );
|
||||
|
||||
template<class Path>
|
||||
basic_ifstream( const Path & file_ph, std::ios_base::openmode mode,
|
||||
typename boost::enable_if<is_basic_path<Path> >::type* dummy = 0 );
|
||||
|
||||
template<class Path>
|
||||
typename boost::enable_if<is_basic_path<Path>, void>::type
|
||||
open( const Path & file_ph );
|
||||
|
||||
template<class Path>
|
||||
typename boost::enable_if<is_basic_path<Path>, void>::type
|
||||
open( const Path & file_ph, std::ios_base::openmode mode );
|
||||
|
||||
explicit basic_ifstream( const wpath & file_ph );
|
||||
basic_ifstream( const wpath & file_ph, std::ios_base::openmode mode );
|
||||
void open( const wpath & file_ph );
|
||||
void open( const wpath & file_ph, std::ios_base::openmode mode );
|
||||
# endif
|
||||
|
||||
explicit basic_ifstream( const path & file_ph );
|
||||
basic_ifstream( const path & file_ph, std::ios_base::openmode mode );
|
||||
# if !BOOST_WORKAROUND( BOOST_MSVC, <= 1200 ) // VC++ 6.0 can't handle this
|
||||
void open( const path & file_ph );
|
||||
void open( const path & file_ph, std::ios_base::openmode mode );
|
||||
# endif
|
||||
virtual ~basic_ifstream() {}
|
||||
};
|
||||
|
||||
template < class charT, class traits = std::char_traits<charT> >
|
||||
class basic_ofstream : public std::basic_ofstream<charT,traits>
|
||||
{
|
||||
private: // disallow copying
|
||||
basic_ofstream( const basic_ofstream & );
|
||||
const basic_ofstream & operator=( const basic_ofstream & );
|
||||
public:
|
||||
basic_ofstream() {}
|
||||
|
||||
// use two signatures, rather than one signature with default second
|
||||
// argument, to workaround VC++ 7.1 bug (ID VSWhidbey 38416)
|
||||
|
||||
# ifndef BOOST_FILESYSTEM_NARROW_ONLY
|
||||
|
||||
template<class Path>
|
||||
explicit basic_ofstream( const Path & file_ph,
|
||||
typename boost::enable_if<is_basic_path<Path> >::type* dummy = 0 );
|
||||
explicit basic_ofstream( const wpath & file_ph );
|
||||
|
||||
template<class Path>
|
||||
basic_ofstream( const Path & file_ph, std::ios_base::openmode mode,
|
||||
typename boost::enable_if<is_basic_path<Path> >::type* dummy = 0 );
|
||||
basic_ofstream( const wpath & file_ph, std::ios_base::openmode mode );
|
||||
|
||||
template<class Path>
|
||||
typename boost::enable_if<is_basic_path<Path>, void>::type
|
||||
open( const Path & file_ph );
|
||||
void open( const wpath & file_ph );
|
||||
|
||||
template<class Path>
|
||||
typename boost::enable_if<is_basic_path<Path>, void>::type
|
||||
open( const Path & file_ph, std::ios_base::openmode mode );
|
||||
void open( const wpath & file_ph, std::ios_base::openmode mode );
|
||||
|
||||
# endif
|
||||
|
||||
explicit basic_ofstream( const path & file_ph );
|
||||
basic_ofstream( const path & file_ph, std::ios_base::openmode mode );
|
||||
# if !BOOST_WORKAROUND( BOOST_MSVC, <= 1200 ) // VC++ 6.0 can't handle this
|
||||
void open( const path & file_ph );
|
||||
void open( const path & file_ph, std::ios_base::openmode mode );
|
||||
# endif
|
||||
virtual ~basic_ofstream() {}
|
||||
};
|
||||
|
||||
template < class charT, class traits = std::char_traits<charT> >
|
||||
class basic_fstream : public std::basic_fstream<charT,traits>
|
||||
{
|
||||
private: // disallow copying
|
||||
basic_fstream( const basic_fstream & );
|
||||
const basic_fstream & operator=( const basic_fstream & );
|
||||
public:
|
||||
basic_fstream() {}
|
||||
|
||||
// use two signatures, rather than one signature with default second
|
||||
// argument, to workaround VC++ 7.1 bug (ID VSWhidbey 38416)
|
||||
|
||||
# ifndef BOOST_FILESYSTEM_NARROW_ONLY
|
||||
|
||||
template<class Path>
|
||||
explicit basic_fstream( const Path & file_ph,
|
||||
typename boost::enable_if<is_basic_path<Path> >::type* dummy = 0 );
|
||||
explicit basic_fstream( const wpath & file_ph );
|
||||
|
||||
template<class Path>
|
||||
basic_fstream( const Path & file_ph, std::ios_base::openmode mode,
|
||||
typename boost::enable_if<is_basic_path<Path> >::type* dummy = 0 );
|
||||
basic_fstream( const wpath & file_ph, std::ios_base::openmode mode );
|
||||
|
||||
template<class Path>
|
||||
typename boost::enable_if<is_basic_path<Path>, void>::type
|
||||
open( const Path & file_ph );
|
||||
void open( const wpath & file_ph );
|
||||
|
||||
template<class Path>
|
||||
typename boost::enable_if<is_basic_path<Path>, void>::type
|
||||
open( const Path & file_ph, std::ios_base::openmode mode );
|
||||
void open( const wpath & file_ph, std::ios_base::openmode mode );
|
||||
|
||||
# endif
|
||||
|
||||
explicit basic_fstream( const path & file_ph );
|
||||
basic_fstream( const path & file_ph, std::ios_base::openmode mode );
|
||||
# if !BOOST_WORKAROUND( BOOST_MSVC, <= 1200 ) // VC++ 6.0 can't handle this
|
||||
void open( const path & file_ph );
|
||||
void open( const path & file_ph, std::ios_base::openmode mode );
|
||||
# endif
|
||||
virtual ~basic_fstream() {}
|
||||
|
||||
};
|
||||
|
||||
typedef basic_filebuf<char> filebuf;
|
||||
typedef basic_ifstream<char> ifstream;
|
||||
typedef basic_ofstream<char> ofstream;
|
||||
typedef basic_fstream<char> fstream;
|
||||
|
||||
# ifndef BOOST_FILESYSTEM_NARROW_ONLY
|
||||
typedef basic_filebuf<wchar_t> wfilebuf;
|
||||
typedef basic_ifstream<wchar_t> wifstream;
|
||||
typedef basic_fstream<wchar_t> wfstream;
|
||||
typedef basic_ofstream<wchar_t> wofstream;
|
||||
# endif
|
||||
|
||||
# ifndef BOOST_FILESYSTEM_NARROW_ONLY
|
||||
|
||||
// basic_filebuf definitions -----------------------------------------------//
|
||||
|
||||
template <class charT, class traits>
|
||||
template<class Path>
|
||||
typename boost::enable_if<is_basic_path<Path>,
|
||||
basic_filebuf<charT,traits> *>::type
|
||||
basic_filebuf<charT,traits>::open( const Path & file_ph,
|
||||
std::ios_base::openmode mode )
|
||||
{
|
||||
return (std::basic_filebuf<charT,traits>::open( detail::path_proxy(
|
||||
file_ph.external_file_string(), mode ).c_str(), mode )
|
||||
== 0) ? 0 : this;
|
||||
}
|
||||
|
||||
template <class charT, class traits>
|
||||
basic_filebuf<charT,traits> *
|
||||
basic_filebuf<charT, traits>::open( const wpath & file_ph,
|
||||
std::ios_base::openmode mode )
|
||||
{
|
||||
return this->BOOST_NESTED_TEMPLATE open<wpath>( file_ph, mode );
|
||||
}
|
||||
|
||||
// basic_ifstream definitions ----------------------------------------------//
|
||||
|
||||
template <class charT, class traits> template<class Path>
|
||||
basic_ifstream<charT,traits>::basic_ifstream(const Path & file_ph,
|
||||
typename boost::enable_if<is_basic_path<Path> >::type* )
|
||||
: std::basic_ifstream<charT,traits>(
|
||||
detail::path_proxy( file_ph.external_file_string(),
|
||||
std::ios_base::in ).c_str(), std::ios_base::in ) {}
|
||||
|
||||
template <class charT, class traits>
|
||||
basic_ifstream<charT,traits>::basic_ifstream( const wpath & file_ph )
|
||||
: std::basic_ifstream<charT,traits>(
|
||||
detail::path_proxy( file_ph.external_file_string(),
|
||||
std::ios_base::in ).c_str(), std::ios_base::in ) {}
|
||||
|
||||
template <class charT, class traits> template<class Path>
|
||||
basic_ifstream<charT,traits>::basic_ifstream( const Path & file_ph,
|
||||
std::ios_base::openmode mode,
|
||||
typename boost::enable_if<is_basic_path<Path> >::type* )
|
||||
: std::basic_ifstream<charT,traits>(
|
||||
detail::path_proxy( file_ph.external_file_string(),
|
||||
mode ).c_str(), mode | std::ios_base::in ) {}
|
||||
|
||||
template <class charT, class traits>
|
||||
basic_ifstream<charT,traits>::basic_ifstream( const wpath & file_ph,
|
||||
std::ios_base::openmode mode )
|
||||
: std::basic_ifstream<charT,traits>(
|
||||
detail::path_proxy( file_ph.external_file_string(),
|
||||
mode ).c_str(), mode | std::ios_base::in ) {}
|
||||
|
||||
template <class charT, class traits> template<class Path>
|
||||
typename boost::enable_if<is_basic_path<Path>, void>::type
|
||||
basic_ifstream<charT,traits>::open( const Path & file_ph )
|
||||
{
|
||||
std::basic_ifstream<charT,traits>::open(
|
||||
detail::path_proxy( file_ph.external_file_string(),
|
||||
std::ios_base::in ).c_str(), std::ios_base::in );
|
||||
}
|
||||
|
||||
template <class charT, class traits>
|
||||
void basic_ifstream<charT,traits>::open( const wpath & file_ph )
|
||||
{
|
||||
std::basic_ifstream<charT,traits>::open(
|
||||
detail::path_proxy( file_ph.external_file_string(),
|
||||
std::ios_base::in ).c_str(), std::ios_base::in );
|
||||
}
|
||||
|
||||
template <class charT, class traits> template<class Path>
|
||||
typename boost::enable_if<is_basic_path<Path>, void>::type
|
||||
basic_ifstream<charT,traits>::open( const Path & file_ph,
|
||||
std::ios_base::openmode mode )
|
||||
{
|
||||
std::basic_ifstream<charT,traits>::open(
|
||||
detail::path_proxy( file_ph.external_file_string(),
|
||||
mode ).c_str(), mode | std::ios_base::in );
|
||||
}
|
||||
|
||||
template <class charT, class traits>
|
||||
void basic_ifstream<charT,traits>::open( const wpath & file_ph,
|
||||
std::ios_base::openmode mode )
|
||||
{
|
||||
std::basic_ifstream<charT,traits>::open(
|
||||
detail::path_proxy( file_ph.external_file_string(),
|
||||
mode ).c_str(), mode | std::ios_base::in );
|
||||
}
|
||||
|
||||
// basic_ofstream definitions ----------------------------------------------//
|
||||
|
||||
template <class charT, class traits> template<class Path>
|
||||
basic_ofstream<charT,traits>::basic_ofstream(const Path & file_ph,
|
||||
typename boost::enable_if<is_basic_path<Path> >::type* )
|
||||
: std::basic_ofstream<charT,traits>(
|
||||
detail::path_proxy( file_ph.external_file_string(),
|
||||
std::ios_base::out ).c_str(), std::ios_base::out ) {}
|
||||
|
||||
template <class charT, class traits>
|
||||
basic_ofstream<charT,traits>::basic_ofstream( const wpath & file_ph )
|
||||
: std::basic_ofstream<charT,traits>(
|
||||
detail::path_proxy( file_ph.external_file_string(),
|
||||
std::ios_base::out ).c_str(), std::ios_base::out ) {}
|
||||
|
||||
template <class charT, class traits> template<class Path>
|
||||
basic_ofstream<charT,traits>::basic_ofstream( const Path & file_ph,
|
||||
std::ios_base::openmode mode,
|
||||
typename boost::enable_if<is_basic_path<Path> >::type* )
|
||||
: std::basic_ofstream<charT,traits>(
|
||||
detail::path_proxy( file_ph.external_file_string(),
|
||||
mode ).c_str(), mode | std::ios_base::out ) {}
|
||||
|
||||
template <class charT, class traits>
|
||||
basic_ofstream<charT,traits>::basic_ofstream( const wpath & file_ph,
|
||||
std::ios_base::openmode mode )
|
||||
: std::basic_ofstream<charT,traits>(
|
||||
detail::path_proxy( file_ph.external_file_string(),
|
||||
mode ).c_str(), mode | std::ios_base::out ) {}
|
||||
|
||||
template <class charT, class traits> template<class Path>
|
||||
typename boost::enable_if<is_basic_path<Path>, void>::type
|
||||
basic_ofstream<charT,traits>::open( const Path & file_ph )
|
||||
{
|
||||
std::basic_ofstream<charT,traits>::open(
|
||||
detail::path_proxy( file_ph.external_file_string(),
|
||||
std::ios_base::out ).c_str(), std::ios_base::out );
|
||||
}
|
||||
|
||||
template <class charT, class traits>
|
||||
void basic_ofstream<charT,traits>::open( const wpath & file_ph )
|
||||
{
|
||||
std::basic_ofstream<charT,traits>::open(
|
||||
detail::path_proxy( file_ph.external_file_string(),
|
||||
std::ios_base::out ).c_str(), std::ios_base::out );
|
||||
}
|
||||
|
||||
template <class charT, class traits> template<class Path>
|
||||
typename boost::enable_if<is_basic_path<Path>, void>::type
|
||||
basic_ofstream<charT,traits>::open( const Path & file_ph,
|
||||
std::ios_base::openmode mode )
|
||||
{
|
||||
std::basic_ofstream<charT,traits>::open(
|
||||
detail::path_proxy( file_ph.external_file_string(),
|
||||
mode ).c_str(), mode | std::ios_base::out );
|
||||
}
|
||||
|
||||
template <class charT, class traits>
|
||||
void basic_ofstream<charT,traits>::open( const wpath & file_ph,
|
||||
std::ios_base::openmode mode )
|
||||
{
|
||||
std::basic_ofstream<charT,traits>::open(
|
||||
detail::path_proxy( file_ph.external_file_string(),
|
||||
mode ).c_str(), mode | std::ios_base::out );
|
||||
}
|
||||
|
||||
// basic_fstream definitions -----------------------------------------------//
|
||||
|
||||
template <class charT, class traits> template<class Path>
|
||||
basic_fstream<charT,traits>::basic_fstream(const Path & file_ph,
|
||||
typename boost::enable_if<is_basic_path<Path> >::type* )
|
||||
: std::basic_fstream<charT,traits>(
|
||||
detail::path_proxy( file_ph.external_file_string(),
|
||||
std::ios_base::in|std::ios_base::out ).c_str(),
|
||||
std::ios_base::in|std::ios_base::out ) {}
|
||||
|
||||
template <class charT, class traits>
|
||||
basic_fstream<charT,traits>::basic_fstream( const wpath & file_ph )
|
||||
: std::basic_fstream<charT,traits>(
|
||||
detail::path_proxy( file_ph.external_file_string(),
|
||||
std::ios_base::in|std::ios_base::out ).c_str(),
|
||||
std::ios_base::in|std::ios_base::out ) {}
|
||||
|
||||
template <class charT, class traits> template<class Path>
|
||||
basic_fstream<charT,traits>::basic_fstream( const Path & file_ph,
|
||||
std::ios_base::openmode mode,
|
||||
typename boost::enable_if<is_basic_path<Path> >::type* )
|
||||
: std::basic_fstream<charT,traits>(
|
||||
detail::path_proxy( file_ph.external_file_string(),
|
||||
mode ).c_str(), mode | std::ios_base::in | std::ios_base::out ) {}
|
||||
|
||||
template <class charT, class traits>
|
||||
basic_fstream<charT,traits>::basic_fstream( const wpath & file_ph,
|
||||
std::ios_base::openmode mode )
|
||||
: std::basic_fstream<charT,traits>(
|
||||
detail::path_proxy( file_ph.external_file_string(),
|
||||
mode ).c_str(), mode | std::ios_base::in | std::ios_base::out ) {}
|
||||
|
||||
template <class charT, class traits> template<class Path>
|
||||
typename boost::enable_if<is_basic_path<Path>, void>::type
|
||||
basic_fstream<charT,traits>::open( const Path & file_ph )
|
||||
{
|
||||
std::basic_fstream<charT,traits>::open(
|
||||
detail::path_proxy( file_ph.external_file_string(),
|
||||
std::ios_base::in|std::ios_base::out ).c_str(),
|
||||
std::ios_base::in|std::ios_base::out );
|
||||
}
|
||||
|
||||
template <class charT, class traits>
|
||||
void basic_fstream<charT,traits>::open( const wpath & file_ph )
|
||||
{
|
||||
std::basic_fstream<charT,traits>::open(
|
||||
detail::path_proxy( file_ph.external_file_string(),
|
||||
std::ios_base::in|std::ios_base::out ).c_str(),
|
||||
std::ios_base::in|std::ios_base::out );
|
||||
}
|
||||
|
||||
template <class charT, class traits> template<class Path>
|
||||
typename boost::enable_if<is_basic_path<Path>, void>::type
|
||||
basic_fstream<charT,traits>::open( const Path & file_ph,
|
||||
std::ios_base::openmode mode )
|
||||
{
|
||||
std::basic_fstream<charT,traits>::open(
|
||||
detail::path_proxy( file_ph.external_file_string(),
|
||||
mode ).c_str(), mode | std::ios_base::in | std::ios_base::out );
|
||||
}
|
||||
|
||||
template <class charT, class traits>
|
||||
void basic_fstream<charT,traits>::open( const wpath & file_ph,
|
||||
std::ios_base::openmode mode )
|
||||
{
|
||||
std::basic_fstream<charT,traits>::open(
|
||||
detail::path_proxy( file_ph.external_file_string(),
|
||||
mode ).c_str(), mode | std::ios_base::in | std::ios_base::out );
|
||||
}
|
||||
|
||||
# endif
|
||||
|
||||
# if !BOOST_WORKAROUND( BOOST_MSVC, <= 1200 ) // VC++ 6.0 can't handle this
|
||||
template <class charT, class traits>
|
||||
basic_filebuf<charT,traits> *
|
||||
basic_filebuf<charT, traits>::open( const path & file_ph,
|
||||
std::ios_base::openmode mode )
|
||||
{
|
||||
return std::basic_filebuf<charT,traits>::open(
|
||||
file_ph.file_string().c_str(), mode ) == 0 ? 0 : this;
|
||||
}
|
||||
# endif
|
||||
|
||||
template <class charT, class traits>
|
||||
basic_ifstream<charT,traits>::basic_ifstream( const path & file_ph )
|
||||
: std::basic_ifstream<charT,traits>(
|
||||
file_ph.file_string().c_str(), std::ios_base::in ) {}
|
||||
|
||||
template <class charT, class traits>
|
||||
basic_ifstream<charT,traits>::basic_ifstream( const path & file_ph,
|
||||
std::ios_base::openmode mode )
|
||||
: std::basic_ifstream<charT,traits>(
|
||||
file_ph.file_string().c_str(), mode ) {}
|
||||
|
||||
# if !BOOST_WORKAROUND( BOOST_MSVC, <= 1200 ) // VC++ 6.0 can't handle this
|
||||
template <class charT, class traits>
|
||||
void basic_ifstream<charT,traits>::open( const path & file_ph )
|
||||
{
|
||||
std::basic_ifstream<charT,traits>::open(
|
||||
file_ph.file_string().c_str(), std::ios_base::in );
|
||||
}
|
||||
|
||||
template <class charT, class traits>
|
||||
void basic_ifstream<charT,traits>::open( const path & file_ph,
|
||||
std::ios_base::openmode mode )
|
||||
{
|
||||
std::basic_ifstream<charT,traits>::open(
|
||||
file_ph.file_string().c_str(), mode );
|
||||
}
|
||||
# endif
|
||||
|
||||
template <class charT, class traits>
|
||||
basic_ofstream<charT,traits>::basic_ofstream( const path & file_ph )
|
||||
: std::basic_ofstream<charT,traits>(
|
||||
file_ph.file_string().c_str(), std::ios_base::out ) {}
|
||||
|
||||
template <class charT, class traits>
|
||||
basic_ofstream<charT,traits>::basic_ofstream( const path & file_ph,
|
||||
std::ios_base::openmode mode )
|
||||
: std::basic_ofstream<charT,traits>(
|
||||
file_ph.file_string().c_str(), mode ) {}
|
||||
|
||||
# if !BOOST_WORKAROUND( BOOST_MSVC, <= 1200 ) // VC++ 6.0 can't handle this
|
||||
template <class charT, class traits>
|
||||
void basic_ofstream<charT,traits>::open( const path & file_ph )
|
||||
{
|
||||
std::basic_ofstream<charT,traits>::open(
|
||||
file_ph.file_string().c_str(), std::ios_base::out );
|
||||
}
|
||||
|
||||
template <class charT, class traits>
|
||||
void basic_ofstream<charT,traits>::open( const path & file_ph,
|
||||
std::ios_base::openmode mode )
|
||||
{
|
||||
std::basic_ofstream<charT,traits>::open(
|
||||
file_ph.file_string().c_str(), mode );
|
||||
}
|
||||
# endif
|
||||
|
||||
template <class charT, class traits>
|
||||
basic_fstream<charT,traits>::basic_fstream( const path & file_ph )
|
||||
: std::basic_fstream<charT,traits>(
|
||||
file_ph.file_string().c_str(),
|
||||
std::ios_base::in|std::ios_base::out ) {}
|
||||
|
||||
|
||||
template <class charT, class traits>
|
||||
basic_fstream<charT,traits>::basic_fstream( const path & file_ph,
|
||||
std::ios_base::openmode mode )
|
||||
: std::basic_fstream<charT,traits>(
|
||||
file_ph.file_string().c_str(), mode ) {}
|
||||
|
||||
# if !BOOST_WORKAROUND( BOOST_MSVC, <= 1200 ) // VC++ 6.0 can't handle this
|
||||
template <class charT, class traits>
|
||||
void basic_fstream<charT,traits>::open( const path & file_ph )
|
||||
{
|
||||
std::basic_fstream<charT,traits>::open(
|
||||
file_ph.file_string().c_str(), std::ios_base::in|std::ios_base::out );
|
||||
}
|
||||
|
||||
template <class charT, class traits>
|
||||
void basic_fstream<charT,traits>::open( const path & file_ph,
|
||||
std::ios_base::openmode mode )
|
||||
{
|
||||
std::basic_fstream<charT,traits>::open(
|
||||
file_ph.file_string().c_str(), mode );
|
||||
}
|
||||
# endif
|
||||
} // namespace filesystem
|
||||
} // namespace boost
|
||||
|
||||
//#include <boost/config/abi_suffix.hpp> // pops abi_prefix.hpp pragmas
|
||||
#endif // BOOST_FILESYSTEM_FSTREAM_HPP
|
3
ThirdParty/NRLib/boost/filesystem/module.mk
vendored
3
ThirdParty/NRLib/boost/filesystem/module.mk
vendored
@ -1,3 +0,0 @@
|
||||
SRC += filesystem/operations.cpp \
|
||||
filesystem/path.cpp \
|
||||
filesystem/portability.cpp
|
1382
ThirdParty/NRLib/boost/filesystem/operations.cpp
vendored
1382
ThirdParty/NRLib/boost/filesystem/operations.cpp
vendored
File diff suppressed because it is too large
Load Diff
1211
ThirdParty/NRLib/boost/filesystem/operations.hpp
vendored
1211
ThirdParty/NRLib/boost/filesystem/operations.hpp
vendored
File diff suppressed because it is too large
Load Diff
159
ThirdParty/NRLib/boost/filesystem/path.cpp
vendored
159
ThirdParty/NRLib/boost/filesystem/path.cpp
vendored
@ -1,159 +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()
|
||||
{
|
||||
// ISO C calls this "the locale-specific native environment":
|
||||
static std::locale lc("");
|
||||
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
|
1551
ThirdParty/NRLib/boost/filesystem/path.hpp
vendored
1551
ThirdParty/NRLib/boost/filesystem/path.hpp
vendored
File diff suppressed because it is too large
Load Diff
115
ThirdParty/NRLib/boost/filesystem/portability.cpp
vendored
115
ThirdParty/NRLib/boost/filesystem/portability.cpp
vendored
@ -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
|
78
ThirdParty/NRLib/boost/system/config.hpp
vendored
78
ThirdParty/NRLib/boost/system/config.hpp
vendored
@ -1,78 +0,0 @@
|
||||
// boost/system/config.hpp -------------------------------------------------//
|
||||
|
||||
// Copyright Beman Dawes 2003, 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 http://www.boost.org/libs/system for documentation.
|
||||
|
||||
#ifndef BOOST_SYSTEM_CONFIG_HPP
|
||||
#define BOOST_SYSTEM_CONFIG_HPP
|
||||
|
||||
// #include <boost/config.hpp>
|
||||
|
||||
// BOOST_POSIX_API or BOOST_WINDOWS_API specify which API to use.
|
||||
// If not specified, a sensible default will be applied.
|
||||
|
||||
# if defined( BOOST_WINDOWS_API ) && defined( BOOST_POSIX_API )
|
||||
# error both BOOST_WINDOWS_API and BOOST_POSIX_API are defined
|
||||
# elif !defined( BOOST_WINDOWS_API ) && !defined( BOOST_POSIX_API )
|
||||
# if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__CYGWIN__)
|
||||
# define BOOST_WINDOWS_API
|
||||
# else
|
||||
# define BOOST_POSIX_API
|
||||
# endif
|
||||
# endif
|
||||
|
||||
// enable dynamic linking on Windows ---------------------------------------//
|
||||
|
||||
//# if (defined(BOOST_ALL_DYN_LINK) || defined(BOOST_SYSTEM_DYN_LINK)) && defined(__BORLANDC__) && defined(__WIN32__)
|
||||
//# error Dynamic linking Boost.System does not work for Borland; use static linking instead
|
||||
//# endif
|
||||
|
||||
#ifdef BOOST_HAS_DECLSPEC // defined in config system
|
||||
// we need to import/export our code only if the user has specifically
|
||||
// asked for it by defining either BOOST_ALL_DYN_LINK if they want all boost
|
||||
// libraries to be dynamically linked, or BOOST_SYSTEM_DYN_LINK
|
||||
// if they want just this one to be dynamically liked:
|
||||
#if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_SYSTEM_DYN_LINK)
|
||||
// export if this is our own source, otherwise import:
|
||||
#ifdef BOOST_SYSTEM_SOURCE
|
||||
# define BOOST_SYSTEM_DECL __declspec(dllexport)
|
||||
#else
|
||||
# define BOOST_SYSTEM_DECL __declspec(dllimport)
|
||||
#endif // BOOST_SYSTEM_SOURCE
|
||||
#endif // DYN_LINK
|
||||
#endif // BOOST_HAS_DECLSPEC
|
||||
//
|
||||
// if BOOST_SYSTEM_DECL isn't defined yet define it now:
|
||||
#ifndef BOOST_SYSTEM_DECL
|
||||
#define BOOST_SYSTEM_DECL
|
||||
#endif
|
||||
|
||||
// enable automatic library variant selection ------------------------------//
|
||||
#if 0 // NRLib: Disable automatic library selection.
|
||||
#if !defined(BOOST_SYSTEM_SOURCE) && !defined(BOOST_ALL_NO_LIB) && !defined(BOOST_SYSTEM_NO_LIB)
|
||||
//
|
||||
// Set the name of our library, this will get undef'ed by auto_link.hpp
|
||||
// once it's done with it:
|
||||
//
|
||||
#define BOOST_LIB_NAME boost_system
|
||||
//
|
||||
// If we're importing code from a dll, then tell auto_link.hpp about it:
|
||||
//
|
||||
#if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_SYSTEM_DYN_LINK)
|
||||
# define BOOST_DYN_LINK
|
||||
#endif
|
||||
//
|
||||
// And include the header that does the work:
|
||||
//
|
||||
#include <boost/config/auto_link.hpp>
|
||||
#endif // auto-linking disabled
|
||||
#endif
|
||||
|
||||
#define BOOST_SYSTEM_NO_DEPRECATED
|
||||
|
||||
#endif // BOOST_SYSTEM_CONFIG_HPP
|
||||
|
56
ThirdParty/NRLib/boost/system/cygwin_error.hpp
vendored
56
ThirdParty/NRLib/boost/system/cygwin_error.hpp
vendored
@ -1,56 +0,0 @@
|
||||
// boost/system/cygwin_error.hpp -------------------------------------------//
|
||||
|
||||
// Copyright Beman Dawes 2007
|
||||
|
||||
// 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
|
||||
|
||||
#ifndef BOOST_CYGWIN_ERROR_HPP
|
||||
#define BOOST_CYGWIN_ERROR_HPP
|
||||
|
||||
// This header is effectively empty for compiles on operating systems where
|
||||
// it is not applicable.
|
||||
|
||||
# ifdef __CYGWIN__
|
||||
|
||||
#include <boost/system/error_code.hpp>
|
||||
|
||||
namespace boost
|
||||
{
|
||||
namespace system
|
||||
{
|
||||
// To construct an error_code after a API error:
|
||||
//
|
||||
// error_code( errno, system_category )
|
||||
|
||||
// User code should use the portable "posix" enums for POSIX errors; this
|
||||
// allows such code to be portable to non-POSIX systems. For the non-POSIX
|
||||
// errno values that POSIX-based systems typically provide in addition to
|
||||
// POSIX values, use the system specific enums below.
|
||||
|
||||
namespace cygwin_error
|
||||
{
|
||||
enum cygwin_errno
|
||||
{
|
||||
no_net = ENONET,
|
||||
no_package = ENOPKG,
|
||||
no_share = ENOSHARE
|
||||
};
|
||||
} // namespace cygwin_error
|
||||
|
||||
template<> struct is_error_code_enum<cygwin_error::cygwin_errno>
|
||||
{ static const bool value = true; };
|
||||
|
||||
namespace cygwin_error
|
||||
{
|
||||
inline error_code make_error_code( cygwin_errno e )
|
||||
{ return error_code( e, get_system_category() ); }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif // __CYGWIN__
|
||||
|
||||
#endif // BOOST_CYGWIN_ERROR_HPP
|
445
ThirdParty/NRLib/boost/system/error_code.cpp
vendored
445
ThirdParty/NRLib/boost/system/error_code.cpp
vendored
@ -1,445 +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
|
||||
|
||||
//----------------------------------------------------------------------------//
|
||||
|
||||
#if defined(_MSC_VER) && (_MSC_VER >= 1400)
|
||||
// Error 'function': was declared deprecated
|
||||
// http://msdn2.microsoft.com/en-us/library/ttcz0bys(VS.80).aspx
|
||||
// This error is emitted when you use some perfectly conforming
|
||||
// std lib functions in a perfectly correct way, and also by
|
||||
// some of Microsoft's own std lib code !
|
||||
# pragma warning(disable:4996)
|
||||
#endif
|
||||
#if defined(__INTEL_COMPILER) || defined(__ICL)
|
||||
// As above: gives warning when a "deprecated"
|
||||
// std library function is encountered.
|
||||
# pragma warning(disable:1786)
|
||||
#endif
|
||||
|
||||
// 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::errc;
|
||||
|
||||
#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
|
506
ThirdParty/NRLib/boost/system/error_code.hpp
vendored
506
ThirdParty/NRLib/boost/system/error_code.hpp
vendored
@ -1,506 +0,0 @@
|
||||
// boost/system/error_code.hpp ---------------------------------------------//
|
||||
|
||||
// Copyright Beman Dawes 2006, 2007
|
||||
// Copyright Christoper Kohlhoff 2007
|
||||
|
||||
// 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
|
||||
|
||||
#ifndef BOOST_ERROR_CODE_HPP
|
||||
#define BOOST_ERROR_CODE_HPP
|
||||
|
||||
#include <boost/system/config.hpp>
|
||||
//#include <boost/cstdint.hpp>
|
||||
//#include <boost/assert.hpp>
|
||||
//#include <boost/operators.hpp>
|
||||
//#include <boost/noncopyable.hpp>
|
||||
//#include <boost/utility/enable_if.hpp>
|
||||
#include <ostream>
|
||||
#include <string>
|
||||
#include <stdexcept>
|
||||
#include <functional>
|
||||
|
||||
// TODO: undef these macros if not already defined
|
||||
#include <boost/cerrno.hpp>
|
||||
|
||||
#if !defined(BOOST_POSIX_API) && !defined(BOOST_WINDOWS_API)
|
||||
# error BOOST_POSIX_API or BOOST_WINDOWS_API must be defined
|
||||
#endif
|
||||
|
||||
// #include <boost/config/abi_prefix.hpp> // must be the last #include
|
||||
|
||||
namespace boost
|
||||
{
|
||||
namespace system
|
||||
{
|
||||
|
||||
class error_code;
|
||||
class error_condition;
|
||||
|
||||
// "Concept" helpers ---------------------------------------------------//
|
||||
|
||||
template< class T >
|
||||
struct is_error_code_enum { static const bool value = false; };
|
||||
|
||||
template< class T >
|
||||
struct is_error_condition_enum { static const bool value = false; };
|
||||
|
||||
// generic error_conditions --------------------------------------------//
|
||||
|
||||
namespace errc
|
||||
{
|
||||
enum errc_t
|
||||
{
|
||||
success = 0,
|
||||
address_family_not_supported = EAFNOSUPPORT,
|
||||
address_in_use = EADDRINUSE,
|
||||
address_not_available = EADDRNOTAVAIL,
|
||||
already_connected = EISCONN,
|
||||
argument_list_too_long = E2BIG,
|
||||
argument_out_of_domain = EDOM,
|
||||
bad_address = EFAULT,
|
||||
bad_file_descriptor = EBADF,
|
||||
bad_message = EBADMSG,
|
||||
broken_pipe = EPIPE,
|
||||
connection_aborted = ECONNABORTED,
|
||||
connection_already_in_progress = EALREADY,
|
||||
connection_refused = ECONNREFUSED,
|
||||
connection_reset = ECONNRESET,
|
||||
cross_device_link = EXDEV,
|
||||
destination_address_required = EDESTADDRREQ,
|
||||
device_or_resource_busy = EBUSY,
|
||||
directory_not_empty = ENOTEMPTY,
|
||||
executable_format_error = ENOEXEC,
|
||||
file_exists = EEXIST,
|
||||
file_too_large = EFBIG,
|
||||
filename_too_long = ENAMETOOLONG,
|
||||
function_not_supported = ENOSYS,
|
||||
host_unreachable = EHOSTUNREACH,
|
||||
identifier_removed = EIDRM,
|
||||
illegal_byte_sequence = EILSEQ,
|
||||
inappropriate_io_control_operation = ENOTTY,
|
||||
interrupted = EINTR,
|
||||
invalid_argument = EINVAL,
|
||||
invalid_seek = ESPIPE,
|
||||
io_error = EIO,
|
||||
is_a_directory = EISDIR,
|
||||
message_size = EMSGSIZE,
|
||||
network_down = ENETDOWN,
|
||||
network_reset = ENETRESET,
|
||||
network_unreachable = ENETUNREACH,
|
||||
no_buffer_space = ENOBUFS,
|
||||
no_child_process = ECHILD,
|
||||
no_link = ENOLINK,
|
||||
no_lock_available = ENOLCK,
|
||||
no_message_available = ENODATA,
|
||||
no_message = ENOMSG,
|
||||
no_protocol_option = ENOPROTOOPT,
|
||||
no_space_on_device = ENOSPC,
|
||||
no_stream_resources = ENOSR,
|
||||
no_such_device_or_address = ENXIO,
|
||||
no_such_device = ENODEV,
|
||||
no_such_file_or_directory = ENOENT,
|
||||
no_such_process = ESRCH,
|
||||
not_a_directory = ENOTDIR,
|
||||
not_a_socket = ENOTSOCK,
|
||||
not_a_stream = ENOSTR,
|
||||
not_connected = ENOTCONN,
|
||||
not_enough_memory = ENOMEM,
|
||||
not_supported = ENOTSUP,
|
||||
operation_canceled = ECANCELED,
|
||||
operation_in_progress = EINPROGRESS,
|
||||
operation_not_permitted = EPERM,
|
||||
operation_not_supported = EOPNOTSUPP,
|
||||
operation_would_block = EWOULDBLOCK,
|
||||
owner_dead = EOWNERDEAD,
|
||||
permission_denied = EACCES,
|
||||
protocol_error = EPROTO,
|
||||
protocol_not_supported = EPROTONOSUPPORT,
|
||||
read_only_file_system = EROFS,
|
||||
resource_deadlock_would_occur = EDEADLK,
|
||||
resource_unavailable_try_again = EAGAIN,
|
||||
result_out_of_range = ERANGE,
|
||||
state_not_recoverable = ENOTRECOVERABLE,
|
||||
stream_timeout = ETIME,
|
||||
text_file_busy = ETXTBSY,
|
||||
timed_out = ETIMEDOUT,
|
||||
too_many_files_open_in_system = ENFILE,
|
||||
too_many_files_open = EMFILE,
|
||||
too_many_links = EMLINK,
|
||||
too_many_synbolic_link_levels = ELOOP,
|
||||
value_too_large = EOVERFLOW,
|
||||
wrong_protocol_type = EPROTOTYPE
|
||||
};
|
||||
|
||||
} // namespace errc
|
||||
|
||||
# ifndef BOOST_SYSTEM_NO_DEPRECATED
|
||||
namespace posix = errc;
|
||||
namespace posix_error = errc;
|
||||
# endif
|
||||
|
||||
template<> struct is_error_condition_enum<errc::errc_t>
|
||||
{ static const bool value = true; };
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------//
|
||||
|
||||
// Operating system specific interfaces --------------------------------//
|
||||
|
||||
|
||||
// The interface is divided into general and system-specific portions to
|
||||
// meet these requirements:
|
||||
//
|
||||
// * Code calling an operating system API can create an error_code with
|
||||
// a single category (system_category), even for POSIX-like operating
|
||||
// systems that return some POSIX errno values and some native errno
|
||||
// values. This code should not have to pay the cost of distinguishing
|
||||
// between categories, since it is not yet known if that is needed.
|
||||
//
|
||||
// * Users wishing to write system-specific code should be given enums for
|
||||
// at least the common error cases.
|
||||
//
|
||||
// * System specific code should fail at compile time if moved to another
|
||||
// operating system.
|
||||
|
||||
// The system specific portions of the interface are located in headers
|
||||
// with names reflecting the operating system. For example,
|
||||
//
|
||||
// <boost/system/cygwin_error.hpp>
|
||||
// <boost/system/linux_error.hpp>
|
||||
// <boost/system/windows_error.hpp>
|
||||
//
|
||||
// These headers are effectively empty for compiles on operating systems
|
||||
// where they are not applicable.
|
||||
|
||||
// ----------------------------------------------------------------------//
|
||||
|
||||
// class error_category ------------------------------------------------//
|
||||
|
||||
class error_category // : public noncopyable
|
||||
{
|
||||
public:
|
||||
error_category() {}
|
||||
virtual ~error_category(){}
|
||||
virtual inline const char * name() const; // see implementation note below
|
||||
virtual inline std::string message( int ev ) const; // see implementation note below
|
||||
virtual inline error_condition default_error_condition( int ev ) const;
|
||||
virtual inline bool equivalent( int code, const error_condition & condition ) const;
|
||||
virtual inline bool equivalent( const error_code & code, int condition ) const;
|
||||
|
||||
bool operator==(const error_category & rhs) const { return this == &rhs; }
|
||||
bool operator!=(const error_category & rhs) const { return this != &rhs; }
|
||||
bool operator<( const error_category & rhs ) const
|
||||
{
|
||||
return std::less<const error_category*>()( this, &rhs );
|
||||
}
|
||||
private:
|
||||
//non-copyable
|
||||
error_category(const error_category& );
|
||||
error_category& operator=(const error_category& );
|
||||
};
|
||||
|
||||
// predefined error categories -----------------------------------------//
|
||||
|
||||
BOOST_SYSTEM_DECL const error_category & get_system_category();
|
||||
BOOST_SYSTEM_DECL const error_category & get_generic_category();
|
||||
|
||||
static const error_category & system_category = get_system_category();
|
||||
static const error_category & generic_category = get_generic_category();
|
||||
|
||||
# ifndef BOOST_SYSTEM_NO_DEPRECATED
|
||||
// deprecated synonyms
|
||||
inline const error_category & get_posix_category() { return get_generic_category(); }
|
||||
static const error_category & posix_category = get_generic_category();
|
||||
static const error_category & errno_ecat = get_generic_category();
|
||||
static const error_category & native_ecat = get_system_category();
|
||||
# endif
|
||||
|
||||
// class error_condition -----------------------------------------------//
|
||||
|
||||
// error_conditions are portable, error_codes are system or library specific
|
||||
|
||||
class error_condition
|
||||
{
|
||||
public:
|
||||
|
||||
// constructors:
|
||||
error_condition() : m_val(0), m_cat(&get_generic_category()) {}
|
||||
error_condition( int val, const error_category & cat ) : m_val(val), m_cat(&cat) {}
|
||||
|
||||
//template <class ErrorConditionEnum>
|
||||
// error_condition(ErrorConditionEnum e,
|
||||
// typename boost::enable_if<is_error_condition_enum<ErrorConditionEnum> >::type* = 0)
|
||||
//{
|
||||
// *this = make_error_condition(e);
|
||||
//}
|
||||
|
||||
// modifiers:
|
||||
|
||||
void assign( int val, const error_category & cat )
|
||||
{
|
||||
m_val = val;
|
||||
m_cat = &cat;
|
||||
}
|
||||
|
||||
//template<typename ErrorConditionEnum>
|
||||
// typename boost::enable_if<is_error_condition_enum<ErrorConditionEnum>, error_condition>::type &
|
||||
// operator=( ErrorConditionEnum val )
|
||||
//{
|
||||
// *this = make_error_condition(val);
|
||||
// return *this;
|
||||
//}
|
||||
|
||||
void clear()
|
||||
{
|
||||
m_val = 0;
|
||||
m_cat = &get_generic_category();
|
||||
}
|
||||
|
||||
// observers:
|
||||
int value() const { return m_val; }
|
||||
const error_category & category() const { return *m_cat; }
|
||||
std::string message() const { return m_cat->message(value()); }
|
||||
|
||||
typedef void (*unspecified_bool_type)();
|
||||
static void unspecified_bool_true() {}
|
||||
|
||||
operator unspecified_bool_type() const // true if error
|
||||
{
|
||||
return m_val == 0 ? 0 : unspecified_bool_true;
|
||||
}
|
||||
|
||||
bool operator!() const // true if no error
|
||||
{
|
||||
return m_val == 0;
|
||||
}
|
||||
|
||||
// relationals:
|
||||
// the more symmetrical non-member syntax allows enum
|
||||
// conversions work for both rhs and lhs.
|
||||
inline friend bool operator==( const error_condition & lhs,
|
||||
const error_condition & rhs )
|
||||
{
|
||||
return lhs.m_cat == rhs.m_cat && lhs.m_val == rhs.m_val;
|
||||
}
|
||||
|
||||
inline friend bool operator<( const error_condition & lhs,
|
||||
const error_condition & rhs )
|
||||
// the more symmetrical non-member syntax allows enum
|
||||
// conversions work for both rhs and lhs.
|
||||
{
|
||||
return lhs.m_cat < rhs.m_cat
|
||||
|| (lhs.m_cat == rhs.m_cat && lhs.m_val < rhs.m_val);
|
||||
}
|
||||
|
||||
private:
|
||||
int m_val;
|
||||
const error_category * m_cat;
|
||||
|
||||
};
|
||||
|
||||
// class error_code ----------------------------------------------------//
|
||||
|
||||
// We want error_code to be a value type that can be copied without slicing
|
||||
// and without requiring heap allocation, but we also want it to have
|
||||
// polymorphic behavior based on the error category. This is achieved by
|
||||
// abstract base class error_category supplying the polymorphic behavior,
|
||||
// and error_code containing a pointer to an object of a type derived
|
||||
// from error_category.
|
||||
class error_code
|
||||
{
|
||||
public:
|
||||
|
||||
// constructors:
|
||||
error_code() : m_val(0), m_cat(&get_system_category()) {}
|
||||
error_code( int val, const error_category & cat ) : m_val(val), m_cat(&cat) {}
|
||||
|
||||
//template <class ErrorCodeEnum>
|
||||
// error_code(ErrorCodeEnum e,
|
||||
// typename boost::enable_if<is_error_code_enum<ErrorCodeEnum> >::type* = 0)
|
||||
//{
|
||||
// *this = make_error_code(e);
|
||||
//}
|
||||
|
||||
// modifiers:
|
||||
void assign( int val, const error_category & cat )
|
||||
{
|
||||
m_val = val;
|
||||
m_cat = &cat;
|
||||
}
|
||||
|
||||
//template<typename ErrorCodeEnum>
|
||||
// typename boost::enable_if<is_error_code_enum<ErrorCodeEnum>, error_code>::type &
|
||||
// operator=( ErrorCodeEnum val )
|
||||
//{
|
||||
// *this = make_error_code(val);
|
||||
// return *this;
|
||||
//}
|
||||
|
||||
void clear()
|
||||
{
|
||||
m_val = 0;
|
||||
m_cat = &get_system_category();
|
||||
}
|
||||
|
||||
// observers:
|
||||
int value() const { return m_val; }
|
||||
const error_category & category() const { return *m_cat; }
|
||||
error_condition default_error_condition() const { return m_cat->default_error_condition(value()); }
|
||||
std::string message() const { return m_cat->message(value()); }
|
||||
|
||||
typedef void (*unspecified_bool_type)();
|
||||
static void unspecified_bool_true() {}
|
||||
|
||||
operator unspecified_bool_type() const // true if error
|
||||
{
|
||||
return m_val == 0 ? 0 : unspecified_bool_true;
|
||||
}
|
||||
|
||||
bool operator!() const // true if no error
|
||||
{
|
||||
return m_val == 0;
|
||||
}
|
||||
|
||||
// relationals:
|
||||
inline friend bool operator==( const error_code & lhs,
|
||||
const error_code & rhs )
|
||||
// the more symmetrical non-member syntax allows enum
|
||||
// conversions work for both rhs and lhs.
|
||||
{
|
||||
return lhs.m_cat == rhs.m_cat && lhs.m_val == rhs.m_val;
|
||||
}
|
||||
|
||||
inline friend bool operator<( const error_code & lhs,
|
||||
const error_code & rhs )
|
||||
// the more symmetrical non-member syntax allows enum
|
||||
// conversions work for both rhs and lhs.
|
||||
{
|
||||
return lhs.m_cat < rhs.m_cat
|
||||
|| (lhs.m_cat == rhs.m_cat && lhs.m_val < rhs.m_val);
|
||||
}
|
||||
|
||||
private:
|
||||
int m_val;
|
||||
const error_category * m_cat;
|
||||
|
||||
};
|
||||
|
||||
// predefined error_code object used as "throw on error" tag
|
||||
BOOST_SYSTEM_DECL extern error_code throws;
|
||||
|
||||
// non-member functions ------------------------------------------------//
|
||||
|
||||
inline bool operator!=( const error_code & lhs,
|
||||
const error_code & rhs )
|
||||
{
|
||||
return !(lhs == rhs);
|
||||
}
|
||||
|
||||
inline bool operator!=( const error_condition & lhs,
|
||||
const error_condition & rhs )
|
||||
{
|
||||
return !(lhs == rhs);
|
||||
}
|
||||
|
||||
inline bool operator==( const error_code & code,
|
||||
const error_condition & condition )
|
||||
{
|
||||
return code.category().equivalent( code.value(), condition )
|
||||
|| condition.category().equivalent( code, condition.value() );
|
||||
}
|
||||
|
||||
inline bool operator!=( const error_code & lhs,
|
||||
const error_condition & rhs )
|
||||
{
|
||||
return !(lhs == rhs);
|
||||
}
|
||||
|
||||
inline bool operator==( const error_condition & condition,
|
||||
const error_code & code )
|
||||
{
|
||||
return condition.category().equivalent( code, condition.value() )
|
||||
|| code.category().equivalent( code.value(), condition );
|
||||
}
|
||||
|
||||
inline bool operator!=( const error_condition & lhs,
|
||||
const error_code & rhs )
|
||||
{
|
||||
return !(lhs == rhs);
|
||||
}
|
||||
|
||||
// TODO: both of these may move elsewhere, but the LWG hasn't spoken yet.
|
||||
|
||||
template <class charT, class traits>
|
||||
inline std::basic_ostream<charT,traits>&
|
||||
operator<< (std::basic_ostream<charT,traits>& os, error_code ec)
|
||||
{
|
||||
os << ec.category().name() << ':' << ec.value();
|
||||
return os;
|
||||
}
|
||||
|
||||
inline std::size_t hash_value( const error_code & ec )
|
||||
{
|
||||
return static_cast<std::size_t>(ec.value())
|
||||
+ reinterpret_cast<std::size_t>(&ec.category());
|
||||
}
|
||||
|
||||
// make_* functions for errc::errc_t -----------------------------//
|
||||
|
||||
namespace errc
|
||||
{
|
||||
// explicit conversion:
|
||||
inline error_code make_error_code( errc_t e )
|
||||
{ return error_code( e, get_generic_category() ); }
|
||||
|
||||
// implicit conversion:
|
||||
inline error_condition make_error_condition( errc_t e )
|
||||
{ return error_condition( e, get_generic_category() ); }
|
||||
}
|
||||
|
||||
// error_category default implementation -------------------------------//
|
||||
|
||||
inline error_condition error_category::default_error_condition( int ev ) const
|
||||
{
|
||||
return error_condition( ev, *this );
|
||||
}
|
||||
|
||||
inline bool error_category::equivalent( int code,
|
||||
const error_condition & condition ) const
|
||||
{
|
||||
return default_error_condition( code ) == condition;
|
||||
}
|
||||
|
||||
inline bool error_category::equivalent( const error_code & code,
|
||||
int condition ) const
|
||||
{
|
||||
return *this == code.category() && code.value() == condition;
|
||||
}
|
||||
|
||||
// error_category implementation note: VC++ 8.0 objects to name() and
|
||||
// message() being pure virtual functions. Thus these implementations.
|
||||
inline const char * error_category::name() const
|
||||
{
|
||||
return "error: should never be called";
|
||||
}
|
||||
|
||||
inline std::string error_category::message( int ) const
|
||||
{
|
||||
static std::string s("error: should never be called");
|
||||
return s;
|
||||
}
|
||||
|
||||
} // namespace system
|
||||
} // namespace boost
|
||||
|
||||
//#include <boost/config/abi_suffix.hpp> // pops abi_prefix.hpp pragmas
|
||||
|
||||
# ifdef BOOST_ERROR_CODE_HEADER_ONLY
|
||||
# include <boost/../libs/system/src/error_code.cpp>
|
||||
# endif
|
||||
|
||||
#endif // BOOST_ERROR_CODE_HPP
|
||||
|
||||
|
110
ThirdParty/NRLib/boost/system/linux_error.hpp
vendored
110
ThirdParty/NRLib/boost/system/linux_error.hpp
vendored
@ -1,110 +0,0 @@
|
||||
// boost/system/linux_error.hpp -------------------------------------------//
|
||||
|
||||
// Copyright Beman Dawes 2007
|
||||
|
||||
// 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
|
||||
|
||||
#ifndef BOOST_LINUX_ERROR_HPP
|
||||
#define BOOST_LINUX_ERROR_HPP
|
||||
|
||||
// This header is effectively empty for compiles on operating systems where
|
||||
// it is not applicable.
|
||||
|
||||
#if defined(linux) || defined(__linux) || defined(__linux__)
|
||||
|
||||
#include <boost/system/error_code.hpp>
|
||||
|
||||
namespace boost
|
||||
{
|
||||
namespace system
|
||||
{
|
||||
// To construct an error_code after a API error:
|
||||
//
|
||||
// error_code( errno, system_category )
|
||||
|
||||
// User code should use the portable "posix" enums for POSIX errors; this
|
||||
// allows such code to be portable to non-POSIX systems. For the non-POSIX
|
||||
// errno values that POSIX-based systems typically provide in addition to
|
||||
// POSIX values, use the system specific enums below.
|
||||
|
||||
namespace linux_error
|
||||
{
|
||||
enum linux_errno
|
||||
{
|
||||
advertise_error = EADV,
|
||||
bad_exchange = EBADE,
|
||||
bad_file_number = EBADFD,
|
||||
bad_font_format = EBFONT,
|
||||
bad_request_code = EBADRQC,
|
||||
bad_request_descriptor = EBADR,
|
||||
bad_slot = EBADSLT,
|
||||
channel_range = ECHRNG,
|
||||
communication_error = ECOMM,
|
||||
dot_dot_error = EDOTDOT,
|
||||
exchange_full = EXFULL,
|
||||
host_down = EHOSTDOWN,
|
||||
is_named_file_type= EISNAM,
|
||||
key_expired = EKEYEXPIRED,
|
||||
key_rejected = EKEYREJECTED,
|
||||
key_revoked = EKEYREVOKED,
|
||||
level2_halt= EL2HLT,
|
||||
level2_no_syncronized= EL2NSYNC,
|
||||
level3_halt = EL3HLT,
|
||||
level3_reset = EL3RST,
|
||||
link_range = ELNRNG,
|
||||
medium_type = EMEDIUMTYPE,
|
||||
no_anode= ENOANO,
|
||||
no_block_device = ENOTBLK,
|
||||
no_csi = ENOCSI,
|
||||
no_key = ENOKEY,
|
||||
no_medium = ENOMEDIUM,
|
||||
no_network = ENONET,
|
||||
no_package = ENOPKG,
|
||||
not_avail = ENAVAIL,
|
||||
not_named_file_type= ENOTNAM,
|
||||
not_recoverable = ENOTRECOVERABLE,
|
||||
not_unique = ENOTUNIQ,
|
||||
owner_dead = EOWNERDEAD,
|
||||
protocol_no_supported = EPFNOSUPPORT,
|
||||
remote_address_changed = EREMCHG,
|
||||
remote_io_error = EREMOTEIO,
|
||||
remote_object = EREMOTE,
|
||||
restart_needed = ERESTART,
|
||||
shared_library_access = ELIBACC,
|
||||
shared_library_bad = ELIBBAD,
|
||||
shared_library_execute = ELIBEXEC,
|
||||
shared_library_max_ = ELIBMAX,
|
||||
shared_library_section= ELIBSCN,
|
||||
shutdown = ESHUTDOWN,
|
||||
socket_type_not_supported = ESOCKTNOSUPPORT,
|
||||
srmount_error = ESRMNT,
|
||||
stream_pipe_error = ESTRPIPE,
|
||||
too_many_references = ETOOMANYREFS,
|
||||
too_many_users = EUSERS,
|
||||
unattached = EUNATCH,
|
||||
unclean = EUCLEAN
|
||||
};
|
||||
} // namespace linux_error
|
||||
|
||||
# ifndef BOOST_SYSTEM_NO_DEPRECATED
|
||||
namespace Linux = linux_error;
|
||||
# endif
|
||||
|
||||
template<> struct is_error_code_enum<linux_error::linux_errno>
|
||||
{ static const bool value = true; };
|
||||
|
||||
namespace linux_error
|
||||
{
|
||||
inline error_code make_error_code( linux_errno e )
|
||||
{ return error_code( e, get_system_category() ); }
|
||||
}
|
||||
|
||||
} // namespace system
|
||||
} // namespace boost
|
||||
|
||||
#endif // Linux
|
||||
|
||||
#endif // BOOST_LINUX_ERROR_HPP
|
1
ThirdParty/NRLib/boost/system/module.mk
vendored
1
ThirdParty/NRLib/boost/system/module.mk
vendored
@ -1 +0,0 @@
|
||||
SRC += system/error_code.cpp
|
81
ThirdParty/NRLib/boost/system/system_error.hpp
vendored
81
ThirdParty/NRLib/boost/system/system_error.hpp
vendored
@ -1,81 +0,0 @@
|
||||
// Boost system_error.hpp --------------------------------------------------//
|
||||
|
||||
// Copyright Beman Dawes 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)
|
||||
|
||||
#ifndef BOOST_SYSTEM_ERROR_HPP
|
||||
#define BOOST_SYSTEM_ERROR_HPP
|
||||
|
||||
#include <string>
|
||||
#include <stdexcept>
|
||||
#include <cassert>
|
||||
#include <boost/system/error_code.hpp>
|
||||
|
||||
namespace boost
|
||||
{
|
||||
namespace system
|
||||
{
|
||||
// class system_error --------------------------------------------------//
|
||||
|
||||
class system_error : public std::runtime_error
|
||||
{
|
||||
public:
|
||||
system_error( error_code ec )
|
||||
: std::runtime_error(""), m_error_code(ec) {}
|
||||
|
||||
system_error( error_code ec, const std::string & what_arg )
|
||||
: std::runtime_error(what_arg), m_error_code(ec) {}
|
||||
|
||||
system_error( error_code ec, const char* what_arg )
|
||||
: std::runtime_error(what_arg), m_error_code(ec) {}
|
||||
|
||||
system_error( int ev, const error_category & ecat )
|
||||
: std::runtime_error(""), m_error_code(ev,ecat) {}
|
||||
|
||||
system_error( int ev, const error_category & ecat,
|
||||
const std::string & what_arg )
|
||||
: std::runtime_error(what_arg), m_error_code(ev,ecat) {}
|
||||
|
||||
system_error( int ev, const error_category & ecat,
|
||||
const char * what_arg )
|
||||
: std::runtime_error(what_arg), m_error_code(ev,ecat) {}
|
||||
|
||||
virtual ~system_error() throw() {}
|
||||
|
||||
const error_code & code() const throw() { return m_error_code; }
|
||||
const char * what() const throw();
|
||||
|
||||
private:
|
||||
error_code m_error_code;
|
||||
mutable std::string m_what;
|
||||
};
|
||||
|
||||
// implementation ------------------------------------------------------//
|
||||
|
||||
inline const char * system_error::what() const throw()
|
||||
// see http://www.boost.org/more/error_handling.html for lazy build rationale
|
||||
{
|
||||
if ( m_what.empty() )
|
||||
{
|
||||
try
|
||||
{
|
||||
m_what = this->std::runtime_error::what();
|
||||
if ( m_error_code )
|
||||
{
|
||||
if ( !m_what.empty() ) m_what += ": ";
|
||||
m_what += m_error_code.message();
|
||||
}
|
||||
}
|
||||
catch (...) { return std::runtime_error::what(); }
|
||||
}
|
||||
return m_what.c_str();
|
||||
}
|
||||
|
||||
} // namespace system
|
||||
} // namespace boost
|
||||
|
||||
#endif // BOOST_SYSTEM_ERROR_HPP
|
||||
|
||||
|
118
ThirdParty/NRLib/boost/system/windows_error.hpp
vendored
118
ThirdParty/NRLib/boost/system/windows_error.hpp
vendored
@ -1,118 +0,0 @@
|
||||
// boost/system/windows_error.hpp ------------------------------------------//
|
||||
|
||||
// Copyright Beman Dawes 2007
|
||||
|
||||
// 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
|
||||
|
||||
#ifndef BOOST_WINDOWS_ERROR_HPP
|
||||
#define BOOST_WINDOWS_ERROR_HPP
|
||||
|
||||
// This header is effectively empty for compiles on operating systems where
|
||||
// it is not applicable.
|
||||
|
||||
#include <boost/system/config.hpp>
|
||||
|
||||
#ifdef BOOST_WINDOWS_API
|
||||
|
||||
#include <boost/system/error_code.hpp>
|
||||
#include <winerror.h>
|
||||
|
||||
namespace boost
|
||||
{
|
||||
namespace system
|
||||
{
|
||||
|
||||
// Microsoft Windows ---------------------------------------------------//
|
||||
|
||||
// To construct an error_code after a API error:
|
||||
//
|
||||
// error_code( ::GetLastError(), system_category )
|
||||
|
||||
namespace windows_error
|
||||
{
|
||||
enum windows_error_code
|
||||
{
|
||||
success = 0,
|
||||
// These names and values are based on Windows winerror.h
|
||||
invalid_function = ERROR_INVALID_FUNCTION,
|
||||
file_not_found = ERROR_FILE_NOT_FOUND,
|
||||
path_not_found = ERROR_PATH_NOT_FOUND,
|
||||
too_many_open_files = ERROR_TOO_MANY_OPEN_FILES,
|
||||
access_denied = ERROR_ACCESS_DENIED,
|
||||
invalid_handle = ERROR_INVALID_HANDLE,
|
||||
arena_trashed = ERROR_ARENA_TRASHED,
|
||||
not_enough_memory = ERROR_NOT_ENOUGH_MEMORY,
|
||||
invalid_block = ERROR_INVALID_BLOCK,
|
||||
bad_environment = ERROR_BAD_ENVIRONMENT,
|
||||
bad_format = ERROR_BAD_FORMAT,
|
||||
invalid_access = ERROR_INVALID_ACCESS,
|
||||
outofmemory = ERROR_OUTOFMEMORY,
|
||||
invalid_drive = ERROR_INVALID_DRIVE,
|
||||
current_directory = ERROR_CURRENT_DIRECTORY,
|
||||
not_same_device = ERROR_NOT_SAME_DEVICE,
|
||||
no_more_files = ERROR_NO_MORE_FILES,
|
||||
write_protect = ERROR_WRITE_PROTECT,
|
||||
bad_unit = ERROR_BAD_UNIT,
|
||||
not_ready = ERROR_NOT_READY,
|
||||
bad_command = ERROR_BAD_COMMAND,
|
||||
crc = ERROR_CRC,
|
||||
bad_length = ERROR_BAD_LENGTH,
|
||||
seek = ERROR_SEEK,
|
||||
not_dos_disk = ERROR_NOT_DOS_DISK,
|
||||
sector_not_found = ERROR_SECTOR_NOT_FOUND,
|
||||
out_of_paper = ERROR_OUT_OF_PAPER,
|
||||
write_fault = ERROR_WRITE_FAULT,
|
||||
read_fault = ERROR_READ_FAULT,
|
||||
gen_failure = ERROR_GEN_FAILURE,
|
||||
sharing_violation = ERROR_SHARING_VIOLATION,
|
||||
lock_violation = ERROR_LOCK_VIOLATION,
|
||||
wrong_disk = ERROR_WRONG_DISK,
|
||||
sharing_buffer_exceeded = ERROR_SHARING_BUFFER_EXCEEDED,
|
||||
handle_eof = ERROR_HANDLE_EOF,
|
||||
handle_disk_full= ERROR_HANDLE_DISK_FULL,
|
||||
rem_not_list = ERROR_REM_NOT_LIST,
|
||||
dup_name = ERROR_DUP_NAME,
|
||||
bad_net_path = ERROR_BAD_NETPATH,
|
||||
network_busy = ERROR_NETWORK_BUSY,
|
||||
// ...
|
||||
file_exists = ERROR_FILE_EXISTS,
|
||||
cannot_make = ERROR_CANNOT_MAKE,
|
||||
// ...
|
||||
broken_pipe = ERROR_BROKEN_PIPE,
|
||||
open_failed = ERROR_OPEN_FAILED,
|
||||
buffer_overflow = ERROR_BUFFER_OVERFLOW,
|
||||
disk_full= ERROR_DISK_FULL,
|
||||
// ...
|
||||
lock_failed = ERROR_LOCK_FAILED,
|
||||
busy = ERROR_BUSY,
|
||||
cancel_violation = ERROR_CANCEL_VIOLATION,
|
||||
already_exists = ERROR_ALREADY_EXISTS
|
||||
// ...
|
||||
|
||||
// TODO: add more Windows errors
|
||||
};
|
||||
|
||||
} // namespace windows
|
||||
|
||||
# ifndef BOOST_SYSTEM_NO_DEPRECATED
|
||||
namespace windows = windows_error;
|
||||
# endif
|
||||
|
||||
template<> struct is_error_code_enum<windows_error::windows_error_code>
|
||||
{ static const bool value = true; };
|
||||
|
||||
namespace windows_error
|
||||
{
|
||||
inline error_code make_error_code( windows_error_code e )
|
||||
{ return error_code( e, get_system_category() ); }
|
||||
}
|
||||
|
||||
} // namespace system
|
||||
} // namespace boost
|
||||
|
||||
#endif // BOOST_WINDOWS_API
|
||||
|
||||
#endif // BOOST_WINDOWS_ERROR_HPP
|
34
ThirdParty/NRLib/nrlib/iotools/fileio.cpp
vendored
34
ThirdParty/NRLib/nrlib/iotools/fileio.cpp
vendored
@ -24,7 +24,7 @@
|
||||
#include "../exception/exception.hpp"
|
||||
#include "stringtools.hpp"
|
||||
|
||||
#define BOOST_FILESYSTEM_VERSION 2
|
||||
//#define BOOST_FILESYSTEM_VERSION 2
|
||||
#include <boost/filesystem.hpp>
|
||||
|
||||
#include <fstream>
|
||||
@ -52,16 +52,16 @@ void NRLib::OpenRead(std::ifstream& stream,
|
||||
try {
|
||||
boost::filesystem::path file_path(filename);
|
||||
if (!fs::exists(file_path)) {
|
||||
throw IOError("Failed to open " + file_path.file_string() + " for reading: " +
|
||||
throw IOError("Failed to open " + file_path.generic_string() + " for reading: " +
|
||||
"File does not exist.");
|
||||
}
|
||||
if (fs::is_directory(file_path)) {
|
||||
throw IOError("Failed to open " + file_path.file_string() + " for reading: " +
|
||||
throw IOError("Failed to open " + file_path.generic_string() + " for reading: " +
|
||||
" It is a directory.");
|
||||
}
|
||||
stream.open(file_path.file_string().c_str(), mode);
|
||||
stream.open(file_path.generic_string().c_str(), mode);
|
||||
if (!stream) {
|
||||
throw IOError("Failed to open " + file_path.file_string() + " for reading.");
|
||||
throw IOError("Failed to open " + file_path.generic_string() + " for reading.");
|
||||
}
|
||||
}
|
||||
catch (fs::filesystem_error& e) {
|
||||
@ -79,16 +79,16 @@ void NRLib::OpenRead(std::fstream& stream,
|
||||
try {
|
||||
boost::filesystem::path file_path(filename);
|
||||
if (!fs::exists(file_path)) {
|
||||
throw IOError("Failed to open " + file_path.file_string() + " for reading: " +
|
||||
throw IOError("Failed to open " + file_path.generic_string() + " for reading: " +
|
||||
"File does not exist.");
|
||||
}
|
||||
if (fs::is_directory(file_path)) {
|
||||
throw IOError("Failed to open " + file_path.file_string() + " for reading: " +
|
||||
throw IOError("Failed to open " + file_path.generic_string() + " for reading: " +
|
||||
" It is a directory.");
|
||||
}
|
||||
stream.open(file_path.file_string().c_str(), mode);
|
||||
stream.open(file_path.generic_string().c_str(), mode);
|
||||
if (!stream) {
|
||||
throw IOError("Failed to open " + file_path.file_string() + " for reading.");
|
||||
throw IOError("Failed to open " + file_path.generic_string() + " for reading.");
|
||||
}
|
||||
}
|
||||
catch (fs::filesystem_error& e) {
|
||||
@ -107,7 +107,7 @@ void NRLib::OpenWrite(std::ofstream& stream,
|
||||
fs::path file_path(filename);
|
||||
fs::path dir = file_path.parent_path();
|
||||
if (fs::is_directory(file_path)) {
|
||||
throw IOError("Failed to open " + file_path.file_string() + " for writing: " +
|
||||
throw IOError("Failed to open " + file_path.generic_string() + " for writing: " +
|
||||
" It is a directory.");
|
||||
}
|
||||
if (!dir.empty()) {
|
||||
@ -115,13 +115,13 @@ void NRLib::OpenWrite(std::ofstream& stream,
|
||||
create_directories(dir);
|
||||
}
|
||||
else if (!fs::exists(dir)) {
|
||||
throw IOError("Failed to open " + file_path.file_string() + " for writing: "
|
||||
throw IOError("Failed to open " + file_path.generic_string() + " for writing: "
|
||||
+ "Parent directory does not exist.");
|
||||
}
|
||||
}
|
||||
stream.open(file_path.file_string().c_str(), mode);
|
||||
stream.open(file_path.generic_string().c_str(), mode);
|
||||
if (!stream) {
|
||||
throw IOError("Failed to open " + file_path.file_string() + " for writing.");
|
||||
throw IOError("Failed to open " + file_path.generic_string() + " for writing.");
|
||||
}
|
||||
}
|
||||
catch (fs::filesystem_error& e) {
|
||||
@ -140,7 +140,7 @@ void NRLib::OpenWrite(std::fstream& stream,
|
||||
fs::path file_path(filename);
|
||||
fs::path dir = file_path.parent_path();
|
||||
if (fs::is_directory(file_path)) {
|
||||
throw IOError("Failed to open " + file_path.file_string() + " for writing: " +
|
||||
throw IOError("Failed to open " + file_path.generic_string() + " for writing: " +
|
||||
" It is a directory.");
|
||||
}
|
||||
if (!dir.empty()) {
|
||||
@ -148,13 +148,13 @@ void NRLib::OpenWrite(std::fstream& stream,
|
||||
create_directories(dir);
|
||||
}
|
||||
else if (!fs::exists(dir)) {
|
||||
throw IOError("Failed to open " + file_path.file_string() + " for writing: "
|
||||
throw IOError("Failed to open " + file_path.generic_string() + " for writing: "
|
||||
+ "Parent directory does not exist.");
|
||||
}
|
||||
}
|
||||
stream.open(file_path.file_string().c_str(), mode);
|
||||
stream.open(file_path.generic_string().c_str(), mode);
|
||||
if (!stream) {
|
||||
throw IOError("Failed to open " + file_path.file_string() + " for writing.");
|
||||
throw IOError("Failed to open " + file_path.generic_string() + " for writing.");
|
||||
}
|
||||
}
|
||||
catch (fs::filesystem_error& e) {
|
||||
|
14
ThirdParty/NRLib/nrlib/iotools/stringtools.cpp
vendored
14
ThirdParty/NRLib/nrlib/iotools/stringtools.cpp
vendored
@ -27,7 +27,7 @@
|
||||
#include <string>
|
||||
#include <sstream>
|
||||
|
||||
#define BOOST_FILESYSTEM_VERSION 2
|
||||
//#define BOOST_FILESYSTEM_VERSION 2
|
||||
#include <boost/filesystem.hpp>
|
||||
|
||||
using namespace NRLib;
|
||||
@ -43,7 +43,7 @@ std::string
|
||||
NRLib::GetPath(const std::string& filename)
|
||||
{
|
||||
boost::filesystem::path path(filename);
|
||||
return path.parent_path().file_string();
|
||||
return path.parent_path().generic_string();
|
||||
}
|
||||
|
||||
|
||||
@ -51,7 +51,7 @@ std::string
|
||||
NRLib::GetExtension(const std::string& filename)
|
||||
{
|
||||
boost::filesystem::path path(filename);
|
||||
return path.extension();
|
||||
return path.extension().generic_string();
|
||||
}
|
||||
|
||||
|
||||
@ -59,7 +59,7 @@ std::string
|
||||
NRLib::RemovePath(const std::string& filename)
|
||||
{
|
||||
boost::filesystem::path path(filename);
|
||||
return path.filename();
|
||||
return path.filename().generic_string();
|
||||
}
|
||||
|
||||
|
||||
@ -69,7 +69,7 @@ NRLib::PrependDir(const std::string& prefix,
|
||||
{
|
||||
boost::filesystem::path path(prefix);
|
||||
path /= str;
|
||||
return path.file_string();
|
||||
return path.generic_string();
|
||||
}
|
||||
|
||||
|
||||
@ -79,7 +79,7 @@ NRLib::ReplaceExtension(const std::string& filename,
|
||||
{
|
||||
boost::filesystem::path file(filename);
|
||||
file.replace_extension(extension);
|
||||
return file.file_string();
|
||||
return file.generic_string();
|
||||
}
|
||||
|
||||
std::string
|
||||
@ -94,7 +94,7 @@ std::string
|
||||
NRLib::GetStem(const std::string& filename)
|
||||
{
|
||||
boost::filesystem::path path(filename);
|
||||
return path.stem();
|
||||
return path.stem().generic_string();
|
||||
}
|
||||
|
||||
|
||||
|
18
ThirdParty/NRLib/well_UnitTests/CMakeLists.txt
vendored
18
ThirdParty/NRLib/well_UnitTests/CMakeLists.txt
vendored
@ -1,5 +1,9 @@
|
||||
cmake_minimum_required (VERSION 2.8)
|
||||
|
||||
if (MSVC)
|
||||
ADD_DEFINITIONS("-DBOOST_ALL_NO_LIB")
|
||||
endif()
|
||||
|
||||
project ( well_UnitTests )
|
||||
|
||||
|
||||
@ -8,6 +12,8 @@ include_directories (
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/..
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../..
|
||||
|
||||
${Boost_INCLUDE_DIRS}
|
||||
|
||||
${NR_well_SOURCE_DIR}
|
||||
)
|
||||
|
||||
@ -27,7 +33,19 @@ add_executable (${PROJECT_NAME}
|
||||
|
||||
source_group("" FILES ${PROJECT_FILES})
|
||||
|
||||
if (MSVC)
|
||||
set (RI_BOOST_LIBRARIES
|
||||
debug ${Boost_SYSTEM_LIBRARY_DEBUG}
|
||||
optimized ${Boost_SYSTEM_LIBRARY_RELEASE}
|
||||
debug ${Boost_FILESYSTEM_LIBRARY_DEBUG}
|
||||
optimized ${Boost_FILESYSTEM_LIBRARY_RELEASE}
|
||||
)
|
||||
else()
|
||||
set (RI_BOOST_LIBRARIES ${Boost_LIBRARIES})
|
||||
endif()
|
||||
|
||||
target_link_libraries ( ${PROJECT_NAME}
|
||||
NRLib
|
||||
${RI_BOOST_LIBRARIES}
|
||||
)
|
||||
|
||||
|
@ -9,7 +9,9 @@
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
TEST(WellBaseTest, ReadFromFile)
|
||||
{
|
||||
std::string wellName = "C:/dev/projects/ResInsight/GitHub/NRWellProject/well_UnitTests/Bean_A.las";
|
||||
//std::string wellName = "C:/dev/projects/ResInsight/GitHub/NRWellProject/well_UnitTests/Bean_A.las";
|
||||
|
||||
std::string wellName = "d:/Models/LAS Files/D-D' LAS Files/Bean/Bean_A.las";
|
||||
|
||||
int wellFormat = NRLib::Well::LAS;
|
||||
NRLib::Well* well = NRLib::Well::ReadWell(wellName, wellFormat);
|
||||
|
Loading…
Reference in New Issue
Block a user