aboutsummaryrefslogtreecommitdiff
path: root/project/QBarInterpreter/src/com/modulus/qbar/lang/IfThenElseFunction.java
diff options
context:
space:
mode:
authorJoshua Rahm <joshua.rahm@colorado.edu>2015-01-27 18:40:32 -0700
committerJoshua Rahm <joshua.rahm@colorado.edu>2015-01-27 18:40:32 -0700
commit5f3fb9afece2125cbeba79d61a8d88460b7878d7 (patch)
treeb0e1e60bae9927a9449561bf7fe9431a54d12be9 /project/QBarInterpreter/src/com/modulus/qbar/lang/IfThenElseFunction.java
downloadLegacyQBar-5f3fb9afece2125cbeba79d61a8d88460b7878d7.tar.gz
LegacyQBar-5f3fb9afece2125cbeba79d61a8d88460b7878d7.tar.bz2
LegacyQBar-5f3fb9afece2125cbeba79d61a8d88460b7878d7.zip
initial commit
Diffstat (limited to 'project/QBarInterpreter/src/com/modulus/qbar/lang/IfThenElseFunction.java')
-rw-r--r--project/QBarInterpreter/src/com/modulus/qbar/lang/IfThenElseFunction.java41
1 files changed, 41 insertions, 0 deletions
diff --git a/project/QBarInterpreter/src/com/modulus/qbar/lang/IfThenElseFunction.java b/project/QBarInterpreter/src/com/modulus/qbar/lang/IfThenElseFunction.java
new file mode 100644
index 0000000..8efbc5e
--- /dev/null
+++ b/project/QBarInterpreter/src/com/modulus/qbar/lang/IfThenElseFunction.java
@@ -0,0 +1,41 @@
+package com.modulus.qbar.lang;
+
+import com.modulus.common.collections.Stack;
+import com.modulus.qbar.core.QBFunction;
+import com.modulus.qbar.core.QBObject;
+import com.modulus.qbar.core.interpreter.QBInterpreter;
+import com.modulus.qbar.core.parser.ByteOperation;
+import com.modulus.qbar.core.primitive.QBPrimitive;
+
+public class IfThenElseFunction extends QBFunction {
+ /**
+ *
+ */
+ private static final long serialVersionUID = 6694512700264765780L;
+ private ByteOperation[] ifPart, thenPart, elsePart;
+
+
+ public IfThenElseFunction(ByteOperation[] ifPart,
+ ByteOperation[] thenPart, ByteOperation[] elsePart) {
+ super(0);
+ this.ifPart = ifPart;
+ this.thenPart = thenPart;
+ this.elsePart = elsePart;
+ }
+
+
+ @Override
+ public QBObject execute(QBObject[] args) {
+ Stack<QBObject> stack = QBInterpreter.instance().getStack();
+ this.exec(ifPart, stack);
+
+ if(returnedValue instanceof QBPrimitive && ((QBPrimitive) returnedValue).intValue() != 0){
+ this.exec(thenPart, stack);
+ return returnedValue;
+ } else{
+ this.exec(elsePart, stack);
+ return returnedValue;
+ }
+ }
+
+}