001 // Copyright 2007 Waterken Inc. under the terms of the MIT X license
002 // found at http://www.opensource.org/licenses/mit-license.html
003 package org.waterken.bounce;
004
005 import java.io.Serializable;
006
007 import org.joe_e.Struct;
008 import org.joe_e.array.BooleanArray;
009 import org.joe_e.array.ByteArray;
010 import org.joe_e.array.CharArray;
011 import org.joe_e.array.ConstArray;
012 import org.joe_e.array.DoubleArray;
013 import org.joe_e.array.FloatArray;
014 import org.joe_e.array.IntArray;
015 import org.joe_e.array.LongArray;
016 import org.joe_e.array.ShortArray;
017 import org.ref_send.Record;
018 import org.ref_send.deserializer;
019 import org.ref_send.name;
020 import org.ref_send.promise.Deferred;
021 import org.ref_send.promise.Promise;
022 import org.ref_send.promise.Receiver;
023 import org.ref_send.promise.Vat;
024
025 /**
026 * A record containing a field of each type.
027 */
028 public final class
029 AllTypes extends Struct implements Record, Serializable {
030 static private final long serialVersionUID = 1L;
031
032 /**
033 * boolean
034 */
035 public final BooleanArray b;
036
037 /**
038 * char
039 */
040 public final CharArray c;
041
042 /**
043 * float
044 */
045 public final FloatArray f;
046
047 /**
048 * double
049 */
050 public final DoubleArray d;
051
052 /**
053 * byte
054 */
055 public final ByteArray o;
056
057 /**
058 * short
059 */
060 public final ShortArray s;
061
062 /**
063 * int
064 */
065 public final IntArray i;
066
067 /**
068 * long
069 */
070 public final LongArray l;
071
072 /**
073 * string
074 */
075 public final String t;
076
077 /**
078 * pass-by-reference
079 */
080 public final ConstArray<? extends Receiver<?>> r;
081
082 /**
083 * promise
084 */
085 public final ConstArray<? extends Promise<?>> p;
086
087 /**
088 * known nested type
089 */
090 public final ConstArray<Vat<Deferred<?>>> k;
091
092 /**
093 * unknown type
094 */
095 public final Object a;
096
097 /**
098 * Constructs an instance.
099 * @param b {@link #b}
100 * @param c {@link #c}
101 * @param f {@link #f}
102 * @param d {@link #d}
103 * @param o {@link #o}
104 * @param s {@link #s}
105 * @param i {@link #i}
106 * @param l {@link #l}
107 * @param t {@link #t}
108 * @param r {@link #r}
109 * @param p {@link #p}
110 * @param k {@link #k}
111 * @param a {@link #a}
112 */
113 public @deserializer
114 AllTypes(@name("b") final BooleanArray b,
115 @name("c") final CharArray c,
116 @name("f") final FloatArray f,
117 @name("d") final DoubleArray d,
118 @name("o") final ByteArray o,
119 @name("s") final ShortArray s,
120 @name("i") final IntArray i,
121 @name("l") final LongArray l,
122 @name("t") final String t,
123 @name("r") final ConstArray<? extends Receiver<?>> r,
124 @name("p") final ConstArray<? extends Promise<?>> p,
125 @name("k") final ConstArray<Vat<Deferred<?>>> k,
126 @name("a") final Object a) {
127 this.b = b;
128 this.c = c;
129 this.f = f;
130 this.d = d;
131 this.o = o;
132 this.s = s;
133 this.i = i;
134 this.l = l;
135 this.t = t;
136 this.r = r;
137 this.p = p;
138 this.k = k;
139 this.a = a;
140 }
141 }