public override void GenerateFieldFileRead(StringBuilder b, int pad, FieldDescriptor f, string bitBufferName, string fieldname, FieldDescriptor[] fields) { b.Append(' ', pad); b.AppendLine("//still checking variablearrays"); b.Append(' ', pad); b.AppendLine(fieldname + " = new List<" + f.SubType.Name + ">();"); var ser = fields.First((w) => w.Offset == f.Offset + f.VariableOffset); var tfield = "temp" + pad + "_" + fieldname; int subfieldsize = 1; if (f.SubType is StructureTypeDescriptor) { subfieldsize = (f.SubType as StructureTypeDescriptor).Fields.Last().Offset; } else { subfieldsize = (f.SubType as BasicTypeDescriptor).TypeSize; } b.Append(' ', pad); b.AppendLine("for(int i = 0; i < (int)(" + ser.Name + ".Field1 / "+subfieldsize.ToString()+"); i++)"); b.Append(' ', pad); b.AppendLine("{"); b.Append(' ', pad); b.AppendLine(bitBufferName + ".Position = " + ser.Name + ".Field0 + 16 + (" + subfieldsize.ToString()+ "*i) ;"); b.Append(' ', pad + 4); b.AppendLine(f.SubType.Name + " " + tfield + ";"); f.SubType.GenerateFieldFileRead(b, pad + 4, f, bitBufferName, tfield, fields); b.Append(' ', pad + 4); b.AppendLine("_" + fieldname + ".Add(" + tfield + ");"); b.Append(' ', pad); b.AppendLine("}"); }
public override void GenerateFieldFileRead(StringBuilder b, int pad, FieldDescriptor f, string bitBufferName, string fieldname, FieldDescriptor[] fields) { b.Append(' ', pad); b.AppendLine("//still checking variablearrays"); b.Append(' ', pad); b.AppendLine(fieldname + " = new List<byte>();"); var ser = fields.First((w) => w.Offset == f.Offset + f.VariableOffset); var tfield = "temp" + pad + "_" + fieldname; int subfieldsize = 1; b.Append(' ', pad); b.AppendLine("for(int i = 0; i < (int)(" + ser.GetFieldName() + ".Field1 / " + subfieldsize.ToString() + "); i++)"); b.Append(' ', pad); b.AppendLine("{"); b.Append(' ', pad + 4); b.AppendLine(bitBufferName + ".Position = " + ser.GetFieldName() + ".Field0 + 16 + (" + subfieldsize.ToString() + "*i) ;"); b.Append(' ', pad + 4); b.AppendLine("byte " + tfield + ";"); b.Append(' ', pad + 4); b.AppendLine(tfield + " = (byte)stream.ReadByte();"); b.Append(' ', pad + 4); b.AppendLine("_" + fieldname + ".Add(" + tfield + ");"); b.Append(' ', pad); b.AppendLine("}"); }
public override void GenerateFieldFileRead(StringBuilder b, int pad, FieldDescriptor f, string bitBufferName, string fieldname, FieldDescriptor[] fields) { b.Append(' ', pad); b.AppendLine("//still checking cstrings"); var ser = fields.First((w) => w.Offset == f.Offset + f.VariableOffset); var tfield = "temp" + pad + "_" + fieldname; int subfieldsize = 1; if (f.SubType is StructureTypeDescriptor) { subfieldsize = (f.SubType as StructureTypeDescriptor).Fields.Last().Offset; } else { subfieldsize = (f.SubType as BasicTypeDescriptor).TypeSize; } b.Append(' ', pad); b.AppendLine("stream.Position = "+ser.Name + ".Field0 + 16;"); b.Append(' ', pad); b.AppendLine(fieldname + " = stream.ReadString((uint)" + ser.Name + ".Field1);"); }