int startArray = baseName.indexOf ('[');
String arrayDcl = Util.sansArrayInfo (baseName.substring (startArray)) + "[]"; // Add an extra set because the first gets stripped off in the loop.
baseName = baseName.substring (0, startArray);
// For interfaces having state, e.g., valuetypes.
SymtabEntry baseEntry = (SymtabEntry)Util.symbolTable.get (baseName.replace ('.', '/'));
if (baseEntry instanceof InterfaceEntry && ((InterfaceEntry)baseEntry).state () != null)
// <f46082.51> Remove -stateful feature; javaStatefulName() obsolete.
//baseName = Util.javaStatefulName ((InterfaceEntry)baseEntry);
baseName = Util.javaName ((InterfaceEntry)baseEntry);
int end1stArray;
while (!modifier.equals (""))
{
int rbracket = modifier.indexOf (']');
String size = modifier.substring (1, rbracket);
end1stArray = arrayDcl.indexOf (']');
arrayDcl = '[' + size + arrayDcl.substring (end1stArray + 2);
stream.println (indent + name + " = new " + baseName + arrayDcl + ';');
loopIndex = "_o" + index++;
stream.println (indent + "for (int " + loopIndex + " = 0;" + loopIndex + " < (" + size + "); ++" + loopIndex + ')');
stream.println (indent + '{');
++closingBrackets;
modifier = modifier.substring (rbracket + 1);
indent = indent + " ";
name = name + '[' + loopIndex + ']';
}
end1stArray = arrayDcl.indexOf (']');
if (td.type () instanceof SequenceEntry || td.type () instanceof PrimitiveEntry || td.type () instanceof StringEntry)
index = ((JavaGenerator)td.type ().generator ()).read (index, indent, name, td.type (), stream);
else if (td.type () instanceof InterfaceEntry && td.type ().fullName ().equals ("org/omg/CORBA/Object"))
stream.println (indent + name + " = istream.read_Object ();");
else
stream.println (indent + name + " = " + Util.helperName (td.type (), true) + ".read (istream);"); // <d61056>
for (int i = 0; i < closingBrackets; ++i)
{
indent = indent.substring (2);
stream.println (indent + '}');
}
}
else
{
SymtabEntry tdtype = Util.typeOf (td.type ());
if (tdtype instanceof SequenceEntry || tdtype instanceof PrimitiveEntry || tdtype instanceof StringEntry)
index = ((JavaGenerator)tdtype.generator ()).read (index, indent, name, tdtype, stream);
else if (tdtype instanceof InterfaceEntry && tdtype.fullName ().equals ("org/omg/CORBA/Object"))
stream.println (indent + name + " = istream.read_Object ();");
else
stream.println (indent + name + " = " + Util.helperName (tdtype, true) + ".read (istream);"); // <d61056>
}
return index;