Blame view

3rdparty/boost_1_81_0/boost/filesystem/exception.hpp 3.39 KB
598bfd3f   Hu Chunming   提交_GLIBCXX_USE_CX...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
  //  boost/filesystem/exception.hpp  -----------------------------------------------------//
  
  //  Copyright Beman Dawes 2003
  //  Copyright Andrey Semashev 2019
  
  //  Distributed under the Boost Software License, Version 1.0.
  //  See http://www.boost.org/LICENSE_1_0.txt
  
  //  Library home page: http://www.boost.org/libs/filesystem
  
  #ifndef BOOST_FILESYSTEM_EXCEPTION_HPP
  #define BOOST_FILESYSTEM_EXCEPTION_HPP
  
  #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/filesystem/detail/header.hpp> // must be the last #include
  
  namespace boost {
  namespace filesystem {
  
  //--------------------------------------------------------------------------------------//
  //                                                                                      //
  //                            class filesystem_error                                    //
  //                                                                                      //
  //--------------------------------------------------------------------------------------//
  
  class BOOST_SYMBOL_VISIBLE filesystem_error :
      public system::system_error
  {
      // see http://www.boost.org/more/error_handling.html for design rationale
  
  public:
      BOOST_FILESYSTEM_DECL filesystem_error(const char* what_arg, system::error_code ec);
      BOOST_FILESYSTEM_DECL filesystem_error(std::string const& what_arg, system::error_code ec);
      BOOST_FILESYSTEM_DECL filesystem_error(const char* what_arg, path const& path1_arg, system::error_code ec);
      BOOST_FILESYSTEM_DECL filesystem_error(std::string const& what_arg, path const& path1_arg, system::error_code ec);
      BOOST_FILESYSTEM_DECL filesystem_error(const char* what_arg, path const& path1_arg, path const& path2_arg, system::error_code ec);
      BOOST_FILESYSTEM_DECL filesystem_error(std::string const& what_arg, path const& path1_arg, path const& 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;
  
      path const& path1() const BOOST_NOEXCEPT
      {
          return m_imp_ptr.get() ? m_imp_ptr->m_path1 : get_empty_path();
      }
      path const& 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 path const& get_empty_path() BOOST_NOEXCEPT;
  
  private:
      struct impl :
          public boost::intrusive_ref_counter< impl >
      {
          path m_path1;       // may be empty()
          path m_path2;       // may be empty()
          std::string m_what; // not built until needed
  
          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;
  };
  
  } // namespace filesystem
  } // namespace boost
  
  #include <boost/filesystem/detail/footer.hpp>
  
  #endif // BOOST_FILESYSTEM_EXCEPTION_HPP