It seems that Array streaming now works.

git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3924 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Ray Greenwell
2006-03-08 03:28:09 +00:00
parent 3163825b29
commit b82b079469
9 changed files with 202 additions and 114 deletions
+19 -9
View File
@@ -10,6 +10,7 @@ import com.threerings.io.streamers.ArrayStreamer;
import com.threerings.io.streamers.ByteArrayStreamer;
import com.threerings.io.streamers.IntStreamer;
import com.threerings.io.streamers.NumberStreamer;
import com.threerings.io.streamers.ObjectArrayStreamer;
import com.threerings.io.streamers.StringStreamer;
public class Streamer
@@ -28,6 +29,13 @@ public class Streamer
}
}
if (obj is TypedArray) {
var streamer :Streamer = new ArrayStreamer(
(obj as TypedArray).getJavaType());
_streamers.push(streamer);
return streamer;
}
return undefined;
}
@@ -35,6 +43,10 @@ public class Streamer
{
initStreamers();
if (clazz === TypedArray) {
throw new Error("Broken, TODO");
}
for each (var streamer :Streamer in _streamers) {
if (streamer._target == clazz) {
return streamer;
@@ -48,16 +60,18 @@ public class Streamer
{
initStreamers();
if (jname.charAt(0) === "[") {
// Oh ghod
}
for each (var streamer :Streamer in _streamers) {
if (streamer.getJavaClassName() === jname) {
return streamer;
}
}
if (jname.charAt(0) === "[") {
var streamer :Streamer = new ArrayStreamer(jname);
_streamers.push(streamer);
return streamer;
}
return null;
}
@@ -122,7 +136,7 @@ public class Streamer
new StringStreamer(),
new IntStreamer(),
new NumberStreamer(),
new ArrayStreamer(),
new ObjectArrayStreamer(),
new ByteArrayStreamer()
];
}
@@ -132,10 +146,6 @@ public class Streamer
protected var _jname :String;
/** If our target class is an array, this is a reference to a streamer
* that can stream our array elements, otherwise it is null. */
protected var _delegate :Streamer;
/** Just a list of our standard streamers. */
protected static var _streamers :Array;
}