cppbind: Tweak from_nasal error reporting
This commit is contained in:
@@ -25,14 +25,15 @@
|
||||
namespace nasal
|
||||
{
|
||||
//----------------------------------------------------------------------------
|
||||
bad_nasal_cast::bad_nasal_cast()
|
||||
bad_nasal_cast::bad_nasal_cast():
|
||||
sg_exception("conversion failed", "bad_nasal_cast")
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bad_nasal_cast::bad_nasal_cast(const std::string& msg):
|
||||
_msg( msg )
|
||||
sg_exception(msg, "bad_nasal_cast")
|
||||
{
|
||||
|
||||
}
|
||||
@@ -43,17 +44,14 @@ namespace nasal
|
||||
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
const char* bad_nasal_cast::what() const throw()
|
||||
{
|
||||
return _msg.empty() ? bad_cast::what() : _msg.c_str();
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
std::string from_nasal_helper(naContext c, naRef ref, const std::string*)
|
||||
{
|
||||
naRef na_str = naStringValue(c, ref);
|
||||
if( !naIsString(na_str) )
|
||||
|
||||
if( naIsNil(na_str) )
|
||||
return std::string();
|
||||
else if( !naIsString(na_str) )
|
||||
throw bad_nasal_cast("Not convertible to string");
|
||||
|
||||
return std::string(naStr_data(na_str), naStr_len(na_str));
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
#include "nasal_traits.hxx"
|
||||
|
||||
#include <simgear/nasal/nasal.h>
|
||||
#include <simgear/structure/exception.hxx>
|
||||
|
||||
#include <boost/utility/enable_if.hpp>
|
||||
#include <boost/type_traits.hpp>
|
||||
@@ -42,7 +43,8 @@ namespace nasal
|
||||
* Thrown when converting a type from/to Nasal has failed
|
||||
*/
|
||||
class bad_nasal_cast:
|
||||
public std::bad_cast
|
||||
public std::bad_cast,
|
||||
public sg_exception
|
||||
{
|
||||
public:
|
||||
/**
|
||||
@@ -59,11 +61,6 @@ namespace nasal
|
||||
|
||||
virtual ~bad_nasal_cast() throw();
|
||||
|
||||
/**
|
||||
* Get a description of the cause of the failed cast.
|
||||
*/
|
||||
virtual const char* what() const throw();
|
||||
|
||||
protected:
|
||||
std::string _msg;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user