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); } } } }
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); }
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); }