diff options
| author | Joshua Rahm <joshua.rahm@colorado.edu> | 2015-01-27 18:40:32 -0700 |
|---|---|---|
| committer | Joshua Rahm <joshua.rahm@colorado.edu> | 2015-01-27 18:40:32 -0700 |
| commit | 5f3fb9afece2125cbeba79d61a8d88460b7878d7 (patch) | |
| tree | b0e1e60bae9927a9449561bf7fe9431a54d12be9 /project/QBarInterpreter/src/com/modulus/qbar/lang/IfThenElseFunction.java | |
| download | LegacyQBar-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.java | 41 |
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; + } + } + +} |