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
- GridErrorDlg.cs
- Zone.cs
- DuplicateWaitObjectException.cs
- IPHostEntry.cs
- WmlPageAdapter.cs
- ObjectAssociationEndMapping.cs
- QuotedPrintableStream.cs
- JpegBitmapDecoder.cs
- ActivityWithResultConverter.cs
- FrameworkContentElement.cs
- PolyLineSegment.cs
- Duration.cs
- OleDbError.cs
- IsolatedStorage.cs
- PrimitiveXmlSerializers.cs
- DeviceContexts.cs
- DbCommandDefinition.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- ConsoleCancelEventArgs.cs
- RecordsAffectedEventArgs.cs
- CachedPathData.cs
- Int16AnimationBase.cs
- ApplicationSecurityManager.cs
- DocumentPaginator.cs
- SelectQueryOperator.cs
- NumberFormatter.cs
- CodeChecksumPragma.cs
- RC2CryptoServiceProvider.cs
- SafeNativeMethods.cs
- DataRowView.cs
- CodeCommentStatementCollection.cs
- NumberFormatInfo.cs
- NetSectionGroup.cs
- _HeaderInfoTable.cs
- Tokenizer.cs
- LocatorPart.cs
- MarkupCompiler.cs
- RectangleF.cs
- Soap.cs
- SqlParameterizer.cs
- ReflectTypeDescriptionProvider.cs
- ComboBoxRenderer.cs
- CriticalHandle.cs
- DataGridBoundColumn.cs
- SweepDirectionValidation.cs
- Random.cs
- PrintDialog.cs
- sqlpipe.cs
- SafeUserTokenHandle.cs
- infer.cs
- AppDomainManager.cs
- PresentationSource.cs
- DataColumnMappingCollection.cs
- Translator.cs
- TextClipboardData.cs
- recordstatescratchpad.cs
- TextEffect.cs
- DataRow.cs
- RouteValueExpressionBuilder.cs
- SetStoryboardSpeedRatio.cs
- PeerValidationBehavior.cs
- EventRoute.cs
- Directory.cs
- HtmlDocument.cs
- SchemaImporter.cs
- SelectionEditor.cs
- TreeNodeCollectionEditorDialog.cs
- OrderByBuilder.cs
- AffineTransform3D.cs
- DataTableMapping.cs
- MetadataUtil.cs
- EditorPartChrome.cs
- HandlerFactoryWrapper.cs
- XmlParserContext.cs
- UnsafeNativeMethods.cs
- CodeCommentStatementCollection.cs
- Int32AnimationBase.cs
- CharConverter.cs
- StdValidatorsAndConverters.cs
- CodeAttributeArgumentCollection.cs
- PersianCalendar.cs
- TextTabProperties.cs
- IndexedString.cs
- GridViewColumn.cs
- AsymmetricAlgorithm.cs
- DataMemberFieldConverter.cs
- Filter.cs
- DisplayToken.cs
- Site.cs
- SectionRecord.cs
- ListViewGroup.cs
- DES.cs
- TextPointerBase.cs
- EntityDataSourceChangedEventArgs.cs
- FirstQueryOperator.cs
- EntityConnectionStringBuilder.cs
- NameValuePermission.cs
- DebuggerAttributes.cs
- SystemIPGlobalStatistics.cs
- MailDefinition.cs