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
- DbExpressionBuilder.cs
- AuthorizationSection.cs
- Command.cs
- RelatedImageListAttribute.cs
- AutoGeneratedFieldProperties.cs
- RIPEMD160.cs
- TagPrefixInfo.cs
- AdPostCacheSubstitution.cs
- ApplicationServiceHelper.cs
- ApplicationContext.cs
- XPathQilFactory.cs
- Gdiplus.cs
- IApplicationTrustManager.cs
- FileLogRecordStream.cs
- Win32Native.cs
- AttributeCollection.cs
- SqlBuffer.cs
- Types.cs
- StrongNameIdentityPermission.cs
- TextSchema.cs
- sqlmetadatafactory.cs
- VariableElement.cs
- DataGridRow.cs
- RuntimeHandles.cs
- InvokeDelegate.cs
- recordstatefactory.cs
- SubMenuStyle.cs
- EntityModelBuildProvider.cs
- CodeLinePragma.cs
- TabControlCancelEvent.cs
- CheckoutException.cs
- XmlSchemaImport.cs
- LogArchiveSnapshot.cs
- TextEmbeddedObject.cs
- DrawingServices.cs
- DataGridViewAdvancedBorderStyle.cs
- SingleTagSectionHandler.cs
- LoadWorkflowCommand.cs
- DataGridViewTextBoxCell.cs
- TraceLog.cs
- ConfigXmlSignificantWhitespace.cs
- HtmlTernaryTree.cs
- DataSourceHelper.cs
- BookmarkWorkItem.cs
- ThaiBuddhistCalendar.cs
- Stroke.cs
- TimeSpanParse.cs
- ComEventsInfo.cs
- BinaryNode.cs
- WindowsListViewGroup.cs
- XmlConverter.cs
- ContainerTracking.cs
- RegexStringValidator.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- MarkupCompiler.cs
- EntitySqlException.cs
- StretchValidation.cs
- HtmlEmptyTagControlBuilder.cs
- XmlStreamNodeWriter.cs
- EventEntry.cs
- ListViewPagedDataSource.cs
- WindowsSlider.cs
- ImportOptions.cs
- AlgoModule.cs
- ItemCheckedEvent.cs
- storagemappingitemcollection.viewdictionary.cs
- Lease.cs
- MenuBindingsEditorForm.cs
- Stack.cs
- UnlockInstanceCommand.cs
- TextTreeInsertUndoUnit.cs
- UriTemplateClientFormatter.cs
- SyndicationDeserializer.cs
- NativeMethods.cs
- LoggedException.cs
- QEncodedStream.cs
- BinaryFormatter.cs
- ExpressionVisitorHelpers.cs
- NonParentingControl.cs
- SamlSubjectStatement.cs
- Column.cs
- BuildProvider.cs
- MsmqChannelFactoryBase.cs
- NamespaceTable.cs
- AutomationElementCollection.cs
- TypeConverter.cs
- GridViewAutomationPeer.cs
- DynamicUpdateCommand.cs
- MsmqInputChannelListener.cs
- TextEndOfLine.cs
- SecurityTokenTypes.cs
- Compress.cs
- IteratorFilter.cs
- SafeCertificateStore.cs
- TdsValueSetter.cs
- WindowsPrincipal.cs
- ResourcePool.cs
- BrowserCapabilitiesCodeGenerator.cs
- IndexingContentUnit.cs
- BitmapEncoder.cs