57 lines
1.2 KiB
C++
57 lines
1.2 KiB
C++
// This file is distributed under the BSD License.
|
|
// See "license.txt" for details.
|
|
// Copyright 2009-2010, Jonathan Turner (jonathan@emptycrate.com)
|
|
// and Jason Turner (jason@emptycrate.com)
|
|
// http://www.chaiscript.com
|
|
|
|
#ifndef __bad_boxed_cast_hpp__
|
|
#define __bad_boxed_cast_hpp__
|
|
|
|
#include "type_info.hpp"
|
|
|
|
namespace chaiscript
|
|
{
|
|
|
|
/**
|
|
* class that is thrown in the event of a bad_boxed_cast. That is,
|
|
* in the case that a Boxed_Value cannot be cast to the desired type
|
|
*/
|
|
class bad_boxed_cast : public std::bad_cast
|
|
{
|
|
public:
|
|
bad_boxed_cast(const Type_Info &t_from, const std::type_info &t_to,
|
|
const std::string &what)
|
|
: from(t_from), to(&t_to), m_what(what)
|
|
{
|
|
}
|
|
|
|
bad_boxed_cast(const Type_Info &t_from, const std::type_info &t_to) throw()
|
|
: from(t_from), to(&t_to), m_what("Cannot perform boxed_cast")
|
|
{
|
|
}
|
|
|
|
bad_boxed_cast(const std::string &w) throw()
|
|
: m_what(w)
|
|
{
|
|
}
|
|
|
|
virtual ~bad_boxed_cast() throw() {}
|
|
|
|
virtual const char * what () throw()
|
|
{
|
|
return m_what.c_str();
|
|
}
|
|
|
|
Type_Info from;
|
|
const std::type_info *to;
|
|
|
|
private:
|
|
std::string m_what;
|
|
};
|
|
}
|
|
|
|
|
|
|
|
#endif
|
|
|