/*
* This file is part of the X10 project (http://x10-lang.org).
*
* This file is licensed to You under the Eclipse Public License (EPL);
* You may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.opensource.org/licenses/eclipse-1.0.php
*
* (C) Copyright IBM Corporation 2006-2011.
*/
package x10.core;
import java.io.IOException;
import x10.rtt.RuntimeType;
import x10.rtt.Type;
import x10.rtt.Types;
import x10.serialization.X10JavaDeserializer;
import x10.serialization.X10JavaSerializable;
import x10.serialization.X10JavaSerializer;
/**
* Represents a boxed Boolean value. Boxed representation is used when casting
* a Boolean value to type Any, parameter type T or superinterfaces such
* as Comparable<Boolean>.
*/
final public class Boolean extends Struct implements java.lang.Comparable<Boolean>
{
private static final long serialVersionUID = 1L;
public static final RuntimeType<?> $RTT = Types.BOOLEAN;
public RuntimeType<?> $getRTT() {return $RTT;}
public Type<?> $getParam(int i) {return null;}
public static final Boolean TRUE = new Boolean(true);
public static final Boolean FALSE = new Boolean(false);
final boolean $value;
private Boolean(boolean value) {
this.$value = value;
}
public static Boolean $box(boolean value) {
return value ? TRUE : FALSE;
}
public static boolean $unbox(Boolean obj) {
return obj.$value;
}
public static boolean $unbox(Object obj) {
if (obj instanceof Boolean) return ((Boolean)obj).$value;
else return ((java.lang.Boolean)obj).booleanValue();
}
// make $box/$unbox idempotent
public static Boolean $box(Boolean obj) {
return obj;
}
public static Boolean $box(Object obj) {
if (obj instanceof Boolean) return (Boolean) obj;
else return $box(((java.lang.Boolean)obj).booleanValue());
}
public static boolean $unbox(boolean value) {
return value;
}
public boolean _struct_equals$O(Object obj) {
if (obj instanceof Boolean && ((Boolean) obj).$value == $value)
return true;
return false;
}
@Override
public boolean equals(Object value) {
if (value instanceof Boolean) {
return ((Boolean) value).$value == $value;
} else if (value instanceof java.lang.Boolean) { // Boolean literals come here as Boolean autoboxed values
return ((java.lang.Boolean) value).booleanValue() == $value;
}
return false;
}
@Override
public int hashCode() {
return $value ? 1231 : 1237;
}
@Override
public java.lang.String toString() {
return java.lang.Boolean.toString($value);
}
// implements Comparable<Boolean>
public int compareTo(Boolean o) {
return (o.$value == $value ? 0 : ($value ? 1 : -1));
}
public void $_serialize(X10JavaSerializer $serializer) throws IOException {
$serializer.write($value);
}
public static X10JavaSerializable $_deserializer(X10JavaDeserializer $deserializer) throws IOException {
return $_deserialize_body(null, $deserializer);
}
public static X10JavaSerializable $_deserialize_body(Boolean $_obj, X10JavaDeserializer $deserializer) throws IOException {
boolean value = $deserializer.readBoolean();
$_obj = new Boolean(value);
$deserializer.record_reference($_obj);
return $_obj;
}
}