From 5037196f6fddb828056578b1c0d352cdef672d6a Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Mon, 5 Aug 2002 11:50:39 -0300 Subject: new macros `ttis*' --- lobject.h | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) (limited to 'lobject.h') diff --git a/lobject.h b/lobject.h index 0e800c16..e3dc6f95 100644 --- a/lobject.h +++ b/lobject.h @@ -1,5 +1,5 @@ /* -** $Id: lobject.h,v 1.139 2002/07/01 17:06:58 roberto Exp roberto $ +** $Id: lobject.h,v 1.140 2002/07/17 16:25:13 roberto Exp $ ** Type definitions for Lua objects ** See Copyright Notice in lua.h */ @@ -33,18 +33,27 @@ typedef struct lua_TObject { } TObject; +/* Macros to test type */ +#define ttisnil(o) (ttype(o) == LUA_TNIL) +#define ttisnumber(o) (ttype(o) == LUA_TNUMBER) +#define ttisstring(o) (ttype(o) == LUA_TSTRING) +#define ttistable(o) (ttype(o) == LUA_TTABLE) +#define ttisfunction(o) (ttype(o) == LUA_TFUNCTION) +#define ttisboolean(o) (ttype(o) == LUA_TBOOLEAN) +#define ttisuserdata(o) (ttype(o) == LUA_TUSERDATA) +#define ttislightuserdata(o) (ttype(o) == LUA_TLIGHTUSERDATA) + /* Macros to access values */ #define ttype(o) ((o)->tt) -#define pvalue(o) check_exp(ttype(o)==LUA_TLIGHTUSERDATA, (o)->value.p) -#define nvalue(o) check_exp(ttype(o)==LUA_TNUMBER, (o)->value.n) -#define tsvalue(o) check_exp(ttype(o)==LUA_TSTRING, (o)->value.ts) -#define uvalue(o) check_exp(ttype(o)==LUA_TUSERDATA, (o)->value.u) -#define clvalue(o) check_exp(ttype(o)==LUA_TFUNCTION, (o)->value.cl) -#define hvalue(o) check_exp(ttype(o)==LUA_TTABLE, (o)->value.h) -#define bvalue(o) check_exp(ttype(o)==LUA_TBOOLEAN, (o)->value.b) - -#define l_isfalse(o) (ttype(o) == LUA_TNIL || \ - (ttype(o) == LUA_TBOOLEAN && bvalue(o) == 0)) +#define pvalue(o) check_exp(ttislightuserdata(o), (o)->value.p) +#define nvalue(o) check_exp(ttisnumber(o), (o)->value.n) +#define tsvalue(o) check_exp(ttisstring(o), (o)->value.ts) +#define uvalue(o) check_exp(ttisuserdata(o), (o)->value.u) +#define clvalue(o) check_exp(ttisfunction(o), (o)->value.cl) +#define hvalue(o) check_exp(ttistable(o), (o)->value.h) +#define bvalue(o) check_exp(ttisboolean(o), (o)->value.b) + +#define l_isfalse(o) (ttisnil(o) || (ttisboolean(o) && bvalue(o) == 0)) /* Macros to set values */ #define setnvalue(obj,x) \ -- cgit v1.2.3-55-g6feb