Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / MS / Internal / Globalization / BamlResourceSerializer.cs / 1305600 / 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
- Typography.cs
- SevenBitStream.cs
- FileSystemWatcher.cs
- ReadOnlyDictionary.cs
- DataGridViewRowPrePaintEventArgs.cs
- ToolBarPanel.cs
- UrlPath.cs
- ContractMapping.cs
- ThaiBuddhistCalendar.cs
- GridToolTip.cs
- CompilerGlobalScopeAttribute.cs
- AlternateViewCollection.cs
- WaitForChangedResult.cs
- DesignTimeType.cs
- ExeContext.cs
- XmlLanguage.cs
- ListParagraph.cs
- ResourceContainer.cs
- Material.cs
- RelOps.cs
- SourceElementsCollection.cs
- ObjectList.cs
- ModifierKeysValueSerializer.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- SoapRpcServiceAttribute.cs
- DateRangeEvent.cs
- SettingsPropertyValue.cs
- SynchronizationLockException.cs
- XmlStringTable.cs
- MatchingStyle.cs
- DataDesignUtil.cs
- wgx_render.cs
- SystemResources.cs
- WindowsMenu.cs
- WebControl.cs
- XmlLanguageConverter.cs
- AtomEntry.cs
- SqlException.cs
- BypassElementCollection.cs
- ManipulationDevice.cs
- IndependentAnimationStorage.cs
- NegotiationTokenProvider.cs
- ByteArrayHelperWithString.cs
- DesignerForm.cs
- EditableLabelControl.cs
- XmlStringTable.cs
- Ops.cs
- AppLevelCompilationSectionCache.cs
- XamlSerializerUtil.cs
- EnumerableCollectionView.cs
- DeploymentSection.cs
- Mouse.cs
- DataGridViewCellStyleConverter.cs
- TypeNameConverter.cs
- Version.cs
- FillErrorEventArgs.cs
- EncryptedType.cs
- MyContact.cs
- ComponentSerializationService.cs
- Propagator.Evaluator.cs
- CodeConstructor.cs
- IChannel.cs
- UICuesEvent.cs
- StructuralObject.cs
- EventManager.cs
- HMACSHA1.cs
- ClipboardProcessor.cs
- XmlFormatWriterGenerator.cs
- WorkflowDataContext.cs
- Win32Native.cs
- SecurityCriticalDataForSet.cs
- HotCommands.cs
- EnumValAlphaComparer.cs
- Button.cs
- ProxyAttribute.cs
- ButtonField.cs
- ComplexTypeEmitter.cs
- SoapFault.cs
- WebPartConnectionCollection.cs
- SingleAnimationUsingKeyFrames.cs
- LocalValueEnumerator.cs
- ThreadExceptionEvent.cs
- FixUp.cs
- DataKeyCollection.cs
- ToolStripManager.cs
- CodeDelegateCreateExpression.cs
- SessionStateUtil.cs
- ExtendedPropertyCollection.cs
- UIElementAutomationPeer.cs
- UITypeEditor.cs
- RunInstallerAttribute.cs
- MessagingActivityHelper.cs
- ObjectRef.cs
- EntityDataSourceDataSelectionPanel.cs
- CodeParameterDeclarationExpression.cs
- InheritanceAttribute.cs
- InvalidDocumentContentsException.cs
- TableLayoutSettingsTypeConverter.cs
- TextEffect.cs
- XPathSelfQuery.cs