/*
* 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-2010.
*/
package x10.core.concurrent;
import java.io.IOException;
import x10.core.Any;
import x10.rtt.NamedType;
import x10.rtt.RuntimeType;
import x10.rtt.Type;
import x10.serialization.X10JavaDeserializer;
import x10.serialization.X10JavaSerializable;
import x10.serialization.X10JavaSerializer;
public final class AtomicReference<T> extends java.util.concurrent.atomic.AtomicReference<T> implements Any, X10JavaSerializable {
private static final long serialVersionUID = 1L;
// constructor just for allocation
public AtomicReference(java.lang.System[] $dummy) {
super();
}
public final AtomicReference x10$util$concurrent$AtomicReference$$init$S(Type<T> T) {
this.T = T;
return this;
}
public AtomicReference(Type<T> T) {
super();
this.T = T;
}
public final AtomicReference x10$util$concurrent$AtomicReference$$init$S(Type<T> T, T initialValue) {
set(initialValue);
this.T = T;
return this;
}
public AtomicReference(Type<T> T, T initialValue) {
super(initialValue);
this.T = T;
}
//
// Runtime type information
//
public static final RuntimeType<AtomicReference> $RTT = NamedType.<AtomicReference> make(
"x10.util.concurrent.AtomicReference",
AtomicReference.class,
RuntimeType.INVARIANTS(1)
);
public RuntimeType<AtomicReference> $getRTT() {return $RTT;}
public Type<?> $getParam(int i) { return i == 0 ? T : null; }
public Type<T> T;
public void $_serialize(X10JavaSerializer serializer) throws IOException {
serializer.write(this.T);
serializer.write(get());
}
public static X10JavaSerializable $_deserializer(X10JavaDeserializer deserializer) throws IOException {
AtomicReference ar = new AtomicReference((System[])null);
deserializer.record_reference(ar);
return $_deserialize_body(ar, deserializer);
}
public static X10JavaSerializable $_deserialize_body(AtomicReference ar, X10JavaDeserializer deserializer) throws IOException {
Type T = (Type) deserializer.readRef();
ar.T = T;
Object value = deserializer.readRef();
ar.set(value);
return ar;
}
}