Пример #1
0
        public virtual void Decode(Stream stream)
        {
            FieldMap fieldMap = new FieldMap();

            foreach (int current in this.Definition.Fields.Keys)
            {
                if (current < 0)
                {
                    this.Definition.Fields[current].Decode(stream);
                }
                else
                {
                    if (current == 0)
                    {
                        Bitmap bitmap = (Bitmap)this.Definition.Fields[current];
                        bitmap.Decode(stream);
                        List <int> decodedBitmap = bitmap.GetDecodedBitmap();
                        using (List <int> .Enumerator enumerator2 = decodedBitmap.GetEnumerator())
                        {
                            while (enumerator2.MoveNext())
                            {
                                int current2 = enumerator2.Current;
                                fieldMap.Add(current2);
                                fieldMap.Set(current2);
                            }
                            continue;
                        }
                    }
                    if (current == 1 && this.Definition.Fields[current].GetType() == typeof(Bitmap))
                    {
                        Bitmap bitmap2 = (Bitmap)this.Definition.Fields[current];
                        bitmap2.Decode(stream);
                        List <int> decodedBitmap2 = bitmap2.GetDecodedBitmap();
                        using (List <int> .Enumerator enumerator3 = decodedBitmap2.GetEnumerator())
                        {
                            while (enumerator3.MoveNext())
                            {
                                int current3 = enumerator3.Current;
                                fieldMap.Add(current3);
                                fieldMap.Set(current3);
                            }
                            continue;
                        }
                    }
                    if (fieldMap.Bits.ContainsKey(current))
                    {
                        this.Definition.Fields[current].Decode(stream);
                    }
                }
            }
        }
Пример #2
0
        public object ReadYaml(IParser parser, Type type)
        {
            var result = new FieldMap();

            if (parser.Accept <MappingStart>())
            {
                parser.MoveNext();
                while (!parser.Accept <MappingEnd>())
                {
                    var fieldName = parser.Allow <Scalar>().Value;
                    if (parser.Accept <SequenceStart>())
                    {
                        parser.MoveNext();
                        var fields = new List <string>();

                        while (!parser.Accept <SequenceEnd>())
                        {
                            fields.Add(parser.Allow <Scalar>().Value);
                        }

                        result.Set(fieldName, fields.ToArray());
                        parser.MoveNext();
                    }
                }
                parser.MoveNext();
            }
            return(result);
        }
Пример #3
0
        public object ReadYaml(IParser parser, Type type)
        {
            var result = new FieldMap();

            if (parser.TryConsume <MappingStart>(out _))
            {
                while (parser.TryConsume(out Scalar scalar))
                {
                    var fieldName = scalar.Value;
                    if (parser.TryConsume <SequenceStart>(out _))
                    {
                        var fields = new List <string>();
                        while (!parser.Accept <SequenceEnd>(out _))
                        {
                            if (parser.TryConsume <Scalar>(out scalar))
                            {
                                fields.Add(scalar.Value);
                            }
                        }
                        result.Set(fieldName, fields.ToArray());
                        parser.Require <SequenceEnd>();
                        parser.MoveNext();
                    }
                }
                parser.Require <MappingEnd>();
                parser.MoveNext();
            }
            return(result);
        }