89 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| // ----------------------------------------------------------------------------
 | |
| // Copyright (C) 2002-2006 Marcin Kalicinski
 | |
| //
 | |
| // 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_FILE_PARSER_ERROR_HPP_INCLUDED
 | |
| #define BOOST_PROPERTY_TREE_DETAIL_FILE_PARSER_ERROR_HPP_INCLUDED
 | |
| 
 | |
| #include <boost/property_tree/ptree.hpp>
 | |
| #include <string>
 | |
| 
 | |
| namespace boost { namespace property_tree
 | |
| {
 | |
| 
 | |
|     //! File parse error
 | |
|     class file_parser_error: public ptree_error
 | |
|     {
 | |
| 
 | |
|     public:
 | |
| 
 | |
|         ///////////////////////////////////////////////////////////////////////
 | |
|         // Construction & destruction
 | |
| 
 | |
|         // Construct error
 | |
|         file_parser_error(const std::string &msg,
 | |
|                           const std::string &file,
 | |
|                           unsigned long l) :
 | |
|             ptree_error(format_what(msg, file, l)),
 | |
|             m_message(msg), m_filename(file), m_line(l)
 | |
|         {
 | |
|         }
 | |
| 
 | |
|         ~file_parser_error() throw()
 | |
|             // gcc 3.4.2 complains about lack of throw specifier on compiler
 | |
|             // generated dtor
 | |
|         {
 | |
|         }
 | |
| 
 | |
|         ///////////////////////////////////////////////////////////////////////
 | |
|         // Data access
 | |
| 
 | |
|         // Get error message (without line and file - use what() to get
 | |
|         // full message)
 | |
|         std::string message() const
 | |
|         {
 | |
|             return m_message;
 | |
|         }
 | |
| 
 | |
|         // Get error filename
 | |
|         std::string filename() const
 | |
|         {
 | |
|             return m_filename;
 | |
|         }
 | |
| 
 | |
|         // Get error line number
 | |
|         unsigned long line() const
 | |
|         {
 | |
|             return m_line;
 | |
|         }
 | |
| 
 | |
|     private:
 | |
| 
 | |
|         std::string m_message;
 | |
|         std::string m_filename;
 | |
|         unsigned long m_line;
 | |
| 
 | |
|         // Format error message to be returned by std::runtime_error::what()
 | |
|         static std::string format_what(const std::string &msg,
 | |
|                                        const std::string &file,
 | |
|                                        unsigned long l)
 | |
|         {
 | |
|             std::stringstream stream;
 | |
|             stream << (file.empty() ? "<unspecified file>" : file.c_str());
 | |
|             if (l > 0)
 | |
|                 stream << '(' << l << ')';
 | |
|             stream << ": " << msg;
 | |
|             return stream.str();
 | |
|         }
 | |
| 
 | |
|     };
 | |
| 
 | |
| } }
 | |
| 
 | |
| #endif
 | 
