123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- #ifndef BOOST_FILESYSTEM3_EXCEPTION_HPP
- #define BOOST_FILESYSTEM3_EXCEPTION_HPP
- #include <boost/config.hpp>
- # if defined( BOOST_NO_STD_WSTRING )
- # error Configuration not supported: Boost.Filesystem V3 and later requires std::wstring support
- # endif
- #include <boost/filesystem/config.hpp>
- #include <boost/filesystem/path.hpp>
- #include <string>
- #include <boost/system/error_code.hpp>
- #include <boost/system/system_error.hpp>
- #include <boost/smart_ptr/intrusive_ptr.hpp>
- #include <boost/smart_ptr/intrusive_ref_counter.hpp>
- #include <boost/config/abi_prefix.hpp> // must be the last #include
- #if defined(BOOST_MSVC)
- #pragma warning(push)
- #pragma warning(disable: 4251)
- #pragma warning(disable: 4275)
- #endif
- namespace boost {
- namespace filesystem {
- class BOOST_SYMBOL_VISIBLE filesystem_error :
- public system::system_error
- {
-
- public:
- BOOST_FILESYSTEM_DECL filesystem_error(const std::string& what_arg, system::error_code ec);
- BOOST_FILESYSTEM_DECL filesystem_error(const std::string& what_arg, const path& path1_arg, system::error_code ec);
- BOOST_FILESYSTEM_DECL filesystem_error(const std::string& what_arg, const path& path1_arg, const path& path2_arg, system::error_code ec);
- BOOST_FILESYSTEM_DECL filesystem_error(filesystem_error const& that);
- BOOST_FILESYSTEM_DECL filesystem_error& operator= (filesystem_error const& that);
- BOOST_FILESYSTEM_DECL ~filesystem_error() BOOST_NOEXCEPT_OR_NOTHROW;
- const path& path1() const BOOST_NOEXCEPT
- {
- return m_imp_ptr.get() ? m_imp_ptr->m_path1 : get_empty_path();
- }
- const path& path2() const BOOST_NOEXCEPT
- {
- return m_imp_ptr.get() ? m_imp_ptr->m_path2 : get_empty_path();
- }
- BOOST_FILESYSTEM_DECL const char* what() const BOOST_NOEXCEPT_OR_NOTHROW BOOST_OVERRIDE;
- private:
- BOOST_FILESYSTEM_DECL static const path& get_empty_path() BOOST_NOEXCEPT;
- private:
- struct impl :
- public boost::intrusive_ref_counter< impl >
- {
- path m_path1;
- path m_path2;
- std::string m_what;
- BOOST_DEFAULTED_FUNCTION(impl(), {})
- explicit impl(path const& path1) : m_path1(path1) {}
- impl(path const& path1, path const& path2) : m_path1(path1), m_path2(path2) {}
- };
- boost::intrusive_ptr< impl > m_imp_ptr;
- };
- }
- }
- #if defined(BOOST_MSVC)
- #pragma warning(pop)
- #endif
- #include <boost/config/abi_suffix.hpp> // pops abi_prefix.hpp pragmas
- #endif
|