cppbind: Tweak from_nasal error reporting

This commit is contained in:
Thomas Geymayer
2013-03-04 23:15:00 +01:00
parent 6eff167a28
commit 2db8859076
2 changed files with 10 additions and 15 deletions

View File

@@ -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));

View File

@@ -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;
};