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
- ConnectionProviderAttribute.cs
- ActivationArguments.cs
- TemplatedWizardStep.cs
- DateTimeStorage.cs
- XmlHierarchyData.cs
- HeaderUtility.cs
- SpellerHighlightLayer.cs
- RTLAwareMessageBox.cs
- TypeDependencyAttribute.cs
- X509Certificate.cs
- MailFileEditor.cs
- TimeZone.cs
- Stack.cs
- SettingsSection.cs
- DiscoveryMessageSequenceCD1.cs
- DataGridAutoGeneratingColumnEventArgs.cs
- XmlQualifiedName.cs
- SkewTransform.cs
- UnsafeNetInfoNativeMethods.cs
- CompileXomlTask.cs
- WebPartVerb.cs
- SQLUtility.cs
- DataGridViewColumnStateChangedEventArgs.cs
- KnownIds.cs
- InvariantComparer.cs
- ProcessModelSection.cs
- Publisher.cs
- ChannelSinkStacks.cs
- PhysicalAddress.cs
- AdRotator.cs
- HuffModule.cs
- RangeValuePattern.cs
- PolicyLevel.cs
- ConfigurationValues.cs
- MissingSatelliteAssemblyException.cs
- CodeDirectiveCollection.cs
- Button.cs
- FormViewInsertedEventArgs.cs
- BitmapDecoder.cs
- SQLGuidStorage.cs
- PrintController.cs
- SessionStateContainer.cs
- __Error.cs
- StatusBarPanelClickEvent.cs
- OdbcConnectionStringbuilder.cs
- TransactionFlowElement.cs
- XD.cs
- TabletDeviceInfo.cs
- TraceHandler.cs
- SqlWriter.cs
- ErrorFormatterPage.cs
- TextSelectionProcessor.cs
- XmlSerializationGeneratedCode.cs
- DataSource.cs
- IteratorDescriptor.cs
- GridToolTip.cs
- Propagator.cs
- VirtualPathUtility.cs
- LineProperties.cs
- NamedPipeDuplicateContext.cs
- DataSpaceManager.cs
- ExpandableObjectConverter.cs
- StreamSecurityUpgradeAcceptor.cs
- ReliableChannelListener.cs
- DataException.cs
- RowUpdatingEventArgs.cs
- FormViewUpdatedEventArgs.cs
- AuthenticationException.cs
- Options.cs
- HttpResponseWrapper.cs
- WorkflowShape.cs
- WebPartVerbsEventArgs.cs
- ProxyHelper.cs
- MappingItemCollection.cs
- PlainXmlDeserializer.cs
- InputLanguageManager.cs
- TabletDeviceInfo.cs
- Thread.cs
- _WinHttpWebProxyDataBuilder.cs
- SHA512Managed.cs
- PerformanceCounterPermission.cs
- HttpListener.cs
- XsltQilFactory.cs
- XmlDataLoader.cs
- ToolStripDropDown.cs
- WindowsStatic.cs
- COM2TypeInfoProcessor.cs
- MemberInfoSerializationHolder.cs
- ResXBuildProvider.cs
- XmlCharCheckingReader.cs
- XmlSchemaSimpleContent.cs
- SurrogateEncoder.cs
- LinkAreaEditor.cs
- CachedFontFamily.cs
- XPathDocumentIterator.cs
- TypeLibConverter.cs
- ToolStripRendererSwitcher.cs
- SequenceFullException.cs
- TraceListeners.cs
- Parameter.cs