Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Framework / MS / Internal / Globalization / BamlResourceSerializer.cs / 1 / BamlResourceSerializer.cs
//-------------------------------------------------------- // Class that implements BamlResourceSerializer // // Created: [....] @ 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
- MulticastNotSupportedException.cs
- Events.cs
- Number.cs
- ProgressBarHighlightConverter.cs
- ClassHandlersStore.cs
- DataGridViewCheckBoxColumn.cs
- ContextMenu.cs
- FactoryGenerator.cs
- DbUpdateCommandTree.cs
- MachineSettingsSection.cs
- HTTP_SERVICE_CONFIG_URLACL_PARAM.cs
- StreamDocument.cs
- TargetInvocationException.cs
- DesignerView.xaml.cs
- SiteMapNode.cs
- UIPropertyMetadata.cs
- MenuItemCollection.cs
- SplitContainer.cs
- PropertyDescriptor.cs
- LogStream.cs
- CodeSnippetCompileUnit.cs
- ChangeConflicts.cs
- MarshalByValueComponent.cs
- CachedBitmap.cs
- DescendantOverDescendantQuery.cs
- AssemblyNameProxy.cs
- DocumentScope.cs
- EntityContainerAssociationSet.cs
- XmlParser.cs
- HtmlInputRadioButton.cs
- SessionSwitchEventArgs.cs
- Item.cs
- OptimizerPatterns.cs
- SetterBaseCollection.cs
- ToolboxItemWrapper.cs
- userdatakeys.cs
- AdornedElementPlaceholder.cs
- DelimitedListTraceListener.cs
- SafeBitVector32.cs
- ProtocolsConfigurationHandler.cs
- Int64.cs
- TemplateXamlTreeBuilder.cs
- XPathDocumentBuilder.cs
- DBParameter.cs
- TypePropertyEditor.cs
- ParamArrayAttribute.cs
- AttachedAnnotationChangedEventArgs.cs
- ColumnMap.cs
- RemoteDebugger.cs
- GorillaCodec.cs
- TreeWalker.cs
- DocumentPageTextView.cs
- Reference.cs
- ProfileSection.cs
- LinearGradientBrush.cs
- WindowsAuthenticationModule.cs
- EventHandlerList.cs
- SecureConversationDriver.cs
- NavigationPropertyEmitter.cs
- PreProcessInputEventArgs.cs
- HandlerWithFactory.cs
- EntityParameter.cs
- SqlParameterCollection.cs
- EntityModelSchemaGenerator.cs
- TextBoxRenderer.cs
- WeakRefEnumerator.cs
- DependencySource.cs
- TypeConverterHelper.cs
- JsonWriterDelegator.cs
- RtfControls.cs
- XmlConvert.cs
- TreeView.cs
- QualifiedCellIdBoolean.cs
- TextParentUndoUnit.cs
- ArrayList.cs
- NativeMethods.cs
- WebBrowserEvent.cs
- PageThemeParser.cs
- QilFactory.cs
- AutomationTextAttribute.cs
- PolicyLevel.cs
- ResourceManagerWrapper.cs
- SqlProfileProvider.cs
- UnsafeNativeMethods.cs
- StreamWriter.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- ListViewItemSelectionChangedEvent.cs
- DetailsViewUpdatedEventArgs.cs
- Misc.cs
- WorkflowOperationInvoker.cs
- RelationshipManager.cs
- ScriptResourceAttribute.cs
- AuthenticatingEventArgs.cs
- WizardStepBase.cs
- SmtpDigestAuthenticationModule.cs
- HttpModuleAction.cs
- TextRangeProviderWrapper.cs
- DomainUpDown.cs
- ObjectListSelectEventArgs.cs
- CharEnumerator.cs