Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Framework / System / Windows / Markup / BamlVersionHeader.cs / 1 / BamlVersionHeader.cs
/****************************************************************************\ * * File: BamlVersionHeader.cs * * Copyright (C) 2005 by Microsoft Corporation. All rights reserved. * \***************************************************************************/ using System; using System.IO; using System.Globalization; using System.Diagnostics; using MS.Internal.IO.Packaging.CompoundFile; #if PBTCOMPILER namespace MS.Internal.Markup #else namespace System.Windows.Markup #endif { internal class BamlVersionHeader { // The current BAML record version. This is incremented whenever // the BAML format changes // Baml Format Breaking Changes should change this. internal static readonly VersionPair BamlWriterVersion; static BamlVersionHeader() { // Initialize the Version number this way so that it can be // seen in the Lutz Reflector. BamlWriterVersion = new VersionPair(0, 96); } public BamlVersionHeader() { _bamlVersion = new FormatVersion("MSBAML", BamlWriterVersion); } public FormatVersion BamlVersion { get { return _bamlVersion; } #if !PBTCOMPILER set { _bamlVersion = value; } #endif } // This is used by Async loading to measure if the whole record is present static public int BinarySerializationSize { get { // Unicode "MSBAML" = 12 // + 4 bytes length header = 12 + 4 = 16 // + 3*(16bit MinorVer + 16bit MajorVer) = 16+(3*(2+2))= 28 // For product stability the size of this data structure // shouldn't change anyway. return 28; } } #if !PBTCOMPILER internal void LoadVersion(BinaryReader bamlBinaryReader) { #if DEBUG long posStart = bamlBinaryReader.BaseStream.Position; #endif BamlVersion = FormatVersion.LoadFromStream(bamlBinaryReader.BaseStream); #if DEBUG long posEnd = bamlBinaryReader.BaseStream.Position; Debug.Assert((posEnd-posStart) == BamlVersionHeader.BinarySerializationSize, "Incorrect Baml Version Header Size"); #endif // We're assuming that only major versions are significant for compatibility, // so if we have a major version in the file that is higher than that in // the code, we can't read it. if (BamlVersion.ReaderVersion != BamlWriterVersion) { throw new InvalidOperationException(SR.Get(SRID.ParserBamlVersion, (BamlVersion.ReaderVersion.Major.ToString(CultureInfo.CurrentCulture) + "." + BamlVersion.ReaderVersion.Minor.ToString(CultureInfo.CurrentCulture)), (BamlWriterVersion.Major.ToString(CultureInfo.CurrentCulture) + "." + BamlWriterVersion.Minor.ToString(CultureInfo.CurrentCulture)))); } } #endif internal void WriteVersion(BinaryWriter bamlBinaryWriter) { #if DEBUG long posStart = bamlBinaryWriter.BaseStream.Position; #endif BamlVersion.SaveToStream(bamlBinaryWriter.BaseStream); #if DEBUG long posEnd = bamlBinaryWriter.BaseStream.Position; if(-1 == posStart) { long length = bamlBinaryWriter.BaseStream.Length; Debug.Assert(length == BamlVersionHeader.BinarySerializationSize, "Incorrect Baml Version Header Size"); } else { Debug.Assert((posEnd-posStart) == BamlVersionHeader.BinarySerializationSize, "Incorrect Baml Version Header Size"); } #endif } FormatVersion _bamlVersion; } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. /****************************************************************************\ * * File: BamlVersionHeader.cs * * Copyright (C) 2005 by Microsoft Corporation. All rights reserved. * \***************************************************************************/ using System; using System.IO; using System.Globalization; using System.Diagnostics; using MS.Internal.IO.Packaging.CompoundFile; #if PBTCOMPILER namespace MS.Internal.Markup #else namespace System.Windows.Markup #endif { internal class BamlVersionHeader { // The current BAML record version. This is incremented whenever // the BAML format changes // Baml Format Breaking Changes should change this. internal static readonly VersionPair BamlWriterVersion; static BamlVersionHeader() { // Initialize the Version number this way so that it can be // seen in the Lutz Reflector. BamlWriterVersion = new VersionPair(0, 96); } public BamlVersionHeader() { _bamlVersion = new FormatVersion("MSBAML", BamlWriterVersion); } public FormatVersion BamlVersion { get { return _bamlVersion; } #if !PBTCOMPILER set { _bamlVersion = value; } #endif } // This is used by Async loading to measure if the whole record is present static public int BinarySerializationSize { get { // Unicode "MSBAML" = 12 // + 4 bytes length header = 12 + 4 = 16 // + 3*(16bit MinorVer + 16bit MajorVer) = 16+(3*(2+2))= 28 // For product stability the size of this data structure // shouldn't change anyway. return 28; } } #if !PBTCOMPILER internal void LoadVersion(BinaryReader bamlBinaryReader) { #if DEBUG long posStart = bamlBinaryReader.BaseStream.Position; #endif BamlVersion = FormatVersion.LoadFromStream(bamlBinaryReader.BaseStream); #if DEBUG long posEnd = bamlBinaryReader.BaseStream.Position; Debug.Assert((posEnd-posStart) == BamlVersionHeader.BinarySerializationSize, "Incorrect Baml Version Header Size"); #endif // We're assuming that only major versions are significant for compatibility, // so if we have a major version in the file that is higher than that in // the code, we can't read it. if (BamlVersion.ReaderVersion != BamlWriterVersion) { throw new InvalidOperationException(SR.Get(SRID.ParserBamlVersion, (BamlVersion.ReaderVersion.Major.ToString(CultureInfo.CurrentCulture) + "." + BamlVersion.ReaderVersion.Minor.ToString(CultureInfo.CurrentCulture)), (BamlWriterVersion.Major.ToString(CultureInfo.CurrentCulture) + "." + BamlWriterVersion.Minor.ToString(CultureInfo.CurrentCulture)))); } } #endif internal void WriteVersion(BinaryWriter bamlBinaryWriter) { #if DEBUG long posStart = bamlBinaryWriter.BaseStream.Position; #endif BamlVersion.SaveToStream(bamlBinaryWriter.BaseStream); #if DEBUG long posEnd = bamlBinaryWriter.BaseStream.Position; if(-1 == posStart) { long length = bamlBinaryWriter.BaseStream.Length; Debug.Assert(length == BamlVersionHeader.BinarySerializationSize, "Incorrect Baml Version Header Size"); } else { Debug.Assert((posEnd-posStart) == BamlVersionHeader.BinarySerializationSize, "Incorrect Baml Version Header Size"); } #endif } FormatVersion _bamlVersion; } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- OracleParameterCollection.cs
- XmlObjectSerializerContext.cs
- HideDisabledControlAdapter.cs
- Operand.cs
- AppDomainUnloadedException.cs
- HTMLTagNameToTypeMapper.cs
- DispatcherObject.cs
- SystemIcmpV6Statistics.cs
- ContentDesigner.cs
- ApplicationBuildProvider.cs
- OlePropertyStructs.cs
- RuntimeTransactionHandle.cs
- XmlQueryTypeFactory.cs
- NamespaceTable.cs
- CodeTypeOfExpression.cs
- DetailsViewPagerRow.cs
- NetworkInformationException.cs
- EntityDataSourceWrapper.cs
- VariableAction.cs
- SqlProviderUtilities.cs
- SendMailErrorEventArgs.cs
- Stack.cs
- HTTPNotFoundHandler.cs
- TableSectionStyle.cs
- InlineObject.cs
- NameTable.cs
- ObjectDataSourceChooseTypePanel.cs
- IisTraceWebEventProvider.cs
- DataListItem.cs
- CommonDialog.cs
- GridItemProviderWrapper.cs
- InfoCardKeyedHashAlgorithm.cs
- CommonXSendMessage.cs
- QuaternionAnimation.cs
- FlowDocumentFormatter.cs
- BoundingRectTracker.cs
- AmbientLight.cs
- EventProviderTraceListener.cs
- PointLightBase.cs
- ListViewEditEventArgs.cs
- ListControlBoundActionList.cs
- SqlBooleanizer.cs
- RayMeshGeometry3DHitTestResult.cs
- SectionVisual.cs
- TextEffect.cs
- BoundField.cs
- DataGridState.cs
- OSFeature.cs
- LayoutEvent.cs
- Point.cs
- OracleParameterBinding.cs
- SecurityException.cs
- ValidatorUtils.cs
- localization.cs
- NetworkInformationPermission.cs
- Pens.cs
- SqlMetaData.cs
- LazyTextWriterCreator.cs
- XmlSignatureProperties.cs
- DATA_BLOB.cs
- CheckBoxAutomationPeer.cs
- _ListenerRequestStream.cs
- DataGridRelationshipRow.cs
- SafeFileHandle.cs
- OracleString.cs
- GroupBoxDesigner.cs
- InteropAutomationProvider.cs
- Rect3DConverter.cs
- XmlNodeReader.cs
- SubstitutionResponseElement.cs
- DataServiceBehavior.cs
- PropertyEmitterBase.cs
- NominalTypeEliminator.cs
- SerialPort.cs
- SplayTreeNode.cs
- ColorTranslator.cs
- ValueTypeIndexerReference.cs
- ItemList.cs
- Binding.cs
- Dump.cs
- Selector.cs
- CapabilitiesState.cs
- StreamingContext.cs
- ParserExtension.cs
- SerialStream.cs
- StateChangeEvent.cs
- UDPClient.cs
- InfoCard.cs
- ObjectParameterCollection.cs
- MailAddressCollection.cs
- Constants.cs
- ConnectionStringSettings.cs
- FlowDocumentScrollViewerAutomationPeer.cs
- UIHelper.cs
- RangeValueProviderWrapper.cs
- CodeSnippetStatement.cs
- XmlNamespaceMappingCollection.cs
- PropertyItemInternal.cs
- NetDataContractSerializer.cs
- ChildDocumentBlock.cs