aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--evaluator.c20
-rw-r--r--evaluator.h7
-rw-r--r--expr.c20
-rw-r--r--layout.c6
-rw-r--r--lcd4linux.c6
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<nFunction; i++) {
if (strcmp(Function[i].name, Function[i-1].name)==0) {
- error ("internal error: Function '%s' defined twice!", Function[i].name);
+ error ("Evaluator: internal error: Function '%s' defined twice!", Function[i].name);
}
}
}
diff --git a/evaluator.h b/evaluator.h
index f15ee32..9ace102 100644
--- a/evaluator.h
+++ b/evaluator.h
@@ -1,4 +1,4 @@
-/* $Id: evaluator.h,v 1.2 2003/10/11 06:01:53 reinelt Exp $
+/* $Id: evaluator.h,v 1.3 2004/01/12 03:51:01 reinelt Exp $
*
* expression evaluation
*
@@ -10,6 +10,9 @@
* FIXME: GPL or not GPL????
*
* $Log: evaluator.h,v $
+ * Revision 1.3 2004/01/12 03:51:01 reinelt
+ * evaluating the 'Variables' section in the config file
+ *
* Revision 1.2 2003/10/11 06:01:53 reinelt
*
* renamed expression.{c,h} to client.{c,h}
@@ -84,6 +87,8 @@ typedef struct {
#define E_EMPTY 8 /* Empty expression */
+void DelResult (RESULT *result);
+int SetVariable (char *name, RESULT *value);
int AddNumericVariable (char *name, double value);
int AddStringVariable (char *name, char *value);
int AddFunction (char *name, int args, void (*func)());
diff --git a/expr.c b/expr.c
index 2464a99..1b1c5b7 100644
--- a/expr.c
+++ b/expr.c
@@ -1,4 +1,4 @@
-/* $Id: expr.c,v 1.2 2004/01/09 04:16:06 reinelt Exp $
+/* $Id: expr.c,v 1.3 2004/01/12 03:51:01 reinelt Exp $
*
* expr ('y*') functions
* This is only a workaround to make the Evaluator usable until
@@ -24,6 +24,9 @@
*
*
* $Log: expr.c,v $
+ * Revision 1.3 2004/01/12 03:51:01 reinelt
+ * evaluating the 'Variables' section in the config file
+ *
* Revision 1.2 2004/01/09 04:16:06 reinelt
* added 'section' argument to cfg_get(), but NULLed it on all calls by now.
*
@@ -45,9 +48,9 @@
#include "cfg.h"
-int Expr(int index, char result[EXPR_TXT_LEN], double *val)
+int Expr(int index, char string[EXPR_TXT_LEN], double *val)
{
- RESULT Result = {0, 0.0, NULL};
+ RESULT result = {0, 0.0, NULL};
static int errs[EXPRS+1];
char *expression;
char yn[4];
@@ -67,14 +70,14 @@ int Expr(int index, char result[EXPR_TXT_LEN], double *val)
return -1;
}
- Eval(expression, &Result);
- strcpy(result, R2S(&Result));
+ Eval(expression, &result);
+ strcpy(string, R2S(&result));
debug("%s: <%s> = '%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> ");
}