| // ---------------------------------------------------------------------------- |
| // Copyright (C) 2002-2006 Marcin Kalicinski |
| // Copyright (C) 2009 Sebastian Redl |
| // |
| // Distributed under the Boost Software License, Version 1.0. |
| // (See accompanying file LICENSE_1_0.txt or copy at |
| // http://www.boost.org/LICENSE_1_0.txt) |
| // |
| // For more information, see www.boost.org |
| // ---------------------------------------------------------------------------- |
| #ifndef BOOST_PROPERTY_TREE_DETAIL_EXCEPTIONS_IMPLEMENTATION_HPP_INCLUDED |
| #define BOOST_PROPERTY_TREE_DETAIL_EXCEPTIONS_IMPLEMENTATION_HPP_INCLUDED |
| |
| namespace boost { namespace property_tree |
| { |
| |
| namespace detail |
| { |
| |
| // Helper for preparing what string in ptree_bad_path exception |
| template<class P> inline |
| std::string prepare_bad_path_what(const std::string &what, |
| const P &path) |
| { |
| return what + " (" + path.dump() + ")"; |
| } |
| |
| } |
| |
| /////////////////////////////////////////////////////////////////////////// |
| // ptree_error |
| |
| inline ptree_error::ptree_error(const std::string &w): |
| std::runtime_error(w) |
| { |
| } |
| |
| inline ptree_error::~ptree_error() throw() |
| { |
| } |
| |
| /////////////////////////////////////////////////////////////////////////// |
| // ptree_bad_data |
| |
| template<class D> inline |
| ptree_bad_data::ptree_bad_data(const std::string &w, const D &d): |
| ptree_error(w), m_data(d) |
| { |
| } |
| |
| inline ptree_bad_data::~ptree_bad_data() throw() |
| { |
| } |
| |
| template<class D> inline |
| D ptree_bad_data::data() |
| { |
| return boost::any_cast<D>(m_data); |
| } |
| |
| /////////////////////////////////////////////////////////////////////////// |
| // ptree_bad_path |
| |
| template<class P> inline |
| ptree_bad_path::ptree_bad_path(const std::string &w, const P &p): |
| ptree_error(detail::prepare_bad_path_what(w, p)), m_path(p) |
| { |
| |
| } |
| |
| inline ptree_bad_path::~ptree_bad_path() throw() |
| { |
| } |
| |
| template<class P> inline |
| P ptree_bad_path::path() |
| { |
| return boost::any_cast<P>(m_path); |
| } |
| |
| }} |
| |
| #endif |