From c51c0c43ed6a7adc9de90ec1c1a21e601a5edeff Mon Sep 17 00:00:00 2001 From: James Turner Date: Thu, 16 Apr 2020 11:42:41 +0100 Subject: [PATCH] Nasal: add more isTYPE helpers from Henning --- simgear/nasal/lib.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/simgear/nasal/lib.c b/simgear/nasal/lib.c index 5794516d..14ec1e03 100644 --- a/simgear/nasal/lib.c +++ b/simgear/nasal/lib.c @@ -226,6 +226,41 @@ static naRef f_typeof(naContext c, naRef me, int argc, naRef* args) return NEWCSTR(c, t); } +static naRef f_isstr(naContext c, naRef me, int argc, naRef* args) +{ + naRef r = argc > 0 ? args[0] : naNil(); + if(naIsString(r)) return naNum(1); + else return naNum(0); +} + +static naRef f_isvec(naContext c, naRef me, int argc, naRef* args) +{ + naRef r = argc > 0 ? args[0] : naNil(); + if(naIsVector(r)) return naNum(1); + else return naNum(0); +} + +static naRef f_ishash(naContext c, naRef me, int argc, naRef* args) +{ + naRef r = argc > 0 ? args[0] : naNil(); + if(naIsHash(r)) return naNum(1); + else return naNum(0); +} + +static naRef f_isfunc(naContext c, naRef me, int argc, naRef* args) +{ + naRef r = argc > 0 ? args[0] : naNil(); + if(naIsFunc(r)) return naNum(1); + else return naNum(0); +} + +static naRef f_isghost(naContext c, naRef me, int argc, naRef* args) +{ + naRef r = argc > 0 ? args[0] : naNil(); + if(naIsGhost(r)) return naNum(1); + else return naNum(0); +} + static naRef f_ghosttype(naContext c, naRef me, int argc, naRef* args) { naRef g = argc > 0 ? args[0] : naNil(); @@ -652,6 +687,11 @@ static naCFuncItem funcs[] = { { "id", f_id }, { "isint", f_isint }, { "isnum", f_isnum }, + { "isghost", f_isghost }, + { "isstr", f_isstr }, + { "isvec", f_isvec }, + { "ishash", f_ishash }, + { "isfunc", f_isfunc }, { 0 } };