public string[] GetStructFields() { Parse(); List <string> result = new List <string>(); foreach (KeyValuePair <string, int> kv in FieldIndex) { MessageParser.Field f = Fields[kv.Value]; //System.Diagnostics.Debug.WriteLine($"Field {kv.Key} at {kv.Value} is {f.Type:G}"); if (f.Type == MemberParserType.Struct || f.Type == MemberParserType.Vector) { result.Add(kv.Key); } } return(result.ToArray()); }
private void ParseVector() { int position = 0; for (int i = 0; i < fieldCount; i++) { Memory <byte> buffer = Data.Slice(position); MessageParser.Field field = new MessageParser.Field(); field.Offset = position; field.Type = MemberParserType.Struct; MessageStruct ms = new MessageStruct(buffer, Offset + position, Parser, this); field.Value = ms; field.Length = ms.Length; position += ms.Length; Fields.Add(field); } Length = position; }