# HG changeset patch # User Matti Hamalainen # Date 1366090423 -10800 # Node ID 05eb24a608f08a0dbb81f82d06b2553a5c5ee9fc # Parent 81f50da921e5a15e801d3ff06092575f0dfe7369 Some minor touches to evaluator code. diff -r 81f50da921e5 -r 05eb24a608f0 dmeval.c --- a/dmeval.c Tue Apr 16 07:46:07 2013 +0300 +++ b/dmeval.c Tue Apr 16 08:33:43 2013 +0300 @@ -6,9 +6,27 @@ #define DM_MAX_BUF 512 #define DM_STACK_SIZE 512 -static DMValue int_clip(DMValue v) +static DMValue func_int_clip(DMValue *v) +{ + return (*v < -1.0f) ? -1.0f : ((*v > 1.0f) ? 1.0f : *v); +} + + +static DMValue func_sin(DMValue *v) { - return (v < -1.0f) ? -1.0f : ((v > 1.0f) ? 1.0f : v); + return sin(*v); +} + + +static DMValue func_cos(DMValue *v) +{ + return cos(*v); +} + + +static DMValue func_pow(DMValue *v) +{ + return pow(v[0], v[1]); } @@ -16,9 +34,10 @@ */ static const DMEvalId dm_eval_basic[] = { - { "sin", ID_FUNC, sin, NULL }, - { "cos", ID_FUNC, cos, NULL }, - { "clip", ID_FUNC, int_clip, NULL }, + { "sin", ID_FUNC, 1, func_sin, NULL }, + { "cos", ID_FUNC, 1, func_cos, NULL }, + { "clip", ID_FUNC, 1, func_int_clip, NULL }, + { "pow", ID_FUNC, 2, func_pow, NULL }, }; static const int ndm_eval_basic = sizeof(dm_eval_basic) / sizeof(dm_eval_basic[0]); diff -r 81f50da921e5 -r 05eb24a608f0 dmeval.h --- a/dmeval.h Tue Apr 16 07:46:07 2013 +0300 +++ b/dmeval.h Tue Apr 16 08:33:43 2013 +0300 @@ -44,7 +44,8 @@ { char *name; int type; - DMValue (*func)(DMValue); + int args; + DMValue (*func)(DMValue *); DMValue *var; } DMEvalId;