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
- ProfileSettings.cs
- HTTPNotFoundHandler.cs
- AnnotationResource.cs
- BitmapData.cs
- IPHostEntry.cs
- VisualStyleInformation.cs
- DoubleCollectionConverter.cs
- GeneralTransform.cs
- DataIdProcessor.cs
- CustomExpressionEventArgs.cs
- InvariantComparer.cs
- Debug.cs
- WorkflowItemPresenter.cs
- XPathParser.cs
- WorkflowMarkupSerializerMapping.cs
- ProcessModelInfo.cs
- querybuilder.cs
- StylusShape.cs
- Label.cs
- SafeLocalAllocation.cs
- FlowPanelDesigner.cs
- LineSegment.cs
- DataGrid.cs
- CompositionAdorner.cs
- DiscoveryMessageSequenceGenerator.cs
- BufferAllocator.cs
- SoapInteropTypes.cs
- KernelTypeValidation.cs
- FileSystemEventArgs.cs
- ValueType.cs
- unitconverter.cs
- SafeCryptHandles.cs
- Math.cs
- LinkDesigner.cs
- ExpandCollapseProviderWrapper.cs
- PipelineModuleStepContainer.cs
- RuleSettingsCollection.cs
- ObjRef.cs
- future.cs
- SafeHandles.cs
- ConfigurationValue.cs
- QuaternionKeyFrameCollection.cs
- Vars.cs
- InvalidEnumArgumentException.cs
- XmlSchemaSimpleTypeRestriction.cs
- ProxyFragment.cs
- ToolConsole.cs
- DecimalFormatter.cs
- WindowsStreamSecurityBindingElement.cs
- GiveFeedbackEventArgs.cs
- KnownTypesHelper.cs
- ProviderBase.cs
- StatusBarPanel.cs
- RegexGroup.cs
- TokenizerHelper.cs
- HtmlWindow.cs
- FormView.cs
- Symbol.cs
- StyleXamlTreeBuilder.cs
- XmlSchemaExternal.cs
- GenericTypeParameterBuilder.cs
- PenContext.cs
- UInt32Storage.cs
- MachinePropertyVariants.cs
- EmbeddedMailObject.cs
- BasicAsyncResult.cs
- DocumentScope.cs
- MenuItemStyleCollection.cs
- ObjectReaderCompiler.cs
- Condition.cs
- WebBodyFormatMessageProperty.cs
- ResourceManagerWrapper.cs
- arabicshape.cs
- ValueUtilsSmi.cs
- PackUriHelper.cs
- HttpChannelHelper.cs
- ModelVisual3D.cs
- Assembly.cs
- TimeoutException.cs
- GetReadStreamResult.cs
- MemoryStream.cs
- RecordManager.cs
- Point3DCollection.cs
- DataGridViewImageCell.cs
- ObjectDataSourceFilteringEventArgs.cs
- Storyboard.cs
- CellTreeNode.cs
- _SslStream.cs
- GenerateHelper.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- GridViewCancelEditEventArgs.cs
- XmlUtf8RawTextWriter.cs
- UseAttributeSetsAction.cs
- SqlGatherConsumedAliases.cs
- CircleHotSpot.cs
- StringAnimationUsingKeyFrames.cs
- SystemIcmpV4Statistics.cs
- GACIdentityPermission.cs
- SQLSingleStorage.cs
- UIPropertyMetadata.cs