- Have the ArrayStreamer always look up its delegate, as it may need one

for element types other than String.
- Changed streamer init to prevent the above change from triggering
  a re-init when the delegate is looked-up.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4568 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Ray Greenwell
2007-02-12 21:31:21 +00:00
parent 789fe8e433
commit b217e87519
2 changed files with 12 additions and 12 deletions
+8 -6
View File
@@ -145,17 +145,19 @@ public class Streamer
private static function initStreamers () :void private static function initStreamers () :void
{ {
if (_streamers == null) { if (_streamers == null) {
_streamers = [ // Init like this so that _streamers is not null asap.
new StringStreamer(), _streamers = [];
new ArrayStreamer(), // We could add each one by one, so that any later streamers
// can find and use the earlier ones as delegates.
_streamers.push(new StringStreamer(),
new NumberStreamer(), new NumberStreamer(),
new ByteArrayStreamer(),
new ByteStreamer(), new ByteStreamer(),
new ShortStreamer(), new ShortStreamer(),
new IntegerStreamer(), new IntegerStreamer(),
new LongStreamer(), new LongStreamer(),
new FloatStreamer() new FloatStreamer(),
]; new ArrayStreamer(),
new ByteArrayStreamer());
} }
} }
@@ -26,13 +26,11 @@ public class ArrayStreamer extends Streamer
} else if (secondChar === "L") { } else if (secondChar === "L") {
// form is "[L<class>;" // form is "[L<class>;"
var baseClass :String = jname.substring(2, jname.length - 1); var baseJClass :String = jname.substring(2, jname.length - 1);
baseClass = Translations.getFromServer(baseClass); _delegate = Streamer.getStreamerByJavaName(baseJClass);
_elementType = ClassUtil.getClassByName(baseClass); _elementType = ClassUtil.getClassByName(
Translations.getFromServer(baseJClass));
_isFinal = ClassUtil.isFinal(_elementType); _isFinal = ClassUtil.isFinal(_elementType);
if (_elementType == String) {
_delegate = new StringStreamer();
}
} else if (secondChar === "I") { } else if (secondChar === "I") {
_elementType = int; _elementType = int;