diff options
author | michael <michael@3ae390bd-cb1e-0410-b409-cd5a39f66f1f> | 2007-01-21 06:19:40 +0000 |
---|---|---|
committer | michael <michael@3ae390bd-cb1e-0410-b409-cd5a39f66f1f> | 2007-01-21 06:19:40 +0000 |
commit | 4be3c7e95f1f6c9bb4b172fdc1d833e9333f7cf5 (patch) | |
tree | 60827903a3eb045b8406d2a16d365f9cdccb6a1c | |
parent | 0f7cd40f369ec05a2fe8f829fa357217ca5eefb9 (diff) | |
download | lcd4linux-4be3c7e95f1f6c9bb4b172fdc1d833e9333f7cf5.tar.gz |
new function 'decode()'
git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@754 3ae390bd-cb1e-0410-b409-cd5a39f66f1f
Diffstat (limited to '')
-rw-r--r-- | evaluator.c | 2 | ||||
-rw-r--r-- | evaluator.h | 1 | ||||
-rw-r--r-- | plugin_math.c | 23 |
3 files changed, 25 insertions, 1 deletions
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; } |