diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1999-10-05 16:33:43 -0200 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1999-10-05 16:33:43 -0200 |
commit | 1942b5860981bc6398fe7db2479885fe41297c92 (patch) | |
tree | a0b4de1a76dd677cfc632693a7f6d2750e158be5 | |
parent | 4343420d4d559a7d4cdacdbc1fd61552dcf59f04 (diff) | |
download | lua-1942b5860981bc6398fe7db2479885fe41297c92.tar.gz lua-1942b5860981bc6398fe7db2479885fe41297c92.tar.bz2 lua-1942b5860981bc6398fe7db2479885fe41297c92.zip |
details
-rw-r--r-- | lauxlib.c | 32 |
1 files changed, 22 insertions, 10 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lauxlib.c,v 1.18 1999/08/16 20:52:00 roberto Exp roberto $ | 2 | ** $Id: lauxlib.c,v 1.19 1999/09/06 13:13:03 roberto Exp roberto $ |
3 | ** Auxiliary functions for building Lua libraries | 3 | ** Auxiliary functions for building Lua libraries |
4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
5 | */ | 5 | */ |
@@ -39,16 +39,24 @@ void luaL_argerror (int numarg, const char *extramsg) { | |||
39 | numarg, funcname, extramsg); | 39 | numarg, funcname, extramsg); |
40 | } | 40 | } |
41 | 41 | ||
42 | const char *luaL_check_lstr (int numArg, long *len) { | 42 | static const char *checkstr (lua_Object o, int numArg, long *len) { |
43 | lua_Object o = lua_getparam(numArg); | 43 | const char *s = lua_getstring(o); |
44 | luaL_arg_check(lua_isstring(o), numArg, "string expected"); | 44 | luaL_arg_check(s, numArg, "string expected"); |
45 | if (len) *len = lua_strlen(o); | 45 | if (len) *len = lua_strlen(o); |
46 | return lua_getstring(o); | 46 | return s; |
47 | } | ||
48 | |||
49 | const char *luaL_check_lstr (int numArg, long *len) { | ||
50 | return checkstr(lua_getparam(numArg), numArg, len); | ||
47 | } | 51 | } |
48 | 52 | ||
49 | const char *luaL_opt_lstr (int numArg, const char *def, long *len) { | 53 | const char *luaL_opt_lstr (int numArg, const char *def, long *len) { |
50 | return (lua_getparam(numArg) == LUA_NOOBJECT) ? def : | 54 | lua_Object o = lua_getparam(numArg); |
51 | luaL_check_lstr(numArg, len); | 55 | if (o == LUA_NOOBJECT) { |
56 | if (len) *len = def ? strlen(def) : 0; | ||
57 | return def; | ||
58 | } | ||
59 | else return checkstr(o, numArg, len); | ||
52 | } | 60 | } |
53 | 61 | ||
54 | double luaL_check_number (int numArg) { | 62 | double luaL_check_number (int numArg) { |
@@ -59,9 +67,13 @@ double luaL_check_number (int numArg) { | |||
59 | 67 | ||
60 | 68 | ||
61 | double luaL_opt_number (int numArg, double def) { | 69 | double luaL_opt_number (int numArg, double def) { |
62 | return (lua_getparam(numArg) == LUA_NOOBJECT) ? def : | 70 | lua_Object o = lua_getparam(numArg); |
63 | luaL_check_number(numArg); | 71 | if (o == LUA_NOOBJECT) return def; |
64 | } | 72 | else { |
73 | luaL_arg_check(lua_isnumber(o), numArg, "number expected"); | ||
74 | return lua_getnumber(o); | ||
75 | } | ||
76 | } | ||
65 | 77 | ||
66 | 78 | ||
67 | lua_Object luaL_tablearg (int arg) { | 79 | lua_Object luaL_tablearg (int arg) { |