diff options
| author | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2017-10-25 12:10:14 -0300 |
|---|---|---|
| committer | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2017-10-25 12:10:14 -0300 |
| commit | 7bda9de511a5642efb297eae98c6ea7c42b27754 (patch) | |
| tree | dff1aa772b9ac088c5bd07b8d10d944cbff89f96 /base/src/bjc/dicelang/EvaluatorResult.java | |
| parent | f028ea6dc555fc5192a96b00b8e96e90dbf6de55 (diff) | |
Start switch to maven modules
Diffstat (limited to 'base/src/bjc/dicelang/EvaluatorResult.java')
| -rw-r--r-- | base/src/bjc/dicelang/EvaluatorResult.java | 220 |
1 files changed, 220 insertions, 0 deletions
diff --git a/base/src/bjc/dicelang/EvaluatorResult.java b/base/src/bjc/dicelang/EvaluatorResult.java new file mode 100644 index 0000000..3ceee9b --- /dev/null +++ b/base/src/bjc/dicelang/EvaluatorResult.java @@ -0,0 +1,220 @@ +package bjc.dicelang; + +import bjc.dicelang.dice.Die; +import bjc.dicelang.dice.DieExpression; +import bjc.dicelang.dice.DieList; +import bjc.utils.data.ITree; +import bjc.utils.data.Tree; + +/* + * @TODO 10/09/17 Ben Culkin :EvalResultReorg + * Again, split it into seperate classes based off of the type. + */ +/** + * The result from the evaluator. + * + * @author EVE + * + */ +public class EvaluatorResult { + /** + * The type of the result. + * + * @author EVE + * + */ + public static enum Type { + /** + * The type of a failure. + */ + FAILURE, + /** + * The type of an integer. + */ + INT, + /** + * The type of a float. + */ + FLOAT, + /** + * The type of a dice. + */ + DICE, + /** + * The type of a string. + */ + STRING + } + + /** + * The type of the result. + */ + public final EvaluatorResult.Type type; + + // These may or may not have values based + // off of the result type + /** + * The integer value of the result. + */ + public long intVal; + /** + * The float value of the result. + */ + public double floatVal; + /** + * The dice value of the result. + */ + public DieExpression diceVal; + /** + * The string value of the result. + */ + public String stringVal; + + /** + * Original node data + */ + public ITree<Node> origVal; + + /** + * Create a new result. + * + * @param typ + * The type of the result. + */ + public EvaluatorResult(final EvaluatorResult.Type typ) { + type = typ; + } + + /** + * Create a new result. + * + * @param typ + * The type of the result. + * + * @param orig + * The original value of the result. + */ + public EvaluatorResult(final EvaluatorResult.Type typ, final ITree<Node> orig) { + this(typ); + + origVal = orig; + } + + /** + * Create a new result. + * + * @param typ + * The type of the result. + * + * @param orig + * The original value of the result. + */ + public EvaluatorResult(final EvaluatorResult.Type typ, final Node orig) { + this(typ, new Tree<>(orig)); + } + + /** + * Create a new result. + * + * @param typ + * @param orig + */ + public EvaluatorResult(final EvaluatorResult.Type typ, final EvaluatorResult orig) { + this(typ, new Node(Node.Type.RESULT, orig)); + } + + /** + * Create a new result. + * + * @param typ + * @param iVal + */ + public EvaluatorResult(final EvaluatorResult.Type typ, final long iVal) { + this(typ); + + intVal = iVal; + } + + /** + * Create a new result. + * + * @param typ + * @param dVal + */ + public EvaluatorResult(final EvaluatorResult.Type typ, final double dVal) { + this(typ); + + floatVal = dVal; + } + + /** + * Create a new result. + * + * @param typ + * @param dVal + */ + public EvaluatorResult(final EvaluatorResult.Type typ, final DieExpression dVal) { + this(typ); + + diceVal = dVal; + } + + /** + * Create a new result. + * + * @param typ + * @param dVal + */ + public EvaluatorResult(final EvaluatorResult.Type typ, final Die dVal) { + this(typ); + + diceVal = new DieExpression(dVal); + } + + /** + * Create a new result. + * + * @param typ + * @param dVal + */ + public EvaluatorResult(final EvaluatorResult.Type typ, final DieList dVal) { + this(typ); + + diceVal = new DieExpression(dVal); + } + + /** + * Create a new result. + * + * @param typ + * @param strang + */ + public EvaluatorResult(final EvaluatorResult.Type typ, final String strang) { + this(typ); + + stringVal = strang; + } + + @Override + public String toString() { + switch (type) { + case INT: + return type.toString() + "(" + intVal + ")"; + + case FLOAT: + return type.toString() + "(" + floatVal + ")"; + + case DICE: + return type.toString() + "(" + diceVal + ")"; + + case STRING: + return type.toString() + "(" + stringVal + ")"; + + case FAILURE: + return type.toString(); + + default: + return "Unknown result type " + type.toString(); + } + } +} |
