aboutsummaryrefslogtreecommitdiff
path: root/src/FbTk/Luamm.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/FbTk/Luamm.cc')
-rw-r--r--src/FbTk/Luamm.cc23
1 files changed, 19 insertions, 4 deletions
diff --git a/src/FbTk/Luamm.cc b/src/FbTk/Luamm.cc
index 80d0926..8824b06 100644
--- a/src/FbTk/Luamm.cc
+++ b/src/FbTk/Luamm.cc
@@ -285,6 +285,16 @@ namespace lua {
285 } 285 }
286 } 286 }
287 287
288 std::string state::checkstring(int narg) throw(lua::check_error, std::bad_alloc)
289 {
290 try {
291 return tostring(narg);
292 }
293 catch(lua::not_string_error &e) {
294 throw_check_error(narg, TSTRING);
295 }
296 }
297
288 void *state::checkudata(int narg, const char *tname) throw(lua::check_error, std::bad_alloc) 298 void *state::checkudata(int narg, const char *tname) throw(lua::check_error, std::bad_alloc)
289 { 299 {
290 checkstack(2); 300 checkstack(2);
@@ -299,10 +309,7 @@ namespace lua {
299 pop(2); 309 pop(2);
300 } 310 }
301 } 311 }
302 std::ostringstream str; 312 throw_check_error(narg, TUSERDATA);
303 str << "Invalid argument #" << narg << ": expected " << type_name(TUSERDATA)
304 << ", got " << type_name(type(narg));
305 throw lua::check_error(str.str());
306 } 313 }
307 314
308 void state::checkstack(int extra) throw(std::bad_alloc) 315 void state::checkstack(int extra) throw(std::bad_alloc)
@@ -478,6 +485,14 @@ namespace lua {
478 call(3, 0, 0); 485 call(3, 0, 0);
479 } 486 }
480 487
488 void state::throw_check_error(int narg, Type expected) throw(lua::check_error)
489 {
490 std::ostringstream str;
491 str << "Invalid argument #" << narg << ": expected " << type_name(expected)
492 << ", got " << type_name(type(narg));
493 throw lua::check_error(str.str());
494 }
495
481 std::string state::tostring(int index) throw(lua::not_string_error) 496 std::string state::tostring(int index) throw(lua::not_string_error)
482 { 497 {
483 size_t len; 498 size_t len;