From 4be3c7e95f1f6c9bb4b172fdc1d833e9333f7cf5 Mon Sep 17 00:00:00 2001 From: michael Date: Sun, 21 Jan 2007 06:19:40 +0000 Subject: new function 'decode()' git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@754 3ae390bd-cb1e-0410-b409-cd5a39f66f1f --- evaluator.c | 2 +- evaluator.h | 1 + plugin_math.c | 23 +++++++++++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/evaluator.c b/evaluator.c index e2b103f..aaebee9 100644 --- a/evaluator.c +++ b/evaluator.c @@ -274,7 +274,7 @@ RESULT *SetResult(RESULT ** result, const int type, const void *value) } -static RESULT *CopyResult(RESULT ** result, RESULT * value) +RESULT *CopyResult(RESULT ** result, RESULT * value) { if (*result == NULL) { if ((*result = NewResult()) == NULL) diff --git a/evaluator.h b/evaluator.h index 6b4cbca..412aeec 100644 --- a/evaluator.h +++ b/evaluator.h @@ -51,6 +51,7 @@ void DeleteFunctions(void); void DelResult(RESULT * result); RESULT *SetResult(RESULT ** result, const int type, const void *value); +RESULT *CopyResult(RESULT ** result, RESULT * value); double R2N(RESULT * result); char *R2S(RESULT * result); diff --git a/plugin_math.c b/plugin_math.c index b74f188..c3748e1 100644 --- a/plugin_math.c +++ b/plugin_math.c @@ -114,6 +114,26 @@ static void my_ceil(RESULT * result, RESULT * arg) SetResult(&result, R_NUMBER, &value); } +static void my_decode(RESULT * result, int argc, RESULT * argv[]) +{ + int index; + + if (argc < 2) { + error("decode(): wrong number of parameters"); + SetResult(&result, R_STRING, ""); + return; + } + + index = R2N(argv[0]); + + if (index < 0 || index >= argc-1) { + SetResult(&result, R_STRING, ""); + return; + } + + CopyResult (&result, argv[index+1]); +} + int plugin_init_math(void) { @@ -138,6 +158,9 @@ int plugin_init_math(void) AddFunction("floor", 1, my_floor); AddFunction("ceil", 1, my_ceil); + /* decode */ + AddFunction("decode", -1, my_decode); + return 0; } -- cgit v1.2.3