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
- XmlSchemaNotation.cs
- ArcSegment.cs
- CqlBlock.cs
- UInt32.cs
- SyndicationDeserializer.cs
- LambdaCompiler.Lambda.cs
- CodeAttributeDeclarationCollection.cs
- StateInitialization.cs
- SkinIDTypeConverter.cs
- Cell.cs
- SwitchLevelAttribute.cs
- ToolStripPanelSelectionGlyph.cs
- TryLoadRunnableWorkflowCommand.cs
- BindingsCollection.cs
- FactoryGenerator.cs
- DataGridViewCellLinkedList.cs
- EventlogProvider.cs
- ZipIOLocalFileHeader.cs
- InternalCache.cs
- TypefaceCollection.cs
- BoundsDrawingContextWalker.cs
- SystemDropShadowChrome.cs
- AsyncOperationManager.cs
- HtmlTableCell.cs
- SecurityPolicySection.cs
- QueryCacheEntry.cs
- AccessDataSourceWizardForm.cs
- HealthMonitoringSection.cs
- DeflateEmulationStream.cs
- TextBoxView.cs
- SourceFileInfo.cs
- Baml6Assembly.cs
- DSACryptoServiceProvider.cs
- IdentityReference.cs
- LinearKeyFrames.cs
- HtmlSelect.cs
- DataGridParentRows.cs
- Socket.cs
- TrayIconDesigner.cs
- SqlExpander.cs
- CommonProperties.cs
- BulletedListEventArgs.cs
- ActivityMarkupSerializationProvider.cs
- BaseInfoTable.cs
- IOThreadTimer.cs
- ViewDesigner.cs
- HttpModuleCollection.cs
- ITextView.cs
- SRGSCompiler.cs
- SystemIPAddressInformation.cs
- Buffer.cs
- HttpResponseWrapper.cs
- Msec.cs
- Table.cs
- SelectionRangeConverter.cs
- CqlWriter.cs
- SqlBooleanMismatchVisitor.cs
- AssertUtility.cs
- DurableInstanceProvider.cs
- EDesignUtil.cs
- Point3DValueSerializer.cs
- MappableObjectManager.cs
- CategoryAttribute.cs
- RowToParametersTransformer.cs
- SynchronizingStream.cs
- CodeTypeParameterCollection.cs
- SecurityState.cs
- LinqToSqlWrapper.cs
- ColorContextHelper.cs
- FontSourceCollection.cs
- HttpListenerTimeoutManager.cs
- SqlCommandSet.cs
- Models.cs
- ActivitiesCollection.cs
- FilterableData.cs
- ellipse.cs
- StateManagedCollection.cs
- SmiContext.cs
- DummyDataSource.cs
- ValueUtilsSmi.cs
- TextElementAutomationPeer.cs
- InfoCardProofToken.cs
- ObjectDisposedException.cs
- BezierSegment.cs
- RichTextBox.cs
- WebServiceHostFactory.cs
- WebPartMinimizeVerb.cs
- ByteAnimation.cs
- MonthChangedEventArgs.cs
- MapPathBasedVirtualPathProvider.cs
- ChangeTracker.cs
- DataPager.cs
- NativeCppClassAttribute.cs
- controlskin.cs
- JsonByteArrayDataContract.cs
- XmlJsonWriter.cs
- ArgumentException.cs
- TextFormatter.cs
- ILGenerator.cs
- ListBase.cs