/[svn]/linuxsampler/trunk/src/scriptvm/tree.cpp
ViewVC logotype

Diff of /linuxsampler/trunk/src/scriptvm/tree.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2941 by schoenebeck, Sun Jul 10 14:24:13 2016 UTC revision 2942 by schoenebeck, Wed Jul 13 15:51:06 2016 UTC
# Line 243  bool Statements::isPolyphonic() const { Line 243  bool Statements::isPolyphonic() const {
243      return false;      return false;
244  }  }
245    
246    DynamicVariableCall::DynamicVariableCall(const String& name, ParserContext* ctx, VMDynVar* v)
247        : Variable(ctx, 0, false), dynVar(v), varName(name)
248    {
249    }
250    
251    int DynamicVariableCall::evalInt() {
252        VMIntExpr* expr = dynamic_cast<VMIntExpr*>(dynVar);
253        if (!expr) return 0;
254        return expr->evalInt();
255    }
256    
257    String DynamicVariableCall::evalStr() {
258        VMStringExpr* expr = dynamic_cast<VMStringExpr*>(dynVar);
259        if (!expr) return "";
260        return expr->evalStr();
261    }
262    
263    String DynamicVariableCall::evalCastToStr() {
264        if (dynVar->exprType() == STRING_EXPR) {
265            return evalStr();
266        } else {
267            VMIntExpr* intExpr = dynamic_cast<VMIntExpr*>(dynVar);
268            return intExpr ? ToString(intExpr->evalInt()) : "";
269        }
270    }
271    
272    void DynamicVariableCall::dump(int level) {
273        printIndents(level);
274        printf("Dynamic Variable '%s'\n", varName.c_str());
275    }
276    
277  void FunctionCall::dump(int level) {  void FunctionCall::dump(int level) {
278      printIndents(level);      printIndents(level);
279      printf("FunctionCall '%s' args={\n", functionName.c_str());      printf("FunctionCall '%s' args={\n", functionName.c_str());
# Line 961  void ParserContext::registerBuiltInIntAr Line 992  void ParserContext::registerBuiltInIntAr
992          vartable[it->first] = ref;          vartable[it->first] = ref;
993      }      }
994  }  }
995    
996    void ParserContext::registerBuiltInDynVariables(const std::map<String,VMDynVar*>& vars) {
997        for (std::map<String,VMDynVar*>::const_iterator it = vars.begin();
998             it != vars.end(); ++it)
999        {
1000            DynamicVariableCallRef ref = new DynamicVariableCall(it->first, this, it->second);
1001            vartable[it->first] = ref;
1002        }
1003    }
1004    
1005  } // namespace LinuxSampler  } // namespace LinuxSampler

Legend:
Removed from v.2941  
changed lines
  Added in v.2942

  ViewVC Help
Powered by ViewVC