changeset 663:05eb24a608f0

Some minor touches to evaluator code.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 16 Apr 2013 08:33:43 +0300
parents 81f50da921e5
children 57fc2ec4efdc
files dmeval.c dmeval.h
diffstat 2 files changed, 26 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- 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]);
--- 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;