some cleanups and changes to miniswig and scripting code
[supertux.git] / src / scripting / squirrel_error.cpp
1 #include <config.h>
2
3 #include "squirrel_error.hpp"
4 #include <sstream>
5
6 namespace Scripting
7 {
8
9 SquirrelError::SquirrelError(HSQUIRRELVM v, const std::string& message) throw()
10 {
11   std::ostringstream msg;
12   msg << "Squirrel error: " << message << " (";
13   const char* lasterr;
14   sq_getlasterror(v);
15   if(sq_gettype(v, -1) != OT_STRING)
16   {
17     lasterr = "no error info";
18   }
19   else
20   {
21     sq_getstring(v, -1, &lasterr);
22   }
23   sq_pop(v, 1);
24   msg << lasterr << ")";
25   this->message = msg.str();
26 }
27
28 SquirrelError::~SquirrelError() throw()
29 {}
30
31 const char*
32 SquirrelError::what() const throw()
33 {
34   return message.c_str();
35 }
36
37 }