aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>1996-03-19 19:28:37 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>1996-03-19 19:28:37 -0300
commit85b76bcc01141a118a22203798b7206d943ac072 (patch)
treec4e5500728adaae5fc2cc023860957986deae490
parenta275d9a25b161af426696d7b73d46f91150309c9 (diff)
downloadlua-85b76bcc01141a118a22203798b7206d943ac072.tar.gz
lua-85b76bcc01141a118a22203798b7206d943ac072.tar.bz2
lua-85b76bcc01141a118a22203798b7206d943ac072.zip
functions "lua_is..." consider coercions.
small change when calling call hook.
-rw-r--r--opcode.c30
1 files changed, 22 insertions, 8 deletions
diff --git a/opcode.c b/opcode.c
index fa0f8064..1bf1d18b 100644
--- a/opcode.c
+++ b/opcode.c
@@ -3,7 +3,7 @@
3** TecCGraf - PUC-Rio 3** TecCGraf - PUC-Rio
4*/ 4*/
5 5
6char *rcs_opcode="$Id: opcode.c,v 3.60 1996/03/15 13:13:13 roberto Exp roberto $"; 6char *rcs_opcode="$Id: opcode.c,v 3.61 1996/03/19 16:50:24 roberto Exp roberto $";
7 7
8#include <setjmp.h> 8#include <setjmp.h>
9#include <stdio.h> 9#include <stdio.h>
@@ -259,13 +259,10 @@ static StkId callC (lua_CFunction func, StkId base)
259 /* incorporate parameters on the stack */ 259 /* incorporate parameters on the stack */
260 CBase = base+CnResults; /* == top-stack */ 260 CBase = base+CnResults; /* == top-stack */
261 if (call_hook) 261 if (call_hook)
262 { 262 callHook(base, LUA_T_CMARK, 0);
263 callHook (base, LUA_T_CMARK, 0); 263 (*func)();
264 (*func)(); 264 if (call_hook) /* func may have changed call_hook */
265 callHook (base, LUA_T_CMARK, 1); 265 callHook(base, LUA_T_CMARK, 1);
266 }
267 else
268 (*func)();
269 firstResult = CBase; 266 firstResult = CBase;
270 CBase = oldBase; 267 CBase = oldBase;
271 CnResults = oldCnResults; 268 CnResults = oldCnResults;
@@ -673,6 +670,23 @@ lua_Object lua_getparam (int number)
673 return CBase-CnResults+number; 670 return CBase-CnResults+number;
674} 671}
675 672
673int lua_isnumber (lua_Object object)
674{
675 return (object != LUA_NOOBJECT) && (tonumber(Address(object)) == 0);
676}
677
678int lua_isstring (lua_Object object)
679{
680 int t = lua_type(object);
681 return (t == LUA_T_STRING) || (t == LUA_T_NUMBER);
682}
683
684int lua_isfunction (lua_Object object)
685{
686 int t = lua_type(object);
687 return (t == LUA_T_FUNCTION) || (t == LUA_T_CFUNCTION);
688}
689
676/* 690/*
677** Given an object handle, return its number value. On error, return 0.0. 691** Given an object handle, return its number value. On error, return 0.0.
678*/ 692*/