Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- PrintPageEvent.cs
- FlowDocumentPage.cs
- Calendar.cs
- Cursors.cs
- DodSequenceMerge.cs
- Point4D.cs
- DBConnectionString.cs
- DataGridViewSelectedCellCollection.cs
- ExtentCqlBlock.cs
- SecurityElement.cs
- SR.cs
- Opcode.cs
- RootProfilePropertySettingsCollection.cs
- ThrowOnMultipleAssignment.cs
- SmtpNegotiateAuthenticationModule.cs
- DesignerHost.cs
- Utilities.cs
- Timer.cs
- WaveHeader.cs
- BitmapPalettes.cs
- StateManagedCollection.cs
- StretchValidation.cs
- TypeConverterHelper.cs
- sqlmetadatafactory.cs
- InfoCardRSAPKCS1SignatureDeformatter.cs
- BamlStream.cs
- StateInitializationDesigner.cs
- SinglePageViewer.cs
- FlagsAttribute.cs
- SQLChars.cs
- StickyNoteHelper.cs
- MimePart.cs
- ItemCollectionEditor.cs
- SqlDataSourceFilteringEventArgs.cs
- FormsAuthentication.cs
- TrailingSpaceComparer.cs
- TextRunCacheImp.cs
- DefaultAuthorizationContext.cs
- SQLDecimal.cs
- ValueOfAction.cs
- SafeLocalAllocation.cs
- PeerNameRecord.cs
- Bold.cs
- SoapTypeAttribute.cs
- BitmapEffectrendercontext.cs
- ComplexBindingPropertiesAttribute.cs
- ObjectCloneHelper.cs
- XhtmlBasicLabelAdapter.cs
- IPAddress.cs
- MemberRelationshipService.cs
- SpellerHighlightLayer.cs
- ZipIOBlockManager.cs
- RSAOAEPKeyExchangeFormatter.cs
- ContextMenu.cs
- ServiceDocumentFormatter.cs
- BinaryCommonClasses.cs
- RoleGroupCollectionEditor.cs
- MatchingStyle.cs
- ResourceKey.cs
- TextServicesDisplayAttribute.cs
- Accessible.cs
- _NetRes.cs
- IncrementalReadDecoders.cs
- JoinTreeSlot.cs
- OperationResponse.cs
- ThreadStartException.cs
- MultiByteCodec.cs
- CssClassPropertyAttribute.cs
- WorkflowApplicationAbortedException.cs
- CorrelationQueryBehavior.cs
- ProtocolsSection.cs
- DoubleLinkList.cs
- BoolLiteral.cs
- CodeGenerator.cs
- PageCodeDomTreeGenerator.cs
- XPathChildIterator.cs
- DATA_BLOB.cs
- Win32PrintDialog.cs
- NavigationProperty.cs
- DotExpr.cs
- SecurityPolicySection.cs
- TransactionTraceIdentifier.cs
- ScrollChrome.cs
- FigureParagraph.cs
- AttachedPropertiesService.cs
- JpegBitmapDecoder.cs
- TextParagraph.cs
- ToolStripPanelRenderEventArgs.cs
- HiddenField.cs
- SQLDecimalStorage.cs
- SqlStatistics.cs
- DataListCommandEventArgs.cs
- BaseTemplateParser.cs
- PackageDigitalSignature.cs
- WebServiceBindingAttribute.cs
- XmlSerializer.cs
- ISessionStateStore.cs
- GlobalEventManager.cs
- GridErrorDlg.cs
- smtppermission.cs