35 |
return ToString(evalInt()); |
return ToString(evalInt()); |
36 |
} |
} |
37 |
|
|
38 |
|
/*String IntArrayExpr::evalCastToStr() { |
39 |
|
String s = "{"; |
40 |
|
for (int i = 0; i < arraySize(); ++i) { |
41 |
|
int val = evalIntElement(i); |
42 |
|
if (i) s += ","; |
43 |
|
s += ToString(val); |
44 |
|
} |
45 |
|
s += "}"; |
46 |
|
return s; |
47 |
|
}*/ |
48 |
|
|
49 |
int IntLiteral::evalInt() { |
int IntLiteral::evalInt() { |
50 |
return value; |
return value; |
51 |
} |
} |
324 |
return intExpr->evalInt(); |
return intExpr->evalInt(); |
325 |
} |
} |
326 |
|
|
327 |
|
VMIntArrayExpr* FunctionCall::asIntArray() const { |
328 |
|
VMFnResult* result = const_cast<FunctionCall*>(this)->execVMFn(); |
329 |
|
if (!result) return 0; |
330 |
|
VMIntArrayExpr* intArrExpr = dynamic_cast<VMIntArrayExpr*>(result->resultValue()); |
331 |
|
return intArrExpr; |
332 |
|
} |
333 |
|
|
334 |
String FunctionCall::evalStr() { |
String FunctionCall::evalStr() { |
335 |
VMFnResult* result = execVMFn(); |
VMFnResult* result = execVMFn(); |
336 |
if (!result) return ""; |
if (!result) return ""; |
377 |
|
|
378 |
void IntVariable::assign(Expression* expr) { |
void IntVariable::assign(Expression* expr) { |
379 |
IntExpr* intExpr = dynamic_cast<IntExpr*>(expr); |
IntExpr* intExpr = dynamic_cast<IntExpr*>(expr); |
380 |
if (intExpr) |
if (intExpr) { |
381 |
if (polyphonic) |
if (polyphonic) |
382 |
context->execContext->polyphonicIntMemory[memPos] = intExpr->evalInt(); |
context->execContext->polyphonicIntMemory[memPos] = intExpr->evalInt(); |
383 |
else |
else |
384 |
(*context->globalIntMemory)[memPos] = intExpr->evalInt(); |
(*context->globalIntMemory)[memPos] = intExpr->evalInt(); |
385 |
|
} |
386 |
} |
} |
387 |
|
|
388 |
int IntVariable::evalInt() { |
int IntVariable::evalInt() { |
463 |
memset(&values[0], 0, size * sizeof(int)); |
memset(&values[0], 0, size * sizeof(int)); |
464 |
} |
} |
465 |
|
|
466 |
IntArrayVariable::IntArrayVariable(ParserContext* ctx, int size, ArgsRef values) |
IntArrayVariable::IntArrayVariable(ParserContext* ctx, int size, ArgsRef values, bool _bConst) |
467 |
: Variable(ctx, 0, false) |
: Variable(ctx, 0, _bConst) |
468 |
{ |
{ |
469 |
this->values.resize(size); |
this->values.resize(size); |
470 |
for (int i = 0; i < values->argsCount(); ++i) { |
for (int i = 0; i < values->argsCount(); ++i) { |
901 |
printf(")\n"); |
printf(")\n"); |
902 |
} |
} |
903 |
|
|
904 |
|
StatementsRef ParserContext::userFunctionByName(const String& name) { |
905 |
|
if (!userFnTable.count(name)) { |
906 |
|
return StatementsRef(); |
907 |
|
} |
908 |
|
return userFnTable.find(name)->second; |
909 |
|
} |
910 |
|
|
911 |
VariableRef ParserContext::variableByName(const String& name) { |
VariableRef ParserContext::variableByName(const String& name) { |
912 |
if (!vartable.count(name)) { |
if (!vartable.count(name)) { |
913 |
return VariableRef(); |
return VariableRef(); |