예제 #1
0
        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());
        }
예제 #2
0
        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;
        }