#include "vmrunner.hpp" #include "fncmodules.hpp" #define bindFuncr(fs,fn) if(getHash(fnc)==getHash(fs))vm->vmSetRetValf(fn().r()) #define bindFunci(fs,fn) if(getHash(fnc)==getHash(fs))vm->vmSetRetVald(fn().i()) #define bindFuncv(fs,fn) if(getHash(fnc)==getHash(fs))fn() extern unsigned getHash(const char *s); void callFnc(const char* fnc) { bindFunci("randi",randi);bindFuncr("randr",randr); bindFunci("createBullet",createBullet); bindFuncv("setBulletPropf",setBulletPropf); bindFuncv("setBulletPropi",setBulletPropi); bindFuncr("sin",vmsin);bindFuncr("cos",vmcos); bindFuncr("tan",vmtan);bindFuncr("sqrt",vmsqrt); bindFuncr("absf",vmabsf);bindFunci("absd",vmabsd); bindFuncr("asin",vmasin);bindFuncr("acos",vmacos); bindFuncr("atan",vmatan);bindFuncr("atan2",vmatan2); bindFuncr("log",vmlog);bindFuncr("ceil",vmceil); bindFuncr("floor",vmfloor);bindFuncr("trunc",vmtrunc); bindFuncr("round",vmround); if(callStk.empty())callStk.clear(); }