Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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());
        }
Beispiel #5
0
        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);
        }