package org.reldb.rel.v0.values;
import java.io.PrintStream;
import org.reldb.rel.v0.generator.Generator;
import org.reldb.rel.v0.types.Type;
import org.reldb.rel.v0.types.TypeAlpha;
import org.reldb.rel.v0.types.builtin.TypeBoolean;
import org.reldb.rel.v0.vm.Context;
public class ValueBoolean extends ValueAlpha implements Comparable<Value> {
private static final long serialVersionUID = 0;
private boolean internalValue;
public static ValueBoolean select(Generator generator, boolean x) {
return (ValueBoolean)generator.selectValue(TypeBoolean.getInstance(), new ValueBoolean(generator, x));
}
private ValueBoolean(Generator generator, boolean b) {
super(generator, TypeBoolean.getInstance(), new Value[1], 0);
internalValue = b;
}
public Value getComponentValue(int offsetInValue) {
return select(getGenerator(), internalValue);
}
public void setComponentValue(int offsetInValue, Value value) {
internalValue = value.booleanValue();
}
public void toStream(Context context, Type contextualType, PrintStream p, int depth) {
Generator generator = getGenerator();
TypeAlpha type = (TypeAlpha) getType(context.getVirtualMachine().getRelDatabase());
setMST(generator.findMST(type, new ValueBoolean(generator, internalValue)));
String typeSignature = getType(generator.getDatabase()).getSignature();
if (typeSignature.equals(TypeBoolean.Name))
p.print(internalValue);
else
p.print(typeSignature + "(" + internalValue + ")");
}
/** Convert this to a primitive boolean. */
public boolean booleanValue() {
return internalValue;
}
/** Convert this to a primitive long. */
public long longValue() {
return (internalValue) ? 1 : 0;
}
/** Convert this to a primitive double. */
public double doubleValue() {
return (internalValue) ? 1 : 0;
}
/** Convert this to a primitive string. */
public String stringValue() {
return (internalValue) ? "true" : "false";
}
public int hashCode() {
return Boolean.valueOf(internalValue).hashCode();
}
public int compareTo(Value v) {
if (internalValue == v.booleanValue())
return 0;
else if (internalValue)
return 1;
else
return -1;
}
public String toString() {
return "" + internalValue;
}
}