From 3d4765569e009b6bb02add493d5abfe727709ec5 Mon Sep 17 00:00:00 2001 From: reinelt <> Date: Mon, 12 Jan 2004 03:51:01 +0000 Subject: [lcd4linux @ 2004-01-12 03:51:01 by reinelt] evaluating the 'Variables' section in the config file --- evaluator.c | 20 +++++++++++++++----- evaluator.h | 7 ++++++- expr.c | 20 +++++++++++++------- layout.c | 6 +++++- lcd4linux.c | 6 +++++- 5 files changed, 44 insertions(+), 15 deletions(-) diff --git a/evaluator.c b/evaluator.c index 2b84dd6..ce0623d 100644 --- a/evaluator.c +++ b/evaluator.c @@ -1,4 +1,4 @@ -/* $Id: evaluator.c,v 1.7 2004/01/07 10:15:41 reinelt Exp $ +/* $Id: evaluator.c,v 1.8 2004/01/12 03:51:01 reinelt Exp $ * * expression evaluation * @@ -10,6 +10,9 @@ * FIXME: GPL or not GPL???? * * $Log: evaluator.c,v $ + * Revision 1.8 2004/01/12 03:51:01 reinelt + * evaluating the 'Variables' section in the config file + * * Revision 1.7 2004/01/07 10:15:41 reinelt * small glitch in evaluator fixed * made config table sorted and access with bsearch(), @@ -77,6 +80,13 @@ /* * exported functions: * + * void DelResult (RESULT *result) + * sets a result to none + * frees a probably allocated memory + * + * int SetVariable (char *name, RESULT *value) + * adds a generic variable to the evaluator + * * int AddNumericVariable(char *name, double value) * adds a numerical variable to the evaluator * @@ -168,7 +178,7 @@ char* ErrMsg[] = { -static void DelResult (RESULT *result) +void DelResult (RESULT *result) { result->type=0; result->number=0.0; @@ -348,7 +358,7 @@ static int GetVariable (char *name, RESULT *value) } -static int SetVariable (char *name, RESULT *value) +int SetVariable (char *name, RESULT *value) { VARIABLE *V; @@ -819,7 +829,7 @@ int Eval (char* expression, RESULT *result) int i, err; if ((err=setjmp(jb))) { - error ("Error: %s in expression <%s>", ErrMsg[err], expression); + error ("Evaluator: %s in expression <%s>", ErrMsg[err], expression); return -1; } @@ -830,7 +840,7 @@ int Eval (char* expression, RESULT *result) // sanity check: two functions with the same name? for (i=1; i = '%s'",yn, expression, result); - if (isdigit(*result)) { + if (isdigit(*string)) { double max, min; - *val = atof(result); + *val = atof(string); sprintf(yn, "Max_y%d", index); max = atof(cfg_get(NULL, yn, "100")); sprintf(yn, "Min_y%d", index); @@ -82,6 +85,9 @@ int Expr(int index, char result[EXPR_TXT_LEN], double *val) if (max != min) *val = (*val - min)/(max - min); } + + DelResult (&result); + return 0; } diff --git a/layout.c b/layout.c index 13d05f9..5ea84ca 100644 --- a/layout.c +++ b/layout.c @@ -1,4 +1,4 @@ -/* $Id: layout.c,v 1.3 2004/01/11 18:26:02 reinelt Exp $ +/* $Id: layout.c,v 1.4 2004/01/12 03:51:01 reinelt Exp $ * * new layouter framework * @@ -23,6 +23,9 @@ * * * $Log: layout.c,v $ + * Revision 1.4 2004/01/12 03:51:01 reinelt + * evaluating the 'Variables' section in the config file + * * Revision 1.3 2004/01/11 18:26:02 reinelt * further widget and layout processing * @@ -54,6 +57,7 @@ #include "debug.h" #include "cfg.h" +#include "widget.h" #include "layout.h" diff --git a/lcd4linux.c b/lcd4linux.c index 255d94a..a69e546 100644 --- a/lcd4linux.c +++ b/lcd4linux.c @@ -1,4 +1,4 @@ -/* $Id: lcd4linux.c,v 1.58 2004/01/10 20:22:33 reinelt Exp $ +/* $Id: lcd4linux.c,v 1.59 2004/01/12 03:51:01 reinelt Exp $ * * LCD4Linux * @@ -22,6 +22,9 @@ * * * $Log: lcd4linux.c,v $ + * Revision 1.59 2004/01/12 03:51:01 reinelt + * evaluating the 'Variables' section in the config file + * * Revision 1.58 2004/01/10 20:22:33 reinelt * added new function 'cfg_list()' (not finished yet) * added layout.c (will replace processor.c someday) @@ -564,6 +567,7 @@ int main (int argc, char *argv[]) } else if (result.type==R_STRING) { printf ("'%s'\n", R2S(&result)); } + DelResult (&result); } printf("eval> "); } -- cgit v1.2.3