private void ImproveMeaning(BamlField field, TextLineSections[] textList) { string oldMeaning = textList[0].meaningStr; string strValue = null; switch (field.BamlFieldType) { case BamlFieldType.AttributeId: Int16 attrId = (Int16)field.Value; if (attrId < 0) { strValue = KnownProperties.Properties[-attrId].PropertyName; } else if (_attributeIdMap.ContainsKey(attrId)) { strValue = _attributeIdMap[attrId]; } break; case BamlFieldType.TypeId: case BamlFieldType.ConverterTypeId: Int16 typeId = (Int16)field.Value; if (typeId < 0) { strValue = KnownElements.Elements[-typeId].ShortName; } break; case BamlFieldType.AttributeUsage: byte usage = (byte)field.Value; switch (usage) { case 0: strValue = "Default"; break; case 1: strValue = "XmlLang"; break; case 2: strValue = "XmlSpace"; break; case 3: strValue = "RuntimeName"; break; } break; } if (null != strValue) { textList[0].meaningStr = string.Format("{0} <{1}>", oldMeaning, strValue); } }
private object ReadField(BamlField field, out TextLineSections[] textList) { TextLineSections text = new TextLineSections("Err", "Err", "Err"); object val = null; Type t = field.ClrType; textList = null; if (t == typeof(short)) { val = (Int16)ReadIntType(2, field.Name, out text); } else if (t == typeof(int)) { val = (Int32)ReadIntType(4, field.Name, out text); } else if (t == typeof(string)) { val = (string)ReadString(field.Name, out textList); } else if (t == typeof(bool)) { val = (bool)ReadBool(field.Name, out text); } else if (t == typeof(byte)) { val = (byte)ReadIntType(1, field.Name, out text); } else if (t == FormatVersionType) { ReadFormatVersion(out textList); } else if (t == typeof(Int16[])) { val = (Int16[])ReadIntArrayType(field.Name, out textList); } else { throw new InvalidOperationException("Field Type not known"); } if (null == textList) { textList = new TextLineSections[1]; textList[0] = text; } return(val); }
private object ReadField(BamlField field) { object val = null; Type t = field.ClrType; if (t == typeof(short)) { val = _reader.ReadInt16(); } else if (t == typeof(int)) { val = _reader.ReadInt32(); } else if (t == typeof(string)) { val = _reader.ReadString(); } else if (t == typeof(bool)) { val = _reader.ReadBoolean(); } else if (t == typeof(byte)) { val = _reader.ReadByte(); } else if (t == typeof(Int16[])) { short arrayLength = (short)_reader.ReadInt16(); short[] array = new short[arrayLength]; for (int i = 0; i < array.Length; i++) { array[i] = (short)_reader.ReadInt16(); } val = array; } else { throw new InvalidOperationException("Field Type not known"); } return(val); }
private string RecordToString(BamlRecord record) { StringBuilder sb = new StringBuilder(); sb.Append(record.Id.ToString()); for (int i = 0; i < record.Fields.Length; i++) { BamlField currentField = record.Fields[i]; string name = String.Empty; string valString; switch (currentField.BamlFieldType) { case BamlFieldType.TypeId: case BamlFieldType.ConverterTypeId: valString = TypeIdToString((short)currentField.Value); break; case BamlFieldType.AttributeId: valString = AttributeIdToString((short)currentField.Value); break; default: valString = currentField.Value as String; if (valString != null) { valString = ("\"" + valString + "\""); } else { valString = currentField.Value.ToString(); } break; } sb.Append(", " + currentField.Name + "(" + valString + ")"); } return(sb.ToString()); }
static StaticBamlRecords() { BamlRecordType recordId; BamlField[] fields; _records = new BamlRecord[(int)BamlRecordType.LastRecordType]; // DocumentStart = 1 recordId = BamlRecordType.DocumentStart; fields = new BamlField[] { new BamlField(BamlFieldType.LoadAsync), new BamlField(BamlFieldType.MaxAsyncRecords), new BamlField(BamlFieldType.DebugBamlStream), }; _records[(int)recordId] = new BamlRecord(recordId, false, BamlRecordFlags.None, fields); // DocumentEnd = 2 recordId = BamlRecordType.DocumentEnd; fields = new BamlField[] { }; _records[(int)recordId] = new BamlRecord(recordId, false, BamlRecordFlags.End, fields); // ElementStart = 3 recordId = BamlRecordType.ElementStart; fields = new BamlField[] { new BamlField(BamlFieldType.TypeId), new BamlField(BamlFieldType.FlagsByte), }; _records[(int)recordId] = new BamlRecord(recordId, false, BamlRecordFlags.Start, fields); // ElementEnd = 4 recordId = BamlRecordType.ElementEnd; fields = new BamlField[] { }; _records[(int)recordId] = new BamlRecord(recordId, false, BamlRecordFlags.End, fields); // Property = 5 recordId = BamlRecordType.Property; fields = new BamlField[] { new BamlField(BamlFieldType.AttributeId), new BamlField(BamlFieldType.Value), }; _records[(int)recordId] = new BamlRecord(recordId, true, BamlRecordFlags.Table, fields); // PropertyCustom = 6 recordId = BamlRecordType.PropertyCustom; fields = new BamlField[] // same interface as Property { new BamlField(BamlFieldType.AttributeId), new BamlField(BamlFieldType.SerializerTypeId), }; _records[(int)recordId] = new BamlRecord(recordId, true, BamlRecordFlags.Table, fields); // PropertyComplexStart = 7 recordId = BamlRecordType.PropertyComplexStart; fields = new BamlField[] { new BamlField(BamlFieldType.AttributeId), }; _records[(int)recordId] = new BamlRecord(recordId, false, BamlRecordFlags.Start, fields); // PropertyComplexEnd = 8 recordId = BamlRecordType.PropertyComplexEnd; fields = new BamlField[] { }; _records[(int)recordId] = new BamlRecord(recordId, false, BamlRecordFlags.End, fields); // PropertyArrayStart = 9 recordId = BamlRecordType.PropertyArrayStart; fields = new BamlField[] // based on ComplexPropertyStart { new BamlField(BamlFieldType.AttributeId), }; _records[(int)recordId] = new BamlRecord(recordId, false, BamlRecordFlags.Start, fields); // PropertyArrayEnd = 10 recordId = BamlRecordType.PropertyArrayEnd; fields = new BamlField[] { }; _records[(int)recordId] = new BamlRecord(recordId, false, BamlRecordFlags.End, fields); // PropertyIListStart = 11 recordId = BamlRecordType.PropertyIListStart; fields = new BamlField[] // based on ComplexPropertyStart { new BamlField(BamlFieldType.AttributeId), }; _records[(int)recordId] = new BamlRecord(recordId, false, BamlRecordFlags.Start, fields); // PropertyIListEnd = 12 recordId = BamlRecordType.PropertyIListEnd; fields = new BamlField[] { }; _records[(int)recordId] = new BamlRecord(recordId, false, BamlRecordFlags.End, fields); // PropertyIDictionaryStart = 13 recordId = BamlRecordType.PropertyIDictionaryStart; fields = new BamlField[] // based on PropertyComplexStart { new BamlField(BamlFieldType.AttributeId), }; _records[(int)recordId] = new BamlRecord(recordId, false, BamlRecordFlags.Start, fields); // PropertyIDictionaryEnd = 14 recordId = BamlRecordType.PropertyIDictionaryEnd; fields = new BamlField[] { }; _records[(int)recordId] = new BamlRecord(recordId, false, BamlRecordFlags.End, fields); // LiteralContent = 15 recordId = BamlRecordType.LiteralContent; fields = new BamlField[] { new BamlField(BamlFieldType.Value), new BamlField(BamlFieldType.LineNumber), new BamlField(BamlFieldType.LinePosition), }; _records[(int)recordId] = new BamlRecord(recordId, true, BamlRecordFlags.None, fields); // Text =16 recordId = BamlRecordType.Text; fields = new BamlField[] { new BamlField(BamlFieldType.Value), }; _records[(int)recordId] = new BamlRecord(recordId, true, BamlRecordFlags.None, fields); // TextWithConverter = 17 recordId = BamlRecordType.TextWithConverter; fields = new BamlField[] { new BamlField(BamlFieldType.Value), new BamlField(BamlFieldType.ConverterTypeId), }; _records[(int)recordId] = new BamlRecord(recordId, true, BamlRecordFlags.None, fields); // RoutedEvent = 18 UNUSED recordId = BamlRecordType.RoutedEvent; fields = new BamlField[] { new BamlField(BamlFieldType.AttributeId), new BamlField(BamlFieldType.Value), }; _records[(int)recordId] = new BamlRecord(recordId, true, BamlRecordFlags.None, fields); // ClrEvent = 19 NOT IMPLEMENTED in Avalon recordId = BamlRecordType.ClrEvent; fields = new BamlField[] { }; _records[(int)recordId] = new BamlRecord(recordId, false, BamlRecordFlags.None, fields); // XmlnsProperty = 20 recordId = BamlRecordType.XmlnsProperty; fields = new BamlField[] { new BamlField(BamlFieldType.NamespacePrefix), new BamlField(BamlFieldType.Value), new BamlField(BamlFieldType.AssemblyIdList), }; _records[(int)recordId] = new BamlRecord(recordId, true, BamlRecordFlags.Table, fields); // XmlAttribute = 21 NOT IMPLEMENTED in Avalon recordId = BamlRecordType.XmlAttribute; fields = new BamlField[] { }; _records[(int)recordId] = new BamlRecord(recordId, false, BamlRecordFlags.None, fields); // ProcessingInstruction = 22 NOT IMPLEMENTED in Avalon recordId = BamlRecordType.ProcessingInstruction; fields = new BamlField[] { }; _records[(int)recordId] = new BamlRecord(recordId, false, BamlRecordFlags.None, fields); // Comment = 23 NOT IMPLEMENTED in Avalon recordId = BamlRecordType.Comment; fields = new BamlField[] { }; _records[(int)recordId] = new BamlRecord(recordId, false, BamlRecordFlags.None, fields); // DefTag = 24 NOT IMPLEMENTED in Avalon recordId = BamlRecordType.DefTag; fields = new BamlField[] { }; _records[(int)recordId] = new BamlRecord(recordId, false, BamlRecordFlags.None, fields); // DefAttribute = 25 recordId = BamlRecordType.DefAttribute; fields = new BamlField[] { new BamlField(BamlFieldType.Value), new BamlField(BamlFieldType.NameId), }; _records[(int)recordId] = new BamlRecord(recordId, true, BamlRecordFlags.None, fields); // EndAttributes = 26 NOT IMPLEMENTED in Avalon recordId = BamlRecordType.EndAttributes; fields = new BamlField[] { }; _records[(int)recordId] = new BamlRecord(recordId, false, BamlRecordFlags.None, fields); // PIMapping = 27 recordId = BamlRecordType.PIMapping; fields = new BamlField[] { new BamlField(BamlFieldType.XmlNamespace), new BamlField(BamlFieldType.ClrNamespace), new BamlField(BamlFieldType.AssemblyId), }; _records[(int)recordId] = new BamlRecord(recordId, true, BamlRecordFlags.Table, fields); // AssemblyInfo = 28 recordId = BamlRecordType.AssemblyInfo; fields = new BamlField[] { new BamlField(BamlFieldType.AssemblyId), new BamlField(BamlFieldType.AssemblyFullName), }; _records[(int)recordId] = new BamlRecord(recordId, true, BamlRecordFlags.Table, fields); // TypeInfo = 29 recordId = BamlRecordType.TypeInfo; fields = new BamlField[] { new BamlField(BamlFieldType.TypeId), new BamlField(BamlFieldType.AssemblyId), new BamlField(BamlFieldType.TypeFullName), }; _records[(int)recordId] = new BamlRecord(recordId, true, BamlRecordFlags.Table, fields); // TypeSerializerInfo = 30 recordId = BamlRecordType.TypeSerializerInfo; fields = new BamlField[] // based on TypeInfo { new BamlField(BamlFieldType.TypeId), new BamlField(BamlFieldType.AssemblyId), new BamlField(BamlFieldType.TypeFullName), new BamlField(BamlFieldType.SerializerTypeId), }; _records[(int)recordId] = new BamlRecord(recordId, true, BamlRecordFlags.Table, fields); // AttributeInfo = 31 recordId = BamlRecordType.AttributeInfo; fields = new BamlField[] { new BamlField(BamlFieldType.AttributeId, "NewAttributeId"), new BamlField(BamlFieldType.TypeId, "OwnerTypeId"), new BamlField(BamlFieldType.AttributeUsage), new BamlField(BamlFieldType.Value, "NewAttributeValue"), }; _records[(int)recordId] = new BamlRecord(recordId, true, BamlRecordFlags.Table, fields); // StringInfo = 32 recordId = BamlRecordType.StringInfo; fields = new BamlField[] { new BamlField(BamlFieldType.StringId), new BamlField(BamlFieldType.Value), }; _records[(int)recordId] = new BamlRecord(recordId, true, BamlRecordFlags.Table, fields); // PropertyStringReference = 33 UNUSED recordId = BamlRecordType.PropertyStringReference; fields = new BamlField[] // based on PropertyComplexStart { new BamlField(BamlFieldType.AttributeId), new BamlField(BamlFieldType.StringId), }; _records[(int)recordId] = new BamlRecord(recordId, false, BamlRecordFlags.None, fields); // PropertyTypeReference = 34 recordId = BamlRecordType.PropertyTypeReference; fields = new BamlField[] { new BamlField(BamlFieldType.AttributeId), new BamlField(BamlFieldType.TypeId), }; _records[(int)recordId] = new BamlRecord(recordId, false, BamlRecordFlags.None, fields); // PropertyWithExtension = 35 recordId = BamlRecordType.PropertyWithExtension; fields = new BamlField[] { new BamlField(BamlFieldType.AttributeId), new BamlField(BamlFieldType.ExtensionTypeId), new BamlField(BamlFieldType.ValueId), }; _records[(int)recordId] = new BamlRecord(recordId, false, BamlRecordFlags.None, fields); // PropertyWithConverter = 36 recordId = BamlRecordType.PropertyWithConverter; fields = new BamlField[] { new BamlField(BamlFieldType.AttributeId), new BamlField(BamlFieldType.Value), new BamlField(BamlFieldType.ConverterTypeId), }; _records[(int)recordId] = new BamlRecord(recordId, true, BamlRecordFlags.None, fields); // DeferableContentStart = 37 recordId = BamlRecordType.DeferableContentStart; fields = new BamlField[] { new BamlField(BamlFieldType.ContentSize), }; _records[(int)recordId] = new BamlRecord(recordId, false, BamlRecordFlags.Table, fields); // DefAttributeKeyString = 38 recordId = BamlRecordType.DefAttributeKeyString; fields = new BamlField[] { // the "value" is not serialized on this record. new BamlField(BamlFieldType.ValueId), new BamlField(BamlFieldType.ValuePosition), new BamlField(BamlFieldType.Shared), new BamlField(BamlFieldType.SharedSet), }; _records[(int)recordId] = new BamlRecord(recordId, true, BamlRecordFlags.None, fields); // DefAttributeKeyType = 39 recordId = BamlRecordType.DefAttributeKeyType; fields = new BamlField[] { new BamlField(BamlFieldType.TypeId), new BamlField(BamlFieldType.FlagsByte), new BamlField(BamlFieldType.ValuePosition), new BamlField(BamlFieldType.Shared), new BamlField(BamlFieldType.SharedSet), }; _records[(int)recordId] = new BamlRecord(recordId, false, BamlRecordFlags.None, fields); // KeyElementStart = 40 recordId = BamlRecordType.KeyElementStart; fields = new BamlField[] // same as DefAttributeKeyType { new BamlField(BamlFieldType.TypeId), new BamlField(BamlFieldType.ValuePosition), new BamlField(BamlFieldType.FlagsByte), new BamlField(BamlFieldType.Shared), new BamlField(BamlFieldType.SharedSet), }; _records[(int)recordId] = new BamlRecord(recordId, false, BamlRecordFlags.Start, fields); // KeyElementEnd = 41 recordId = BamlRecordType.KeyElementEnd; fields = new BamlField[] // same as ElementEnd { }; _records[(int)recordId] = new BamlRecord(recordId, false, BamlRecordFlags.End, fields); // ConstructorParametersStart= 42 recordId = BamlRecordType.ConstructorParametersStart; fields = new BamlField[] { }; _records[(int)recordId] = new BamlRecord(recordId, false, BamlRecordFlags.Start, fields); // ConstructorParametersEnd = 43 recordId = BamlRecordType.ConstructorParametersEnd; fields = new BamlField[] { }; _records[(int)recordId] = new BamlRecord(recordId, false, BamlRecordFlags.End, fields); // ConstructorParameterType = 44 recordId = BamlRecordType.ConstructorParameterType; fields = new BamlField[] { new BamlField(BamlFieldType.TypeId), }; _records[(int)recordId] = new BamlRecord(recordId, false, BamlRecordFlags.None, fields); // ConnectionId = 45 recordId = BamlRecordType.ConnectionId; fields = new BamlField[] { new BamlField(BamlFieldType.ConnectionId), }; _records[(int)recordId] = new BamlRecord(recordId, false, BamlRecordFlags.None, fields); // ContentProperty = 46 recordId = BamlRecordType.ContentProperty; fields = new BamlField[] { new BamlField(BamlFieldType.AttributeId), }; _records[(int)recordId] = new BamlRecord(recordId, false, BamlRecordFlags.None, fields); // NamedElementStart = 47 recordId = BamlRecordType.NamedElementStart; fields = new BamlField[] { new BamlField(BamlFieldType.TypeId), new BamlField(BamlFieldType.RuntimeName), }; _records[(int)recordId] = new BamlRecord(recordId, true, BamlRecordFlags.Start, fields); // StaticResourceStart = 48 recordId = BamlRecordType.StaticResourceStart; fields = new BamlField[] { new BamlField(BamlFieldType.TypeId), new BamlField(BamlFieldType.FlagsByte), }; _records[(int)recordId] = new BamlRecord(recordId, false, BamlRecordFlags.Start, fields); // StaticResourceEnd = 49 recordId = BamlRecordType.StaticResourceEnd; fields = new BamlField[] { }; _records[(int)recordId] = new BamlRecord(recordId, false, BamlRecordFlags.End, fields); // StaticResourceId = 50 recordId = BamlRecordType.StaticResourceId; fields = new BamlField[] { new BamlField(BamlFieldType.StaticResourceId), }; _records[(int)recordId] = new BamlRecord(recordId, false, BamlRecordFlags.None, fields); // TextWithId = 51 recordId = BamlRecordType.TextWithId; fields = new BamlField[] { new BamlField(BamlFieldType.ValueId), }; _records[(int)recordId] = new BamlRecord(recordId, true, BamlRecordFlags.None, fields); // PresentationOptionsAttribute = 52 recordId = BamlRecordType.PresentationOptionsAttribute; fields = new BamlField[] { new BamlField(BamlFieldType.Value), new BamlField(BamlFieldType.NameId), }; _records[(int)recordId] = new BamlRecord(recordId, true, BamlRecordFlags.None, fields); // LineNumber = 53 recordId = BamlRecordType.LineNumberAndPosition; fields = new BamlField[] { new BamlField(BamlFieldType.LineNumber), new BamlField(BamlFieldType.LinePosition), }; _records[(int)recordId] = new BamlRecord(recordId, false, BamlRecordFlags.Debug, fields); // LinePosition = 54 recordId = BamlRecordType.LinePosition; fields = new BamlField[] { new BamlField(BamlFieldType.LinePosition), }; _records[(int)recordId] = new BamlRecord(recordId, false, BamlRecordFlags.Debug, fields); // PropertyWithStaticResourceId = 55 recordId = BamlRecordType.PropertyWithStaticResourceId; fields = new BamlField[] { new BamlField(BamlFieldType.AttributeId), new BamlField(BamlFieldType.StaticResourceId), }; _records[(int)recordId] = new BamlRecord(recordId, false, BamlRecordFlags.None, fields); // OptimizedStaticResource = 56 recordId = BamlRecordType.OptimizedStaticResource; fields = new BamlField[] { new BamlField(BamlFieldType.FlagsByte), new BamlField(BamlFieldType.ValueId), }; _records[(int)recordId] = new BamlRecord(recordId, false, BamlRecordFlags.None, fields); }