--- linuxsampler/trunk/src/scriptvm/tree.cpp 2016/07/10 14:05:13 2934 +++ linuxsampler/trunk/src/scriptvm/tree.cpp 2016/07/10 14:24:13 2935 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 Christian Schoenebeck and Andreas Persson + * Copyright (c) 2014 - 2016 Christian Schoenebeck and Andreas Persson * * http://www.linuxsampler.org * @@ -769,6 +769,23 @@ printf(")\n"); } +int BitwiseOr::evalInt() { + IntExpr* pLHS = dynamic_cast(&*lhs); + IntExpr* pRHS = dynamic_cast(&*rhs); + return pLHS->evalInt() | pRHS->evalInt(); +} + +void BitwiseOr::dump(int level) { + printIndents(level); + printf("BitwiseOr(\n"); + lhs->dump(level+1); + printIndents(level); + printf(",\n"); + rhs->dump(level+1); + printIndents(level); + printf(")\n"); +} + int And::evalInt() { IntExpr* pLHS = dynamic_cast(&*lhs); if (!pLHS->evalInt()) return 0; @@ -787,12 +804,37 @@ printf(")\n"); } +int BitwiseAnd::evalInt() { + IntExpr* pLHS = dynamic_cast(&*lhs); + IntExpr* pRHS = dynamic_cast(&*rhs); + return pLHS->evalInt() & pRHS->evalInt(); +} + +void BitwiseAnd::dump(int level) { + printIndents(level); + printf("BitwiseAnd(\n"); + lhs->dump(level+1); + printIndents(level); + printf(",\n"); + rhs->dump(level+1); + printIndents(level); + printf(")\n"); +} + void Not::dump(int level) { printIndents(level); printf("Not(\n"); expr->dump(level+1); printIndents(level); printf(")\n"); +} + +void BitwiseNot::dump(int level) { + printIndents(level); + printf("BitwiseNot(\n"); + expr->dump(level+1); + printIndents(level); + printf(")\n"); } VariableRef ParserContext::variableByName(const String& name) {