Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ProcessRequestArgs.cs
- EventlogProvider.cs
- RegexGroupCollection.cs
- MessageDesigner.cs
- HttpHandlerAction.cs
- TextTreeFixupNode.cs
- TableFieldsEditor.cs
- Stackframe.cs
- XpsS0ValidatingLoader.cs
- SqlServer2KCompatibilityCheck.cs
- EntityContainerAssociationSetEnd.cs
- Action.cs
- BufferAllocator.cs
- PassportIdentity.cs
- SessionStateModule.cs
- WmlCommandAdapter.cs
- MappingMetadataHelper.cs
- SelectionUIService.cs
- ArgumentOutOfRangeException.cs
- StringSource.cs
- SystemTcpStatistics.cs
- X509CertificateTokenFactoryCredential.cs
- HatchBrush.cs
- SqlColumnizer.cs
- SourceInterpreter.cs
- AutomationElement.cs
- IPAddressCollection.cs
- ListViewItemSelectionChangedEvent.cs
- DrawingContextDrawingContextWalker.cs
- ClosableStream.cs
- ScrollableControl.cs
- WsdlInspector.cs
- Gdiplus.cs
- IIS7UserPrincipal.cs
- DesignerVerb.cs
- RuntimeEnvironment.cs
- WrapPanel.cs
- FtpWebResponse.cs
- PartialClassGenerationTaskInternal.cs
- HttpAsyncResult.cs
- Thickness.cs
- EntityDataSourceContainerNameItem.cs
- XPathBinder.cs
- ItemContainerProviderWrapper.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- RectangleGeometry.cs
- SqlMethods.cs
- VisualStyleTypesAndProperties.cs
- MsmqMessageProperty.cs
- MatrixConverter.cs
- DataControlCommands.cs
- SoapServerMessage.cs
- ProxyHelper.cs
- PerspectiveCamera.cs
- RemotingException.cs
- updatecommandorderer.cs
- XXXOnTypeBuilderInstantiation.cs
- dataSvcMapFileLoader.cs
- DataTableNameHandler.cs
- COM2ComponentEditor.cs
- oledbmetadatacollectionnames.cs
- ProfileService.cs
- CodePageEncoding.cs
- SqlXml.cs
- ImageButton.cs
- CodeTypeParameter.cs
- AttributeData.cs
- ColumnMapTranslator.cs
- TypeConverter.cs
- SwitchElementsCollection.cs
- Accessible.cs
- ListViewItem.cs
- WindowsIPAddress.cs
- DetailsViewRow.cs
- DbModificationCommandTree.cs
- PiiTraceSource.cs
- ThreadExceptionEvent.cs
- MaskPropertyEditor.cs
- ReferencedCollectionType.cs
- CompleteWizardStep.cs
- Command.cs
- UrlMappingsSection.cs
- SqlCommandBuilder.cs
- ObjectReferenceStack.cs
- CodeSnippetTypeMember.cs
- XmlNamespaceManager.cs
- XamlStyleSerializer.cs
- VisualBrush.cs
- CompiledQueryCacheKey.cs
- TextBox.cs
- SystemResourceKey.cs
- ToolConsole.cs
- RouteItem.cs
- ToolStripTemplateNode.cs
- RepeaterItemCollection.cs
- Trustee.cs
- FixedFindEngine.cs
- TextHidden.cs
- ZipIOExtraField.cs
- SerializationAttributes.cs