m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
path: root/src/pl/edu/mimuw/cloudatlas/model/Value.java
diff options
context:
space:
mode:
authorMarcin Chrzanowski <marcin.j.chrzanowski@gmail.com>2019-10-21 21:45:57 +0200
committerMarcin Chrzanowski <marcin.j.chrzanowski@gmail.com>2019-10-21 21:45:57 +0200
commita0c4b252e5867219871b5c6df10219d916e29bff (patch)
tree08cc82ec20db1c68ec6002d965209c5168fad7a9 /src/pl/edu/mimuw/cloudatlas/model/Value.java
parent38847dbb8809a8214a911b120b6b11ee4d7f1399 (diff)
Tabs to spaces
Diffstat (limited to 'src/pl/edu/mimuw/cloudatlas/model/Value.java')
-rw-r--r--src/pl/edu/mimuw/cloudatlas/model/Value.java416
1 files changed, 208 insertions, 208 deletions
diff --git a/src/pl/edu/mimuw/cloudatlas/model/Value.java b/src/pl/edu/mimuw/cloudatlas/model/Value.java
index 236f307..02b4bd4 100644
--- a/src/pl/edu/mimuw/cloudatlas/model/Value.java
+++ b/src/pl/edu/mimuw/cloudatlas/model/Value.java
@@ -30,212 +30,212 @@ import pl.edu.mimuw.cloudatlas.model.Value;
* A single value stored as an attribute.
*/
public abstract class Value {
- /**
- * An operation that may be performed on values.
- */
- public enum Operation {
- EQUAL, COMPARE, ADD, SUBTRACT, MULTIPLY, DIVIDE, MODULO, AND, OR, REG_EXPR, NEGATE, VALUE_SIZE,
- }
-
- /**
- * Gets the type of this value.
- *
- * @return type of this value
- */
- public abstract Type getType();
-
- /**
- * Indicates whether this value is null. Distinct from a <code>Value</code> reference that is <code>null</code>
- * itself.
- *
- * @return true if and only if this value is null
- */
- public abstract boolean isNull();
-
- protected final void sameTypesOrThrow(Value value, Operation operation) {
- if(!getType().isCompatible(value.getType()))
- throw new IncompatibleTypesException(getType(), value.getType(), operation);
- }
-
- /**
- * Checks whether this value is equal to the specified one (operator ==).
- *
- * @param value the right side of the operator
- * @return a <code>ValueBoolean</code> representing true if and only if both values are equal
- * @throws UnsupportedValueOperationException if this operation is unsupported for these values
- */
- public Value isEqual(Value value) {
- throw new UnsupportedValueOperationException(getType(), Operation.EQUAL);
- }
-
- /**
- * Indicates whether this object is equal to another one.
- *
- * @param object the object to check
- * @return whether two objects are equal
- */
- @Override
- public boolean equals(Object object) {
- if(!(object instanceof Value))
- return false;
- return ((ValueBoolean)isEqual((Value)object)).getValue();
- }
-
- /**
- * Checks whether this value is lower than the specified one (operator <=).
- *
- * @param value the right side of the operator
- * @return a <code>ValueBoolean</code> representing true if and only if this value is lower than the provided one
- * @throws UnsupportedValueOperationException if this operator is unsupported for these values (for example
- * incompatible or non-numeric types)
- */
- public Value isLowerThan(Value value) {
- throw new UnsupportedValueOperationException(getType(), Operation.COMPARE);
- }
-
- /**
- * Returns a new value created by adding argument to this value (operator +).
- *
- * @param value the right side of the operator
- * @return a sum of two values
- * @throws UnsupportedValueOperationException if this operator is unsupported for these values (for example
- * incompatible or non-numeric types)
- */
- public Value addValue(Value value) {
- // name clash with add from List interface
- throw new UnsupportedValueOperationException(getType(), Operation.ADD);
- }
-
- /**
- * Returns a new value created by subtracting argument from this value (operator -).
- *
- * @param value the right side of the operator
- * @return a difference of two values
- * @throws UnsupportedValueOperationException if this operator is unsupported for these values (for example
- * incompatible or non-numeric types)
- */
- public Value subtract(Value value) {
- throw new UnsupportedValueOperationException(getType(), Operation.SUBTRACT);
- }
-
- /**
- * Returns a new value created by multiplying this value by an argument (operator *).
- *
- * @param value the right side of the operator
- * @return a product of two values
- * @throws UnsupportedValueOperationException if this operator is unsupported for these values (for example
- * incompatible or non-numeric types)
- */
- public Value multiply(Value value) {
- throw new UnsupportedValueOperationException(getType(), Operation.MULTIPLY);
- }
-
- /**
- * Returns a new value created by dividing this value by an argument (operator /).
- *
- * @param value the right side of the operator
- * @return a quotient of two values
- * @throws UnsupportedValueOperationException if this operator is unsupported for these values (for example
- * incompatible or non-numeric types)
- */
- public Value divide(Value value) {
- throw new UnsupportedValueOperationException(getType(), Operation.DIVIDE);
- }
-
- /**
- * Returns the remainder of division of this value by an argument (operator %).
- *
- * @param value the right side of the operator
- * @return a remainder
- * @throws UnsupportedValueOperationException if this operator is unsupported for these values (for example
- * incompatible or non-numeric types)
- */
- public Value modulo(Value value) {
- throw new UnsupportedValueOperationException(getType(), Operation.MODULO);
- }
-
- /**
- * Returns the result of a logical AND (operator &&).
- *
- * @param value the right side of the operator
- * @return a conjunction of the two values
- * @throws UnsupportedValueOperationException if this operator is unsupported for these values (for example
- * non-boolean types)
- */
- public Value and(Value value) {
- throw new UnsupportedValueOperationException(getType(), Operation.AND);
- }
-
- /**
- * Returns the result of a logical OR (operator ||).
- *
- * @param value the right side of the operator
- * @return an alternative of two values
- * @throws UnsupportedValueOperationException if this operator is unsupported for these values (for example
- * non-boolean types)
- */
- public Value or(Value value) {
- throw new UnsupportedValueOperationException(getType(), Operation.OR);
- }
-
- /**
- * Returns a result of trying to match to this value with a regular expression specified as an argument.
- *
- * @param value the regular expression to match against
- * @return a <code>ValueBoolean</code> representing true if and only if this value matches provided regular
- * expression
- * @throws UnsupportedValueOperationException if this operator is unsupported for these values
- */
- public Value regExpr(Value value) {
- throw new UnsupportedValueOperationException(getType(), Operation.REG_EXPR);
- }
-
- /**
- * Returns the negation (numeric or logical) of this value. This may refer to operator - or !, depending on type.
- *
- * @return a value that is the negation of this value
- * @throws UnsupportedValueOperationException if this operator is unsupported for this value
- */
- public Value negate() { // !, -
- throw new UnsupportedValueOperationException(getType(), Operation.NEGATE);
- }
-
- /**
- * Returns the size of this value. Semantics depend on type.
- *
- * @return a size of this value
- * @throws UnsupportedValueOperationException if this operation is unsupported for this value
- */
- public Value valueSize() {
- // name clash with size from List interface
- throw new UnsupportedValueOperationException(getType(), Operation.VALUE_SIZE);
- }
-
- /**
- * Returns this value converted to another type.
- *
- * @param to a desired type
- * @return this value converted to the <code>type</code>
- * @throws UnsupportedConversionException if a requested conversion is unsupported
- */
- public abstract Value convertTo(Type to);
-
- /**
- * Returns a textual representation of this value. This method uses conversion to <code>ValueString</code>.
- *
- * @return a textual representation of this value
- * @see #convertTo(Type)
- */
- @Override
- public String toString() {
- return ((ValueString)convertTo(TypePrimitive.STRING)).getValue();
- }
-
- /**
- * Returns a default value (such as uninitialized variable). This may be <code>0</code> for integer types,
- * <code>false</code> for boolean, <code>null</code> for complex types etc.
- *
- * @return a default value of this type
- */
- public abstract Value getDefaultValue();
+ /**
+ * An operation that may be performed on values.
+ */
+ public enum Operation {
+ EQUAL, COMPARE, ADD, SUBTRACT, MULTIPLY, DIVIDE, MODULO, AND, OR, REG_EXPR, NEGATE, VALUE_SIZE,
+ }
+
+ /**
+ * Gets the type of this value.
+ *
+ * @return type of this value
+ */
+ public abstract Type getType();
+
+ /**
+ * Indicates whether this value is null. Distinct from a <code>Value</code> reference that is <code>null</code>
+ * itself.
+ *
+ * @return true if and only if this value is null
+ */
+ public abstract boolean isNull();
+
+ protected final void sameTypesOrThrow(Value value, Operation operation) {
+ if(!getType().isCompatible(value.getType()))
+ throw new IncompatibleTypesException(getType(), value.getType(), operation);
+ }
+
+ /**
+ * Checks whether this value is equal to the specified one (operator ==).
+ *
+ * @param value the right side of the operator
+ * @return a <code>ValueBoolean</code> representing true if and only if both values are equal
+ * @throws UnsupportedValueOperationException if this operation is unsupported for these values
+ */
+ public Value isEqual(Value value) {
+ throw new UnsupportedValueOperationException(getType(), Operation.EQUAL);
+ }
+
+ /**
+ * Indicates whether this object is equal to another one.
+ *
+ * @param object the object to check
+ * @return whether two objects are equal
+ */
+ @Override
+ public boolean equals(Object object) {
+ if(!(object instanceof Value))
+ return false;
+ return ((ValueBoolean)isEqual((Value)object)).getValue();
+ }
+
+ /**
+ * Checks whether this value is lower than the specified one (operator <=).
+ *
+ * @param value the right side of the operator
+ * @return a <code>ValueBoolean</code> representing true if and only if this value is lower than the provided one
+ * @throws UnsupportedValueOperationException if this operator is unsupported for these values (for example
+ * incompatible or non-numeric types)
+ */
+ public Value isLowerThan(Value value) {
+ throw new UnsupportedValueOperationException(getType(), Operation.COMPARE);
+ }
+
+ /**
+ * Returns a new value created by adding argument to this value (operator +).
+ *
+ * @param value the right side of the operator
+ * @return a sum of two values
+ * @throws UnsupportedValueOperationException if this operator is unsupported for these values (for example
+ * incompatible or non-numeric types)
+ */
+ public Value addValue(Value value) {
+ // name clash with add from List interface
+ throw new UnsupportedValueOperationException(getType(), Operation.ADD);
+ }
+
+ /**
+ * Returns a new value created by subtracting argument from this value (operator -).
+ *
+ * @param value the right side of the operator
+ * @return a difference of two values
+ * @throws UnsupportedValueOperationException if this operator is unsupported for these values (for example
+ * incompatible or non-numeric types)
+ */
+ public Value subtract(Value value) {
+ throw new UnsupportedValueOperationException(getType(), Operation.SUBTRACT);
+ }
+
+ /**
+ * Returns a new value created by multiplying this value by an argument (operator *).
+ *
+ * @param value the right side of the operator
+ * @return a product of two values
+ * @throws UnsupportedValueOperationException if this operator is unsupported for these values (for example
+ * incompatible or non-numeric types)
+ */
+ public Value multiply(Value value) {
+ throw new UnsupportedValueOperationException(getType(), Operation.MULTIPLY);
+ }
+
+ /**
+ * Returns a new value created by dividing this value by an argument (operator /).
+ *
+ * @param value the right side of the operator
+ * @return a quotient of two values
+ * @throws UnsupportedValueOperationException if this operator is unsupported for these values (for example
+ * incompatible or non-numeric types)
+ */
+ public Value divide(Value value) {
+ throw new UnsupportedValueOperationException(getType(), Operation.DIVIDE);
+ }
+
+ /**
+ * Returns the remainder of division of this value by an argument (operator %).
+ *
+ * @param value the right side of the operator
+ * @return a remainder
+ * @throws UnsupportedValueOperationException if this operator is unsupported for these values (for example
+ * incompatible or non-numeric types)
+ */
+ public Value modulo(Value value) {
+ throw new UnsupportedValueOperationException(getType(), Operation.MODULO);
+ }
+
+ /**
+ * Returns the result of a logical AND (operator &&).
+ *
+ * @param value the right side of the operator
+ * @return a conjunction of the two values
+ * @throws UnsupportedValueOperationException if this operator is unsupported for these values (for example
+ * non-boolean types)
+ */
+ public Value and(Value value) {
+ throw new UnsupportedValueOperationException(getType(), Operation.AND);
+ }
+
+ /**
+ * Returns the result of a logical OR (operator ||).
+ *
+ * @param value the right side of the operator
+ * @return an alternative of two values
+ * @throws UnsupportedValueOperationException if this operator is unsupported for these values (for example
+ * non-boolean types)
+ */
+ public Value or(Value value) {
+ throw new UnsupportedValueOperationException(getType(), Operation.OR);
+ }
+
+ /**
+ * Returns a result of trying to match to this value with a regular expression specified as an argument.
+ *
+ * @param value the regular expression to match against
+ * @return a <code>ValueBoolean</code> representing true if and only if this value matches provided regular
+ * expression
+ * @throws UnsupportedValueOperationException if this operator is unsupported for these values
+ */
+ public Value regExpr(Value value) {
+ throw new UnsupportedValueOperationException(getType(), Operation.REG_EXPR);
+ }
+
+ /**
+ * Returns the negation (numeric or logical) of this value. This may refer to operator - or !, depending on type.
+ *
+ * @return a value that is the negation of this value
+ * @throws UnsupportedValueOperationException if this operator is unsupported for this value
+ */
+ public Value negate() { // !, -
+ throw new UnsupportedValueOperationException(getType(), Operation.NEGATE);
+ }
+
+ /**
+ * Returns the size of this value. Semantics depend on type.
+ *
+ * @return a size of this value
+ * @throws UnsupportedValueOperationException if this operation is unsupported for this value
+ */
+ public Value valueSize() {
+ // name clash with size from List interface
+ throw new UnsupportedValueOperationException(getType(), Operation.VALUE_SIZE);
+ }
+
+ /**
+ * Returns this value converted to another type.
+ *
+ * @param to a desired type
+ * @return this value converted to the <code>type</code>
+ * @throws UnsupportedConversionException if a requested conversion is unsupported
+ */
+ public abstract Value convertTo(Type to);
+
+ /**
+ * Returns a textual representation of this value. This method uses conversion to <code>ValueString</code>.
+ *
+ * @return a textual representation of this value
+ * @see #convertTo(Type)
+ */
+ @Override
+ public String toString() {
+ return ((ValueString)convertTo(TypePrimitive.STRING)).getValue();
+ }
+
+ /**
+ * Returns a default value (such as uninitialized variable). This may be <code>0</code> for integer types,
+ * <code>false</code> for boolean, <code>null</code> for complex types etc.
+ *
+ * @return a default value of this type
+ */
+ public abstract Value getDefaultValue();
}