Example #1
0
 private void WriteMap(Encoder.WriteItem itemWriter, object value, IWriter encoder)
 {
     EnsureMapObject(value);
     encoder.WriteMapStart();
     encoder.SetItemCount(GetMapSize(value));
     WriteMapValues(value, itemWriter, encoder);
     encoder.WriteMapEnd();
 }
Example #2
0
 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);
     }
 }
Example #3
0
        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();
        }
Example #4
0
        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));
        }
Example #5
0
 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);
         }
     }
 }
Example #6
0
        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);
        }