This commit is contained in:
Roberto Ierusalimschy
1999-10-05 16:33:43 -02:00
parent 4343420d4d
commit 1942b58609

View File

@@ -1,5 +1,5 @@
/* /*
** $Id: lauxlib.c,v 1.18 1999/08/16 20:52:00 roberto Exp roberto $ ** $Id: lauxlib.c,v 1.19 1999/09/06 13:13:03 roberto Exp roberto $
** Auxiliary functions for building Lua libraries ** Auxiliary functions for building Lua libraries
** See Copyright Notice in lua.h ** See Copyright Notice in lua.h
*/ */
@@ -39,16 +39,24 @@ void luaL_argerror (int numarg, const char *extramsg) {
numarg, funcname, extramsg); numarg, funcname, extramsg);
} }
const char *luaL_check_lstr (int numArg, long *len) { static const char *checkstr (lua_Object o, int numArg, long *len) {
lua_Object o = lua_getparam(numArg); const char *s = lua_getstring(o);
luaL_arg_check(lua_isstring(o), numArg, "string expected"); luaL_arg_check(s, numArg, "string expected");
if (len) *len = lua_strlen(o); if (len) *len = lua_strlen(o);
return lua_getstring(o); return s;
}
const char *luaL_check_lstr (int numArg, long *len) {
return checkstr(lua_getparam(numArg), numArg, len);
} }
const char *luaL_opt_lstr (int numArg, const char *def, long *len) { const char *luaL_opt_lstr (int numArg, const char *def, long *len) {
return (lua_getparam(numArg) == LUA_NOOBJECT) ? def : lua_Object o = lua_getparam(numArg);
luaL_check_lstr(numArg, len); if (o == LUA_NOOBJECT) {
if (len) *len = def ? strlen(def) : 0;
return def;
}
else return checkstr(o, numArg, len);
} }
double luaL_check_number (int numArg) { double luaL_check_number (int numArg) {
@@ -59,8 +67,12 @@ double luaL_check_number (int numArg) {
double luaL_opt_number (int numArg, double def) { double luaL_opt_number (int numArg, double def) {
return (lua_getparam(numArg) == LUA_NOOBJECT) ? def : lua_Object o = lua_getparam(numArg);
luaL_check_number(numArg); if (o == LUA_NOOBJECT) return def;
else {
luaL_arg_check(lua_isnumber(o), numArg, "number expected");
return lua_getnumber(o);
}
} }