diff options
author | yexo <yexo@openttd.org> | 2009-09-10 20:19:12 +0000 |
---|---|---|
committer | yexo <yexo@openttd.org> | 2009-09-10 20:19:12 +0000 |
commit | ca6c4ee98ade5710757ed662108823525a4ee4c7 (patch) | |
tree | 4ff6fb521658b17e4e0801cd1d7b82f70fe5be85 /src/3rdparty/squirrel/sqstdlib | |
parent | 6175ee0fa41ea8a9d5c84aed8e47a5f4d3e9a6b7 (diff) | |
download | openttd-ca6c4ee98ade5710757ed662108823525a4ee4c7.tar.xz |
(svn r17498) -Add [NoAI]: Enable the squirrel std math library
Diffstat (limited to 'src/3rdparty/squirrel/sqstdlib')
-rw-r--r-- | src/3rdparty/squirrel/sqstdlib/sqstdmath.cpp | 40 |
1 files changed, 23 insertions, 17 deletions
diff --git a/src/3rdparty/squirrel/sqstdlib/sqstdmath.cpp b/src/3rdparty/squirrel/sqstdlib/sqstdmath.cpp index 7d35f40e4..0e8847dcf 100644 --- a/src/3rdparty/squirrel/sqstdlib/sqstdmath.cpp +++ b/src/3rdparty/squirrel/sqstdlib/sqstdmath.cpp @@ -4,15 +4,17 @@ #include <stdlib.h> #include <sqstdmath.h> -#define SINGLE_ARG_FUNC(_funcname) static SQInteger math_##_funcname(HSQUIRRELVM v){ \ +#define SINGLE_ARG_FUNC(_funcname, num_ops) static SQInteger math_##_funcname(HSQUIRRELVM v){ \ SQFloat f; \ + sq_decreaseops(v,num_ops); \ sq_getfloat(v,2,&f); \ sq_pushfloat(v,(SQFloat)_funcname(f)); \ return 1; \ } -#define TWO_ARGS_FUNC(_funcname) static SQInteger math_##_funcname(HSQUIRRELVM v){ \ +#define TWO_ARGS_FUNC(_funcname, num_ops) static SQInteger math_##_funcname(HSQUIRRELVM v){ \ SQFloat p1,p2; \ + sq_decreaseops(v,num_ops); \ sq_getfloat(v,2,&p1); \ sq_getfloat(v,3,&p2); \ sq_pushfloat(v,(SQFloat)_funcname(p1,p2)); \ @@ -42,21 +44,21 @@ static SQInteger math_abs(HSQUIRRELVM v) return 1; } -SINGLE_ARG_FUNC(sqrt) -SINGLE_ARG_FUNC(fabs) -SINGLE_ARG_FUNC(sin) -SINGLE_ARG_FUNC(cos) -SINGLE_ARG_FUNC(asin) -SINGLE_ARG_FUNC(acos) -SINGLE_ARG_FUNC(log) -SINGLE_ARG_FUNC(log10) -SINGLE_ARG_FUNC(tan) -SINGLE_ARG_FUNC(atan) -TWO_ARGS_FUNC(atan2) -TWO_ARGS_FUNC(pow) -SINGLE_ARG_FUNC(floor) -SINGLE_ARG_FUNC(ceil) -SINGLE_ARG_FUNC(exp) +SINGLE_ARG_FUNC(sqrt, 100) +SINGLE_ARG_FUNC(fabs, 1) +SINGLE_ARG_FUNC(sin, 100) +SINGLE_ARG_FUNC(cos, 100) +SINGLE_ARG_FUNC(asin, 100) +SINGLE_ARG_FUNC(acos, 100) +SINGLE_ARG_FUNC(log, 100) +SINGLE_ARG_FUNC(log10, 100) +SINGLE_ARG_FUNC(tan, 100) +SINGLE_ARG_FUNC(atan, 100) +TWO_ARGS_FUNC(atan2, 100) +TWO_ARGS_FUNC(pow, 100) +SINGLE_ARG_FUNC(floor, 1) +SINGLE_ARG_FUNC(ceil, 1) +SINGLE_ARG_FUNC(exp, 100) #define _DECL_FUNC(name,nparams,tycheck) {_SC(#name),math_##name,nparams,tycheck} static SQRegFunction mathlib_funcs[] = { @@ -74,8 +76,10 @@ static SQRegFunction mathlib_funcs[] = { _DECL_FUNC(floor,2,_SC(".n")), _DECL_FUNC(ceil,2,_SC(".n")), _DECL_FUNC(exp,2,_SC(".n")), +#ifdef EXPORT_DEFAULT_SQUIRREL_FUNCTIONS _DECL_FUNC(srand,2,_SC(".n")), _DECL_FUNC(rand,1,NULL), +#endif /* EXPORT_DEFAULT_SQUIRREL_FUNCTIONS */ _DECL_FUNC(fabs,2,_SC(".n")), _DECL_FUNC(abs,2,_SC(".n")), {0,0,0,0}, @@ -96,9 +100,11 @@ SQRESULT sqstd_register_mathlib(HSQUIRRELVM v) sq_createslot(v,-3); i++; } +#ifdef EXPORT_DEFAULT_SQUIRREL_FUNCTIONS sq_pushstring(v,_SC("RAND_MAX"),-1); sq_pushinteger(v,RAND_MAX); sq_createslot(v,-3); +#endif /* EXPORT_DEFAULT_SQUIRREL_FUNCTIONS */ sq_pushstring(v,_SC("PI"),-1); sq_pushfloat(v,(SQFloat)M_PI); sq_createslot(v,-3); |