{
this.symbolTable = symbolTable;
this.v = v;
TypedefEntry member = ((InterfaceState) v.state ().elementAt (0)).entry;
SymtabEntry mType = member.type ();
// if it's primitive type, generate a java class
if (mType instanceof PrimitiveEntry)
{
openStream ();
if (stream == null)
return;
writeHeading ();
writeBody ();
writeClosing ();
closeStream ();
}
else
{
// If a constructed type is nested in the value box,
// value v struct s {...};
// the bindings for the nested type must be handled here
Enumeration e = v.contained ().elements ();
while (e.hasMoreElements ())
{
SymtabEntry contained = (SymtabEntry) e.nextElement ();
// in case of value box w/ nested enum, ex: value v enum e {e0, e1,...};
// the SymtabEntry for the enum and labels are contained in the vector.
// Must check the type to ignore the SymtabEntry for labels.
if (contained.type () != null)
contained.type ().generate (symbolTable, stream);
}
}
generateHelper ();
generateHolder ();
} // generate