Skip to content

Commit

Permalink
Added more support for mathematical operation for array objects.
Browse files Browse the repository at this point in the history
  • Loading branch information
nthnn committed Sep 28, 2024
1 parent d1b2dd2 commit 355622d
Showing 1 changed file with 63 additions and 10 deletions.
73 changes: 63 additions & 10 deletions src/ast/expression/BinaryExpression.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -259,16 +259,69 @@ DynamicObject BinaryExpression::applyArrayOp(DynamicObject& lValue, DynamicObjec
ZhivoUtil::object2Vector(rValue.getArray())
)
);
else if(this->op == "-") {
}
else if(this->op == "*") {
}
else if(this->op == "/") {
}
else if(this->op == "%") {
}
else if(this->op == "^") {
}
else if(this->op == "-")
return ZhivoUtil::vector2Object(
ZhivoUtil::VectorMath::sub(
ZhivoUtil::object2Vector(lValue.getArray()),
ZhivoUtil::object2Vector(rValue.getArray())
)
);
else if(this->op == "*")
return ZhivoUtil::vector2Object(
ZhivoUtil::VectorMath::mul(
ZhivoUtil::object2Vector(lValue.getArray()),
ZhivoUtil::object2Vector(rValue.getArray())
)
);
else if(this->op == "/")
return ZhivoUtil::vector2Object(
ZhivoUtil::VectorMath::div(
ZhivoUtil::object2Vector(lValue.getArray()),
ZhivoUtil::object2Vector(rValue.getArray())
)
);
else if(this->op == "%")
return ZhivoUtil::vector2Object(
ZhivoUtil::VectorMath::rem(
ZhivoUtil::object2Vector(lValue.getArray()),
ZhivoUtil::object2Vector(rValue.getArray())
)
);
else if(this->op == "|")
return ZhivoUtil::vector2Object(
ZhivoUtil::VectorMath::bitwiseOr(
ZhivoUtil::object2Vector(lValue.getArray()),
ZhivoUtil::object2Vector(rValue.getArray())
)
);
else if(this->op == "&")
return ZhivoUtil::vector2Object(
ZhivoUtil::VectorMath::bitwiseAnd(
ZhivoUtil::object2Vector(lValue.getArray()),
ZhivoUtil::object2Vector(rValue.getArray())
)
);
else if(this->op == "<<")
return ZhivoUtil::vector2Object(
ZhivoUtil::VectorMath::shiftLeft(
ZhivoUtil::object2Vector(lValue.getArray()),
ZhivoUtil::object2Vector(rValue.getArray())
)
);
else if(this->op == ">>")
return ZhivoUtil::vector2Object(
ZhivoUtil::VectorMath::shiftRight(
ZhivoUtil::object2Vector(lValue.getArray()),
ZhivoUtil::object2Vector(rValue.getArray())
)
);
else if(this->op == "^")
return ZhivoUtil::vector2Object(
ZhivoUtil::VectorMath::bitwiseXor(
ZhivoUtil::object2Vector(lValue.getArray()),
ZhivoUtil::object2Vector(rValue.getArray())
)
);

throw ASTNodeException(
std::move(this->address),
Expand Down

0 comments on commit 355622d

Please sign in to comment.