00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include "scripting/squirrel_error.hpp"
00018 #include <sstream>
00019
00020 namespace scripting {
00021
00022 SquirrelError::SquirrelError(HSQUIRRELVM v, const std::string& message) throw() :
00023 message()
00024 {
00025 std::ostringstream msg;
00026 msg << "Squirrel error: " << message << " (";
00027 const char* lasterr;
00028 sq_getlasterror(v);
00029 if(sq_gettype(v, -1) != OT_STRING)
00030 {
00031 lasterr = "no error info";
00032 }
00033 else
00034 {
00035 sq_getstring(v, -1, &lasterr);
00036 }
00037 msg << lasterr << ")";
00038 sq_pop(v, 1);
00039 this->message = msg.str();
00040 }
00041
00042 SquirrelError::~SquirrelError() throw()
00043 {}
00044
00045 const char*
00046 SquirrelError::what() const throw()
00047 {
00048 return message.c_str();
00049 }
00050
00051 }
00052
00053