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