Ugly, not-to-be-pushed sucking in of all of Boost to get windows to work.
[dyninst.git] / external / boost / filesystem / exception.hpp
1 //  boost/filesystem/exception.hpp  ------------------------------------------//
2
3 //  Copyright © 2002 Beman Dawes                                          
4 //  Copyright © 2001 Dietmar Kühl                                         
5 //                                                                        
6 //  Use, modification, and distribution is subject to the Boost Software 
7 //  License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy 
8 //  at http://www.boost.org/LICENSE_1_0.txt)                             
9
10 //  See library home page at http://www.boost.org/libs/filesystem
11
12 //----------------------------------------------------------------------------// 
13
14 #ifndef BOOST_FILESYSTEM_EXCEPTION_HPP
15 #define BOOST_FILESYSTEM_EXCEPTION_HPP
16
17 #include <boost/filesystem/config.hpp>
18 #include <boost/filesystem/path.hpp>
19
20 #include <string>
21 #include <exception>
22 #include <boost/shared_ptr.hpp>
23
24 #include <boost/config/abi_prefix.hpp> // must be the last header
25
26 //----------------------------------------------------------------------------// 
27
28 namespace boost
29 {
30   namespace filesystem
31   {
32     namespace detail
33     {
34       BOOST_FILESYSTEM_DECL int system_error_code(); // artifact of POSIX and WINDOWS error reporting
35     }
36
37     enum error_code
38     {
39       no_error = 0,
40       system_error,     // system generated error; if possible, is translated
41                         // to one of the more specific errors below.
42       other_error,      // library generated error
43       security_error,   // includes access rights, permissions failures
44       read_only_error,
45       io_error,
46       path_error,
47       not_found_error,
48       not_directory_error,
49       busy_error,       // implies trying again might succeed
50       already_exists_error,
51       not_empty_error,
52       is_directory_error,
53       out_of_space_error,
54       out_of_memory_error,
55       out_of_resource_error
56     };
57
58
59     class BOOST_FILESYSTEM_DECL filesystem_error : public std::exception
60     {
61     public:
62
63       filesystem_error(
64         const std::string & who,
65         const std::string & message ); // assumed to be error_code::other_error
66
67       filesystem_error(
68         const std::string & who,
69         const path & path1,
70         const std::string & message,
71         error_code ec = other_error );
72
73       filesystem_error(
74         const std::string & who,
75         const path & path1,
76         int sys_err_code );
77
78       filesystem_error(
79         const std::string & who,
80         const path & path1,
81         const path & path2,
82         int sys_err_code );
83
84       ~filesystem_error() throw();
85
86       virtual const char * what() const throw();
87
88       int             native_error() const { return m_sys_err; }
89       // Note: a value of 0 implies a library (rather than system) error
90       error_code      error() const { return m_err; }
91       const std::string &  who() const; // name of who throwing exception
92       const path &    path1() const; // argument 1 to who; may be empty()
93       const path &    path2() const; // argument 2 to who; may be empty()
94
95     private:
96       class             m_imp;
97       shared_ptr<m_imp> m_imp_ptr;
98       int               m_sys_err;
99       error_code        m_err;
100     };
101
102   } // namespace filesystem
103 } // namespace boost
104
105 #include <boost/config/abi_suffix.hpp> // pops abi_suffix.hpp pragmas
106 #endif // BOOST_FILESYSTEM_EXCEPTION_HPP