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
- Rule.cs
- AnnotationStore.cs
- _TransmitFileOverlappedAsyncResult.cs
- DataBindingExpressionBuilder.cs
- ParameterModifier.cs
- EditingCoordinator.cs
- BitStack.cs
- ReadOnlyHierarchicalDataSource.cs
- ReplyAdapterChannelListener.cs
- SerializationAttributes.cs
- GacUtil.cs
- FlowNode.cs
- EmptyStringExpandableObjectConverter.cs
- PagerSettings.cs
- EntityDataSourceDesignerHelper.cs
- _ConnectStream.cs
- ListBase.cs
- SafeLocalAllocation.cs
- StaticSiteMapProvider.cs
- XmlQueryRuntime.cs
- _NegoState.cs
- PipelineModuleStepContainer.cs
- SymLanguageVendor.cs
- NavigatorOutput.cs
- BrowserDefinitionCollection.cs
- NotifyIcon.cs
- AuthorizationSection.cs
- ValidationVisibilityAttribute.cs
- ProfileManager.cs
- XPathSelectionIterator.cs
- TypedReference.cs
- XmlSchema.cs
- SeverityFilter.cs
- XmlSchemaAttributeGroupRef.cs
- GACMembershipCondition.cs
- GiveFeedbackEvent.cs
- XmlMembersMapping.cs
- WindowsComboBox.cs
- SliderAutomationPeer.cs
- NativeMethods.cs
- SpecialNameAttribute.cs
- XmlSchemaImport.cs
- SafeSystemMetrics.cs
- MarkupExtensionParser.cs
- HashRepartitionStream.cs
- SqlCacheDependencyDatabase.cs
- WebServiceReceive.cs
- BindingValueChangedEventArgs.cs
- FastEncoder.cs
- BindingMemberInfo.cs
- TraceShell.cs
- _SecureChannel.cs
- SqlCacheDependencySection.cs
- PointConverter.cs
- GroupItemAutomationPeer.cs
- DataProtection.cs
- ListBoxDesigner.cs
- TrustManagerPromptUI.cs
- WebPartConnectionsConnectVerb.cs
- WebPartManager.cs
- StyleCollection.cs
- ReachUIElementCollectionSerializerAsync.cs
- RequestCachePolicy.cs
- metadatamappinghashervisitor.cs
- TextAutomationPeer.cs
- DefaultTraceListener.cs
- LinkArea.cs
- storepermission.cs
- DataGridViewRowCancelEventArgs.cs
- Timer.cs
- BuildResultCache.cs
- RunWorkerCompletedEventArgs.cs
- Run.cs
- UriTemplateDispatchFormatter.cs
- FixedSOMGroup.cs
- ItemCollectionEditor.cs
- ExpressionStringBuilder.cs
- ThicknessConverter.cs
- DataGridViewCellCollection.cs
- ObjectAnimationBase.cs
- ServiceErrorHandler.cs
- DataComponentGenerator.cs
- CommandPlan.cs
- MimeObjectFactory.cs
- CodeGotoStatement.cs
- MeasureData.cs
- HttpGetProtocolReflector.cs
- DesignBindingPropertyDescriptor.cs
- SubpageParaClient.cs
- HiddenFieldDesigner.cs
- AppLevelCompilationSectionCache.cs
- CommandLibraryHelper.cs
- WorkflowViewService.cs
- WebServiceReceiveDesigner.cs
- BuilderPropertyEntry.cs
- SymLanguageVendor.cs
- IndexerNameAttribute.cs
- TextTreeFixupNode.cs
- ProfileProvider.cs
- GlobalId.cs