Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Framework / MS / Internal / Globalization / BamlResourceSerializer.cs / 1 / BamlResourceSerializer.cs
//-------------------------------------------------------- // Class that implements BamlResourceSerializer // // Created: Garyyang @ 12/1/2003 // //------------------------------------------------------- using System; using System.IO; using System.Globalization; using System.Runtime.InteropServices; using System.Collections; using System.Collections.Generic; using System.Windows.Markup; using System.Windows.Markup.Localizer; using System.Diagnostics; using System.Text; using System.Windows; namespace MS.Internal.Globalization { ////// BamlResourceSerializer /// internal sealed class BamlResourceSerializer { //------------------------------- // Internal static //------------------------------- internal static void Serialize(BamlLocalizer localizer, BamlTree tree, Stream output) { // Thread safe implementation (new BamlResourceSerializer()).SerializeImp(localizer, tree, output); } //---------------------------------- // constructor. //---------------------------------- ////// constructor /// private BamlResourceSerializer() { } //---------------------------------- // private method //---------------------------------- ////// Serialize the tree out to the stream. /// private void SerializeImp( BamlLocalizer localizer, BamlTree tree, Stream output ) { Debug.Assert(output != null, "The output stream given is null"); Debug.Assert(tree != null && tree.Root != null, "The tree to be serialized is null."); _writer = new BamlWriter(output); _bamlTreeStack = new Stack(); // intialize the stack. _bamlTreeStack.Push(tree.Root); while (_bamlTreeStack.Count > 0) { BamlTreeNode currentNode = _bamlTreeStack.Pop(); if (!currentNode.Visited) { // Mark this node so that it won't be serialized again. currentNode.Visited = true; currentNode.Serialize(_writer); PushChildrenToStack(currentNode.Children); } else { BamlStartElementNode elementNode = currentNode as BamlStartElementNode; Debug.Assert(elementNode != null); if (elementNode != null) { localizer.RaiseErrorNotifyEvent( new BamlLocalizerErrorNotifyEventArgs( BamlTreeMap.GetKey(elementNode), BamlLocalizerError.DuplicateElement ) ); } } } // do not close stream as we don't own it. } private void PushChildrenToStack(List children) { if (children == null) return; for (int i = children.Count - 1; i >= 0; i--) { _bamlTreeStack.Push(children[i]); } } //--------------------------------- // private //--------------------------------- private BamlWriter _writer; private Stack _bamlTreeStack; } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //-------------------------------------------------------- // Class that implements BamlResourceSerializer // // Created: Garyyang @ 12/1/2003 // //------------------------------------------------------- using System; using System.IO; using System.Globalization; using System.Runtime.InteropServices; using System.Collections; using System.Collections.Generic; using System.Windows.Markup; using System.Windows.Markup.Localizer; using System.Diagnostics; using System.Text; using System.Windows; namespace MS.Internal.Globalization { /// /// BamlResourceSerializer /// internal sealed class BamlResourceSerializer { //------------------------------- // Internal static //------------------------------- internal static void Serialize(BamlLocalizer localizer, BamlTree tree, Stream output) { // Thread safe implementation (new BamlResourceSerializer()).SerializeImp(localizer, tree, output); } //---------------------------------- // constructor. //---------------------------------- ////// constructor /// private BamlResourceSerializer() { } //---------------------------------- // private method //---------------------------------- ////// Serialize the tree out to the stream. /// private void SerializeImp( BamlLocalizer localizer, BamlTree tree, Stream output ) { Debug.Assert(output != null, "The output stream given is null"); Debug.Assert(tree != null && tree.Root != null, "The tree to be serialized is null."); _writer = new BamlWriter(output); _bamlTreeStack = new Stack(); // intialize the stack. _bamlTreeStack.Push(tree.Root); while (_bamlTreeStack.Count > 0) { BamlTreeNode currentNode = _bamlTreeStack.Pop(); if (!currentNode.Visited) { // Mark this node so that it won't be serialized again. currentNode.Visited = true; currentNode.Serialize(_writer); PushChildrenToStack(currentNode.Children); } else { BamlStartElementNode elementNode = currentNode as BamlStartElementNode; Debug.Assert(elementNode != null); if (elementNode != null) { localizer.RaiseErrorNotifyEvent( new BamlLocalizerErrorNotifyEventArgs( BamlTreeMap.GetKey(elementNode), BamlLocalizerError.DuplicateElement ) ); } } } // do not close stream as we don't own it. } private void PushChildrenToStack(List children) { if (children == null) return; for (int i = children.Count - 1; i >= 0; i--) { _bamlTreeStack.Push(children[i]); } } //--------------------------------- // private //--------------------------------- private BamlWriter _writer; private Stack _bamlTreeStack; } } // 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
- InternalsVisibleToAttribute.cs
- SQLString.cs
- XpsPartBase.cs
- InputLanguageEventArgs.cs
- SharedConnectionInfo.cs
- AccessDataSource.cs
- XmlWriterSettings.cs
- Line.cs
- BrowserDefinitionCollection.cs
- HorizontalAlignConverter.cs
- ComponentRenameEvent.cs
- Brush.cs
- BitSet.cs
- UdpTransportBindingElement.cs
- TypeConstant.cs
- ReflectionUtil.cs
- ThemeConfigurationDialog.cs
- OleDbDataReader.cs
- MarginCollapsingState.cs
- XmlReturnReader.cs
- DataGridTextBox.cs
- DataDesignUtil.cs
- GraphicsPath.cs
- FunctionCommandText.cs
- PeerNearMe.cs
- UInt64.cs
- TextRangeEdit.cs
- TextureBrush.cs
- printdlgexmarshaler.cs
- SocketCache.cs
- SerTrace.cs
- InArgumentConverter.cs
- Animatable.cs
- DocumentReferenceCollection.cs
- TextTreeRootTextBlock.cs
- ActiveXHost.cs
- DataTemplate.cs
- SystemDiagnosticsSection.cs
- ToolboxItem.cs
- WindowsUpDown.cs
- BaseComponentEditor.cs
- ByteConverter.cs
- ClonableStack.cs
- AutomationEventArgs.cs
- IxmlLineInfo.cs
- PropertyChangedEventManager.cs
- RequiredAttributeAttribute.cs
- SchemaManager.cs
- AncillaryOps.cs
- ExitEventArgs.cs
- DateTimeFormatInfoScanner.cs
- ChildTable.cs
- AsyncOperationManager.cs
- _ListenerAsyncResult.cs
- RegexParser.cs
- TextPatternIdentifiers.cs
- CompositeDataBoundControl.cs
- HtmlInputReset.cs
- GeneralTransformGroup.cs
- Renderer.cs
- CustomWebEventKey.cs
- ImageSourceValueSerializer.cs
- SpellerStatusTable.cs
- MembershipSection.cs
- BitmapImage.cs
- TextRangeEditLists.cs
- QueryCacheManager.cs
- Pen.cs
- XhtmlCssHandler.cs
- CommandManager.cs
- PartitionedStreamMerger.cs
- ObjectItemCollection.cs
- AddressHeader.cs
- XslCompiledTransform.cs
- AutoResizedEvent.cs
- SspiNegotiationTokenProvider.cs
- CompilerState.cs
- InternalCompensate.cs
- PriorityQueue.cs
- OleDbPropertySetGuid.cs
- InfoCardClaimCollection.cs
- ProjectedWrapper.cs
- HtmlElementCollection.cs
- AnimationLayer.cs
- CacheDependency.cs
- SessionSwitchEventArgs.cs
- SoapIgnoreAttribute.cs
- ManagementScope.cs
- BaseConfigurationRecord.cs
- EventMap.cs
- CompModSwitches.cs
- JoinTreeSlot.cs
- EventToken.cs
- ZipIOExtraField.cs
- CriticalFinalizerObject.cs
- VirtualDirectoryMappingCollection.cs
- InstanceOwnerQueryResult.cs
- ProvidePropertyAttribute.cs
- ReverseQueryOperator.cs
- PlainXmlSerializer.cs