-/* $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
*
* 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(),
/*
* 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
*
-static void DelResult (RESULT *result)
+void DelResult (RESULT *result)
{
result->type=0;
result->number=0.0;
}
-static int SetVariable (char *name, RESULT *value)
+int SetVariable (char *name, RESULT *value)
{
VARIABLE *V;
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;
}
// 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);
}
}
}
-/* $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
*
* 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}
#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)());
-/* $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
*
*
* $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.
*
#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];
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);
if (max != min)
*val = (*val - min)/(max - min);
}
+
+ DelResult (&result);
+
return 0;
}
-/* $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
*
*
*
* $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
*
#include "debug.h"
#include "cfg.h"
+#include "widget.h"
#include "layout.h"
-/* $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
*
*
*
* $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)
} else if (result.type==R_STRING) {
printf ("'%s'\n", R2S(&result));
}
+ DelResult (&result);
}
printf("eval> ");
}