]> git.llucax.com Git - software/posixx.git/blob - src/error.hpp
Add Boost License
[software/posixx.git] / src / error.hpp
1 // Copyright Leandro Lucarella 2008 - 2010.
2 // Distributed under the Boost Software License, Version 1.0.
3 // (See accompanying file COPYING or copy at
4 // http://www.boost.org/LICENSE_1_0.txt)
5
6
7 #ifndef POSIXX_ERROR_HPP_
8 #define POSIXX_ERROR_HPP_
9
10 #include <cstring>
11 #include <stdexcept>
12 #include <cerrno>
13 #include <string>
14
15 /// @file
16
17 namespace posixx {
18
19 /// Posix error.
20 struct error: std::runtime_error
21 {
22
23         /// Default constructor, gets the error number and string from errno.
24         error() throw();
25
26         /**
27          * Constructor with a more detailed message.
28          *
29          * @param where Description about where the error was thrown.
30          */
31         explicit error(const std::string& where) throw ();
32
33         /// Destructor
34         ~error() throw();
35
36         /// Error number, as of errno.
37         int no;
38
39 };
40
41 } // namespace posixx
42
43
44 inline
45 posixx::error::error() throw():
46                 std::runtime_error(strerror(errno)), no(errno)
47 {
48 }
49
50 inline
51 posixx::error::error(const std::string& where) throw ():
52                 std::runtime_error(where + ": " + strerror(errno)), no(errno)
53 {
54 }
55
56 inline
57 posixx::error::~error() throw ()
58 {
59 }
60
61 #endif // POSIXX_ERROR_HPP_