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
- DesignerDataConnection.cs
- CodeDelegateInvokeExpression.cs
- RectAnimationBase.cs
- XmlTypeAttribute.cs
- XPathAncestorQuery.cs
- CallbackValidator.cs
- CopyAttributesAction.cs
- SqlCacheDependency.cs
- Win32PrintDialog.cs
- Point4DValueSerializer.cs
- Quad.cs
- NameValueFileSectionHandler.cs
- PolyQuadraticBezierSegment.cs
- DocumentPageTextView.cs
- QueryCorrelationInitializer.cs
- HttpDebugHandler.cs
- RoleGroupCollection.cs
- StandardBindingImporter.cs
- FlowPanelDesigner.cs
- CachedRequestParams.cs
- PenThreadPool.cs
- Win32Native.cs
- WebPartConnectionCollection.cs
- BindingGraph.cs
- Transactions.cs
- StylusPlugin.cs
- CultureInfoConverter.cs
- QuotedPrintableStream.cs
- DocumentViewer.cs
- NegotiateStream.cs
- ButtonFlatAdapter.cs
- GuidTagList.cs
- ScriptServiceAttribute.cs
- NaturalLanguageHyphenator.cs
- WindowsListViewItem.cs
- EncoderFallback.cs
- CodeRegionDirective.cs
- SecurityChannelFaultConverter.cs
- Emitter.cs
- CompilerGeneratedAttribute.cs
- MeasureItemEvent.cs
- QueryOutputWriter.cs
- PTManager.cs
- documentsequencetextcontainer.cs
- FileInfo.cs
- DesignerObject.cs
- KoreanLunisolarCalendar.cs
- HMACMD5.cs
- RadioButtonStandardAdapter.cs
- NativeMethods.cs
- WorkerRequest.cs
- LambdaCompiler.cs
- FormViewInsertEventArgs.cs
- CacheEntry.cs
- TextEmbeddedObject.cs
- RequestResizeEvent.cs
- Typeface.cs
- PropertyItem.cs
- StructuredCompositeActivityDesigner.cs
- DesignerActionKeyboardBehavior.cs
- UrlPropertyAttribute.cs
- AnnotationStore.cs
- RegistrySecurity.cs
- KeyValueConfigurationElement.cs
- DecoderReplacementFallback.cs
- AttachedAnnotationChangedEventArgs.cs
- EmptyImpersonationContext.cs
- TreeView.cs
- FileDialogCustomPlace.cs
- HttpCachePolicy.cs
- Context.cs
- XslCompiledTransform.cs
- PathParser.cs
- SequenceNumber.cs
- AsyncInvokeContext.cs
- StateFinalizationActivity.cs
- XmlHelper.cs
- AxImporter.cs
- XmlSerializableServices.cs
- ReceiveContent.cs
- VisualTreeUtils.cs
- DateTime.cs
- NonParentingControl.cs
- RemotingConfigParser.cs
- XmlSchema.cs
- ClientData.cs
- ComponentDispatcherThread.cs
- NonClientArea.cs
- KeyedQueue.cs
- QuaternionAnimationBase.cs
- SmiEventSink_DeferedProcessing.cs
- TemplatePagerField.cs
- WizardPanelChangingEventArgs.cs
- XsdBuilder.cs
- _LoggingObject.cs
- CheckBoxBaseAdapter.cs
- StickyNoteHelper.cs
- TextDpi.cs
- SoapSchemaMember.cs
- BinaryReader.cs