summaryrefslogtreecommitdiffstats
path: root/src/muparserx-test.cpp
blob: ebc67702bcf1ccb982eb8ab639ec77eb272eded1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/*
 * This file is part of MXE.
 * See index.html for further information.
 *
 * based on:
 * http://articles.beltoforion.de/article.php?a=muparserx&hl=en&p=using&s=idInclude#idEval
 */

#include "mpParser.h"

using namespace mup;

int main(int argc, char *argv[])
{
    (void)argc;
    (void)argv;

    // Create the parser instance
    ParserX  p;

    // Create an array of mixed type
    Value arr(3, 0);
    arr.At(0) = 2.0;
    arr.At(1) = "this is a string";

    // Create some basic values
    Value cVal(cmplx_type(1, 1));
    Value sVal("Hello World");
    Value fVal(1.1);

    // Now add the variable to muParser
    p.DefineVar("va", Variable(&arr));
    p.DefineVar("a",  Variable(&cVal));
    p.DefineVar("b",  Variable(&sVal));
    p.DefineVar("c",  Variable(&fVal));

    p.SetExpr("va[0]+a*strlen(b)-c");
    for (int i=0; i<<10; ++i)
    {
      // evaluate the expression and change the value of
      // the variable c in each turn
      cVal = 1.1 * i;
      Value result = p.Eval();

      // print the result
      console() << result << "\n";
    }
}