summaryrefslogtreecommitdiff
path: root/lapi.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2000-10-02 17:10:55 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2000-10-02 17:10:55 -0300
commitf6834f4393eaa1055c2bbde82ebb33cc58be8371 (patch)
tree3583008ef181106d0fc7e130300f12adc70a5854 /lapi.c
parent78bc8e553d4190fc3b90be5b621fc0f3507586ef (diff)
downloadlua-f6834f4393eaa1055c2bbde82ebb33cc58be8371.tar.gz
lua-f6834f4393eaa1055c2bbde82ebb33cc58be8371.tar.bz2
lua-f6834f4393eaa1055c2bbde82ebb33cc58be8371.zip
new API function `lua_type' + new type lua_Type
Diffstat (limited to 'lapi.c')
-rw-r--r--lapi.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/lapi.c b/lapi.c
index f2cd0b0d..48488d3a 100644
--- a/lapi.c
+++ b/lapi.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lapi.c,v 1.101 2000/09/29 12:42:13 roberto Exp roberto $ 2** $Id: lapi.c,v 1.102 2000/10/02 14:47:43 roberto Exp roberto $
3** Lua API 3** Lua API
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -116,8 +116,16 @@ void lua_pushvalue (lua_State *L, int index) {
116 return ((test) ? (value) : (default)); } 116 return ((test) ? (value) : (default)); }
117 117
118 118
119const char *lua_type (lua_State *L, int index) { 119lua_Type lua_type (lua_State *L, int index) {
120 btest(L, index, luaO_typename(o), "NO VALUE"); 120 btest(L, index, luaO_type(o), LUA_NOVALUE);
121}
122
123const char *lua_typename (lua_State *L, lua_Type t) {
124 static const char *const names[] = {
125 "NO VALUE", "userdata", "number", "string", "table", "function", "nil"
126 };
127 UNUSED(L);
128 return names[(int)t];
121} 129}
122 130
123int lua_iscfunction (lua_State *L, int index) { 131int lua_iscfunction (lua_State *L, int index) {
@@ -128,6 +136,11 @@ int lua_isnumber (lua_State *L, int index) {
128 btest(L, index, (tonumber(Index(L, index)) == 0), 0); 136 btest(L, index, (tonumber(Index(L, index)) == 0), 0);
129} 137}
130 138
139int lua_isstring (lua_State *L, int index) {
140 lua_Type t = lua_type(L, index);
141 return (t == LUA_TSTRING || t == LUA_TNUMBER);
142}
143
131int lua_tag (lua_State *L, int index) { 144int lua_tag (lua_State *L, int index) {
132 btest(L, index, 145 btest(L, index,
133 ((ttype(o) == TAG_USERDATA) ? tsvalue(o)->u.d.tag : 146 ((ttype(o) == TAG_USERDATA) ? tsvalue(o)->u.d.tag :
@@ -411,7 +424,7 @@ void lua_settag (lua_State *L, int tag) {
411 break; 424 break;
412 default: 425 default:
413 luaO_verror(L, "cannot change the tag of a %.20s", 426 luaO_verror(L, "cannot change the tag of a %.20s",
414 luaO_typename(L->top-1)); 427 luaO_typename(L, L->top-1));
415 } 428 }
416 L->top--; 429 L->top--;
417} 430}