Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Markup / BamlVersionHeader.cs / 1305600 / 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
- ByteConverter.cs
- StringOutput.cs
- XmlSchemaSequence.cs
- FileIOPermission.cs
- NativeMethods.cs
- RawMouseInputReport.cs
- SqlDataSourceEnumerator.cs
- SynchronizationValidator.cs
- ObjectQuery.cs
- _Semaphore.cs
- ImageAnimator.cs
- KerberosSecurityTokenAuthenticator.cs
- RootAction.cs
- PageEventArgs.cs
- FreezableOperations.cs
- LinqDataSourceDeleteEventArgs.cs
- IdentitySection.cs
- DeviceContexts.cs
- BackoffTimeoutHelper.cs
- Misc.cs
- ThaiBuddhistCalendar.cs
- CacheChildrenQuery.cs
- CorePropertiesFilter.cs
- OdbcEnvironment.cs
- UrlMappingsModule.cs
- CodeAttributeArgumentCollection.cs
- RemoveStoryboard.cs
- Crypto.cs
- PageCache.cs
- OracleTimeSpan.cs
- EventsTab.cs
- View.cs
- WorkflowServiceAttributes.cs
- Attributes.cs
- ApplicationManager.cs
- WindowCollection.cs
- EventItfInfo.cs
- ModuleElement.cs
- DataListItemEventArgs.cs
- BigInt.cs
- DbMetaDataCollectionNames.cs
- RtfControls.cs
- XPathAxisIterator.cs
- LinearGradientBrush.cs
- ProcessInputEventArgs.cs
- DateBoldEvent.cs
- Region.cs
- UnsafeNativeMethods.cs
- DtdParser.cs
- ShapeTypeface.cs
- UrlPath.cs
- Gdiplus.cs
- InteropBitmapSource.cs
- CustomAttributeFormatException.cs
- GridViewColumnCollectionChangedEventArgs.cs
- XmlSecureResolver.cs
- CompiledRegexRunner.cs
- WebResourceUtil.cs
- ReadOnlyObservableCollection.cs
- InternalSafeNativeMethods.cs
- _FixedSizeReader.cs
- PolyQuadraticBezierSegment.cs
- _Events.cs
- DataChangedEventManager.cs
- SqlMethodCallConverter.cs
- SimpleHandlerBuildProvider.cs
- ThemeableAttribute.cs
- RelationshipFixer.cs
- XmlQualifiedName.cs
- Grammar.cs
- ButtonStandardAdapter.cs
- ListDictionary.cs
- TemplateInstanceAttribute.cs
- InputScopeManager.cs
- RegexGroupCollection.cs
- RemoveStoryboard.cs
- Tuple.cs
- DataExpression.cs
- unsafeIndexingFilterStream.cs
- InProcStateClientManager.cs
- XmlElement.cs
- Camera.cs
- ExpandedWrapper.cs
- Privilege.cs
- CustomTypeDescriptor.cs
- TimeStampChecker.cs
- SourceChangedEventArgs.cs
- SqlResolver.cs
- XPathNodeInfoAtom.cs
- CollaborationHelperFunctions.cs
- Document.cs
- HttpStreamMessageEncoderFactory.cs
- SqlRowUpdatingEvent.cs
- Label.cs
- SslStream.cs
- BrowserInteropHelper.cs
- MediaTimeline.cs
- UnsafePeerToPeerMethods.cs
- InitializingNewItemEventArgs.cs
- FileRegion.cs