]>
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 | #ifndef BOOST_PROPERTY_TREE_DETAIL_EXCEPTIONS_IMPLEMENTATION_HPP_INCLUDED | |
12 | #define BOOST_PROPERTY_TREE_DETAIL_EXCEPTIONS_IMPLEMENTATION_HPP_INCLUDED | |
13 | ||
14 | namespace boost { namespace property_tree | |
15 | { | |
16 | ||
17 | namespace detail | |
18 | { | |
19 | ||
20 | // Helper for preparing what string in ptree_bad_path exception | |
21 | template<class P> inline | |
22 | std::string prepare_bad_path_what(const std::string &what, | |
23 | const P &path) | |
24 | { | |
25 | return what + " (" + path.dump() + ")"; | |
26 | } | |
27 | ||
28 | } | |
29 | ||
30 | /////////////////////////////////////////////////////////////////////////// | |
31 | // ptree_error | |
32 | ||
33 | inline ptree_error::ptree_error(const std::string &w): | |
34 | std::runtime_error(w) | |
35 | { | |
36 | } | |
37 | ||
38 | inline ptree_error::~ptree_error() throw() | |
39 | { | |
40 | } | |
41 | ||
42 | /////////////////////////////////////////////////////////////////////////// | |
43 | // ptree_bad_data | |
44 | ||
45 | template<class D> inline | |
46 | ptree_bad_data::ptree_bad_data(const std::string &w, const D &d): | |
47 | ptree_error(w), m_data(d) | |
48 | { | |
49 | } | |
50 | ||
51 | inline ptree_bad_data::~ptree_bad_data() throw() | |
52 | { | |
53 | } | |
54 | ||
55 | template<class D> inline | |
56 | D ptree_bad_data::data() const | |
57 | { | |
58 | return boost::any_cast<D>(m_data); | |
59 | } | |
60 | ||
61 | /////////////////////////////////////////////////////////////////////////// | |
62 | // ptree_bad_path | |
63 | ||
64 | template<class P> inline | |
65 | ptree_bad_path::ptree_bad_path(const std::string &w, const P &p): | |
66 | ptree_error(detail::prepare_bad_path_what(w, p)), m_path(p) | |
67 | { | |
68 | ||
69 | } | |
70 | ||
71 | inline ptree_bad_path::~ptree_bad_path() throw() | |
72 | { | |
73 | } | |
74 | ||
75 | template<class P> inline | |
76 | P ptree_bad_path::path() const | |
77 | { | |
78 | return boost::any_cast<P>(m_path); | |
79 | } | |
80 | ||
81 | }} | |
82 | ||
83 | #endif |