23 std::set<std::string> vals;
33 param_vals.erase(param_vals.end()-1);
34 param_vals.erase(param_vals.begin());
45 size_t slen = in_expr.size();
47 std::list<std::string> s_exp;
49 while(in_expr[i] !=
'(' && i < slen){
58 while(n_paren > 0 && i < slen){
59 if(in_expr[i] ==
')'){
62 else if(in_expr[i] ==
'('){
67 if(n_paren > 0 || i > slen){
70 s_exp.push_back(in_expr.substr(start_paren, i - start_paren));
76 std::map<std::string, input>& inv,
engineimp* en){
78 return std::shared_ptr<item>();
83 if(invals.name.empty()){
84 std::cout<<
"Variables need a name and a type, "<<
85 "error creating sub-variable for " << base_name << std::endl;
88 if(base_name.empty()){
92 n_prefix=base_name+
"::";
95 curit->setname(n_prefix + invals.name);
97 input& inval = inv[curit->name()];
99 auto native_ptr = std::dynamic_pointer_cast<
native_item>(curit);
100 if(native_ptr.use_count()){
102 native_ptr->
parse(invals.params);
112 if(exp_tok.type ==
"@map"){
114 trim(exp_tok.params);
115 while(!exp_tok.params.empty()){
116 ltoken(tok, exp_tok.params);