package org.reldb.rel.v0.values;
import java.io.PrintStream;
import org.reldb.rel.exceptions.ExceptionSemantic;
import org.reldb.rel.v0.generator.Generator;
import org.reldb.rel.v0.types.*;
import org.reldb.rel.v0.vm.Context;
public abstract class ValueAbstract implements Value {
private static final long serialVersionUID = 1L;
private transient Generator generator;
public ValueAbstract(Generator generator) {
this.generator = generator;
}
public void loaded(Generator generator) {
this.generator = generator;
}
protected Generator getGenerator() {
return generator;
}
/** Output this Value to a PrintStream. */
public void toStream(Context context, Type type, PrintStream p, int depth) {
if (depth > 0)
p.print(toParsableString(type));
else
p.print(toString(type));
}
public boolean equals(Object v) {
return (compareTo((Value)v) == 0);
}
public String toParsableString(Type type) {
return toString();
}
public String toString(Type type) {
return toString();
}
/** Obtain a serializable clone of this value. */
public Value getSerializableClone() {
return this;
}
/** Convert this to a primitive boolean. */
public boolean booleanValue() {
throw new ExceptionSemantic("RS0265: Cannot convert " + getTypeName() + " to BOOLEAN.");
}
/** Convert this to a primitive long. */
public long longValue() {
throw new ExceptionSemantic("RS0266: Cannot convert " + getTypeName() + " to INTEGER.");
}
/** Convert this to a primitive double. */
public double doubleValue() {
throw new ExceptionSemantic("RS0267: Cannot convert " + getTypeName() + " to RATIONAL.");
}
/** Convert this to a primitive string. */
public String stringValue() {
throw new ExceptionSemantic("RS0268: Cannot convert " + getTypeName() + " to CHARACTER.");
}
}