Commit 074168a3 authored by Uwe Schulzweida's avatar Uwe Schulzweida

Added function expr_run_type_opr().

parent adffb038
......@@ -1740,7 +1740,7 @@ add_new_param(const char *varname, parseParamType *parse_arg, paramType *params,
parse_arg->cnparams++;
}
void
static nodeType *
expr_run_type_com(nodeType *p, parseParamType *parse_arg)
{
const auto init = parse_arg->init;
......@@ -1761,9 +1761,18 @@ expr_run_type_com(nodeType *p, parseParamType *parse_arg)
{
if (cdo_cmpstr(cname, "print")) param_print(vname, params[varID], std::lround(params[parse_arg->tsID].data[0]));
}
return nullptr;
}
nodeType *
static nodeType *
expr_run_type_con(nodeType *p, parseParamType *parse_arg)
{
if (parse_arg->debug) cdoPrint("\tpush\tconst\t%g", p->u.con.value);
return p;
}
static nodeType *
expr_run_type_var(nodeType *p, parseParamType *parse_arg)
{
const auto init = parse_arg->init;
......@@ -1881,7 +1890,7 @@ expr_run_type_var(nodeType *p, parseParamType *parse_arg)
return p;
}
nodeType *
static nodeType *
expr_run_type_fun1c(nodeType *p, parseParamType *parse_arg)
{
const auto init = parse_arg->init;
......@@ -1905,7 +1914,7 @@ expr_run_type_fun1c(nodeType *p, parseParamType *parse_arg)
return rnode;
}
nodeType *
static nodeType *
expr_run_type_fun2c(nodeType *p, parseParamType *parse_arg)
{
const auto init = parse_arg->init;
......@@ -1930,7 +1939,7 @@ expr_run_type_fun2c(nodeType *p, parseParamType *parse_arg)
return rnode;
}
nodeType *
static nodeType *
expr_run_type_fun(nodeType *p, parseParamType *parse_arg)
{
const auto init = parse_arg->init;
......@@ -1971,62 +1980,16 @@ expr_run_type_fun(nodeType *p, parseParamType *parse_arg)
return rnode;
}
/*
nodeType *
expr_run_type_(nodeType *p, parseParamType *parse_arg)
{
const auto init = parse_arg->init;
auto params = parse_arg->params;
}
*/
nodeType *
expr_run(nodeType *p, parseParamType *parse_arg)
static nodeType *
expr_run_type_opr(nodeType *p, parseParamType *parse_arg)
{
pointID = parse_arg->pointID;
zonalID = parse_arg->zonalID;
surfaceID = parse_arg->surfaceID;
const auto init = parse_arg->init;
auto params = parse_arg->params;
nodeType *rnode = nullptr;
if (!p) return rnode;
// if (!init) { exNode(p, parse_arg); return 0; }
nodeType *rnode = nullptr;
switch (p->type)
{
case typeCom:
{
expr_run_type_com(p, parse_arg);
break;
}
case typeCon:
{
if (parse_arg->debug) cdoPrint("\tpush\tconst\t%g", p->u.con.value);
rnode = p;
break;
}
case typeVar:
{
rnode = expr_run_type_var(p, parse_arg);
break;
}
case typeFun1c:
{
rnode = expr_run_type_fun1c(p, parse_arg);
break;
}
case typeFun2c:
{
rnode = expr_run_type_fun2c(p, parse_arg);
break;
}
case typeFun:
{
rnode = expr_run_type_fun(p, parse_arg);
break;
}
case typeOpr:
// clang-format off
switch (p->u.opr.oper)
{
case '=':
......@@ -2097,30 +2060,38 @@ expr_run(nodeType *p, parseParamType *parse_arg)
// else Free(rnode);
break;
}
case UMINUS:
{
rnode = ex_uminus(init, expr_run(p->u.opr.op[0], parse_arg));
break;
}
case NOT:
{
rnode = ex_not(init, expr_run(p->u.opr.op[0], parse_arg));
break;
}
case '?':
{
rnode = ex_ifelse(init, expr_run(p->u.opr.op[0], parse_arg), expr_run(p->u.opr.op[1], parse_arg),
case UMINUS: return ex_uminus(init, expr_run(p->u.opr.op[0], parse_arg));
case NOT: return ex_not(init, expr_run(p->u.opr.op[0], parse_arg));
case '?': return ex_ifelse(init, expr_run(p->u.opr.op[0], parse_arg), expr_run(p->u.opr.op[1], parse_arg),
expr_run(p->u.opr.op[2], parse_arg));
break;
default: return expr(init, p->u.opr.oper, expr_run(p->u.opr.op[0], parse_arg), expr_run(p->u.opr.op[1], parse_arg));
}
default:
// clang-format on
return rnode;
}
nodeType *
expr_run(nodeType *p, parseParamType *parse_arg)
{
pointID = parse_arg->pointID;
zonalID = parse_arg->zonalID;
surfaceID = parse_arg->surfaceID;
if (!p) return nullptr;
// clang-format off
switch (p->type)
{
rnode = expr(init, p->u.opr.oper, expr_run(p->u.opr.op[0], parse_arg), expr_run(p->u.opr.op[1], parse_arg));
break;
}
}
break;
case typeCom: return expr_run_type_com(p, parse_arg);
case typeCon: return expr_run_type_con(p, parse_arg);
case typeVar: return expr_run_type_var(p, parse_arg);
case typeFun1c: return expr_run_type_fun1c(p, parse_arg);
case typeFun2c: return expr_run_type_fun2c(p, parse_arg);
case typeFun: return expr_run_type_fun(p, parse_arg);
case typeOpr: return expr_run_type_opr(p, parse_arg);
}
// clang-format on
return rnode;
return nullptr;
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment