]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | // ---------------------------------------------------------------------------- |
2 | // Copyright (C) 2002-2006 Marcin Kalicinski | |
3 | // Copyright (C) 2009 Sebastian Redl | |
4 | // | |
5 | // Distributed under the Boost Software License, Version 1.0. | |
6 | // (See accompanying file LICENSE_1_0.txt or copy at | |
7 | // http://www.boost.org/LICENSE_1_0.txt) | |
8 | // | |
9 | // For more information, see www.boost.org | |
10 | // ---------------------------------------------------------------------------- | |
11 | ||
12 | #ifndef BOOST_PROPERTY_TREE_EXCEPTIONS_HPP_INCLUDED | |
13 | #define BOOST_PROPERTY_TREE_EXCEPTIONS_HPP_INCLUDED | |
14 | ||
15 | #include <boost/property_tree/ptree_fwd.hpp> | |
16 | ||
17 | #include <boost/any.hpp> | |
18 | #include <string> | |
19 | #include <stdexcept> | |
20 | ||
21 | namespace boost { namespace property_tree | |
22 | { | |
23 | ||
24 | /// Base class for all property tree errors. Derives from | |
25 | /// @c std::runtime_error. Call member function @c what to get human | |
26 | /// readable message associated with the error. | |
27 | class ptree_error : public std::runtime_error | |
28 | { | |
29 | public: | |
30 | /// Instantiate a ptree_error instance with the given message. | |
31 | /// @param what The message to associate with this error. | |
32 | ptree_error(const std::string &what); | |
33 | ||
34 | ~ptree_error() throw(); | |
35 | }; | |
36 | ||
37 | ||
38 | /// Error indicating that translation from given value to the property tree | |
39 | /// data_type (or vice versa) failed. Derives from ptree_error. | |
40 | class ptree_bad_data : public ptree_error | |
41 | { | |
42 | public: | |
43 | /// Instantiate a ptree_bad_data instance with the given message and | |
44 | /// data. | |
45 | /// @param what The message to associate with this error. | |
46 | /// @param data The value associated with this error that was the source | |
47 | /// of the translation failure. | |
48 | template<class T> ptree_bad_data(const std::string &what, | |
49 | const T &data); | |
50 | ||
51 | ~ptree_bad_data() throw(); | |
52 | ||
53 | /// Retrieve the data associated with this error. This is the source | |
54 | /// value that failed to be translated. You need to explicitly | |
55 | /// specify its type. | |
56 | template<class T> T data() const; | |
57 | private: | |
58 | boost::any m_data; | |
59 | }; | |
60 | ||
61 | ||
62 | /// Error indicating that specified path does not exist. Derives from | |
63 | /// ptree_error. | |
64 | class ptree_bad_path : public ptree_error | |
65 | { | |
66 | public: | |
67 | /// Instantiate a ptree_bad_path with the given message and path data. | |
68 | /// @param what The message to associate with this error. | |
69 | /// @param path The path that could not be found in the property_tree. | |
70 | template<class T> ptree_bad_path(const std::string &what, | |
71 | const T &path); | |
72 | ||
73 | ~ptree_bad_path() throw(); | |
74 | ||
75 | /// Retrieve the invalid path. You need to explicitly specify the | |
76 | /// type of path. | |
77 | template<class T> T path() const; | |
78 | private: | |
79 | boost::any m_path; | |
80 | }; | |
81 | ||
82 | }} | |
83 | ||
84 | #include <boost/property_tree/detail/exception_implementation.hpp> | |
85 | ||
86 | #endif |