- added Awk::setGlobal & Awk::getGlobal
- fixed a bug in parsing getline
This commit is contained in:
@ -37,7 +37,7 @@ static int run_awk (QSE::StdAwk& awk)
|
||||
"function pa (x) {\n"
|
||||
" reset ret;\n"
|
||||
" for (i in x) { print i, \"=>\", x[i]; ret += x[i]; }\n"
|
||||
" return ret;\n"
|
||||
" return ret + DAMN++;\n"
|
||||
"}\n"
|
||||
"function pb (x) {\n"
|
||||
" reset ret;\n"
|
||||
@ -46,6 +46,10 @@ static int run_awk (QSE::StdAwk& awk)
|
||||
"}"
|
||||
));
|
||||
|
||||
// add a global variable 'DAMN'
|
||||
int damn = awk.addGlobal (QSE_T("DAMN"));
|
||||
if (damn <= -1) return -1;
|
||||
|
||||
// parse the script and perform no deparsing
|
||||
run = awk.parse (in, QSE::StdAwk::Source::NONE);
|
||||
if (run == QSE_NULL) return -1;
|
||||
@ -59,6 +63,11 @@ static int run_awk (QSE::StdAwk& awk)
|
||||
run, QSE::StdAwk::Value::IntIndex(i), i*20) <= -1) return -1;
|
||||
}
|
||||
|
||||
// set 'DAMN' to 100000
|
||||
QSE::StdAwk::Value damnv (run);
|
||||
if (damnv.setInt (100000) <= -1) return -1;
|
||||
if (awk.setGlobal (damn, damnv) <= -1) return -1;
|
||||
|
||||
QSE::StdAwk::Value r;
|
||||
|
||||
// call the 'pa' function
|
||||
@ -69,6 +78,12 @@ static int run_awk (QSE::StdAwk& awk)
|
||||
qse_printf (QSE_T(" (real) [%Lf]\n"), (long double)r.toReal());
|
||||
qse_printf (QSE_T(" (str) [%s]\n"), r.toStr(QSE_NULL));
|
||||
|
||||
// get the value of 'DAMN'
|
||||
if (awk.getGlobal (damn, damnv) <= -1) return -1;
|
||||
qse_printf (QSE_T("DAMN: (int) [%lld]\n"), (long long)damnv.toInt());
|
||||
qse_printf (QSE_T(" (real) [%Lf]\n"), (long double)damnv.toReal());
|
||||
qse_printf (QSE_T(" (str) [%s]\n"), damnv.toStr(QSE_NULL));
|
||||
|
||||
// call the 'pb' function
|
||||
if (awk.call (QSE_T("pb"), &r, arg, QSE_COUNTOF(arg)) <= -1) return -1;
|
||||
|
||||
|
Reference in New Issue
Block a user