private void WriteMap(Encoder.WriteItem itemWriter, object value, IWriter encoder) { EnsureMapObject(value); encoder.WriteMapStart(); encoder.SetItemCount(GetMapSize(value)); WriteMapValues(value, itemWriter, encoder); encoder.WriteMapEnd(); }
private void WriteMapValues(object map, Encoder.WriteItem valueWriter, IWriter encoder) { foreach (DictionaryEntry entry in ((IDictionary)map)) { encoder.StartItem(); encoder.WriteString(entry.Key.ToString()); valueWriter(entry.Value, encoder); } }
private void WriteArray(Encoder.WriteItem itemWriter, object @object, IWriter encoder) { var array = EnsureArrayObject(@object); long l = GetArrayLength(array); encoder.WriteArrayStart(); encoder.SetItemCount(l); WriteArrayValues(array, itemWriter, encoder); encoder.WriteArrayEnd(); }
public Encoder.WriteItem Resolve(UnionSchema unionSchema) { var branchSchemas = unionSchema.Schemas.ToArray(); var branchWriters = new Encoder.WriteItem[branchSchemas.Length]; int branchIndex = 0; foreach (var branch in branchSchemas) { branchWriters[branchIndex++] = Resolver.ResolveWriter(branch); } return((v, e) => WriteUnion(unionSchema, branchSchemas, branchWriters, v, e)); }
private void WriteArrayValues(object array, Encoder.WriteItem valueWriter, IWriter encoder) { if (array == null) { valueWriter(null, encoder); } else { var arrayInstance = (System.Array)array; for (int i = 0; i < arrayInstance.Length; i++) { encoder.StartItem(); valueWriter(arrayInstance.GetValue(i), encoder); } } }
public Encoder.WriteItem Resolve(RecordSchema recordSchema) { var writeSteps = new WriteStep[recordSchema.Fields.Count]; Encoder.WriteItem recordResolver = (v, e) => WriteRecordFields(v, writeSteps, e, recordSchema); int index = 0; foreach (Field field in recordSchema) { var record = new WriteStep { WriteField = Resolver.ResolveWriter(field.Schema), Field = field }; writeSteps[index++] = record; } return(recordResolver); }