Пример #1
0
        //
        internal static void WriteMedatataItems(System.IO.Stream stream, IEnumerable <Readers.IMetadataItem> metadata)
        {
            var items = metadata.ToArray();

            DumpHelper.Write(items.Length, stream); // count
            for (int i = 0; i < items.Length; i++)
            {
                WriteMedatataItem(stream, items[i]);
            }
        }
Пример #2
0
 static void WriteMetadataItemValue(System.IO.Stream stream, Readers.IMetadataItem item)
 {
     DumpHelper.Write(item.Value is int? 1 : 0, stream);
     if (item.Value is int)
     {
         DumpHelper.Write((int)item.Value, stream);
     }
     else
     {
         DumpHelper.Write((item.Value ?? string.Empty).ToString(), stream);
     }
 }
Пример #3
0
 static void WriteMedatataItem(System.IO.Stream stream, Readers.IMetadataItem item)
 {
     DumpHelper.Write(item.HasChildren ? 1 : 0, stream); // hasChildren
     DumpHelper.Write(item.Name, stream);                // name
     if (!item.HasChildren)
     {
         WriteMetadataItemValue(stream, item);
     }
     else
     {
         WriteMedatataItems(stream, item.Children);
     }
 }
Пример #4
0
 //
 public static void Write(System.IO.Stream stream, Context.IOperandReaderContext context)
 {
     // type
     stream.Write(new byte[] { (byte)context.Type }, 0, 1);
     // name
     byte[] nameBytes = null;
     DumpHelper.GetBytes(ref nameBytes, context.Name);
     DumpHelper.Write(nameBytes.Length, stream);
     // IL
     byte[] ILBytes = context.GetIL();
     DumpHelper.Write(ILBytes.Length, stream);
     // context data
     stream.Write(nameBytes, 0, nameBytes.Length);
     stream.Write(ILBytes, 0, ILBytes.Length);
     // meta
     DumpHelper.WriteMedatataItems(stream, context.GetMetadata());
     // body
     context.Dump(stream);
 }