Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- SingleConverter.cs
- ScrollBarAutomationPeer.cs
- CrossAppDomainChannel.cs
- ControlsConfig.cs
- CallTemplateAction.cs
- SolidBrush.cs
- ConnectionStringSettingsCollection.cs
- SqlTriggerContext.cs
- LinqDataSource.cs
- SqlDataSource.cs
- PolyBezierSegment.cs
- ResourceProviderFactory.cs
- XPathChildIterator.cs
- ReachFixedDocumentSerializerAsync.cs
- OutputCacheSection.cs
- RelatedView.cs
- GenericAuthenticationEventArgs.cs
- ReferentialConstraint.cs
- MessageQueueInstaller.cs
- SafeEventLogWriteHandle.cs
- CommonDialog.cs
- Label.cs
- DesignerDataRelationship.cs
- DateTimeOffset.cs
- CellParagraph.cs
- SqlDataReaderSmi.cs
- srgsitem.cs
- StateDesigner.LayoutSelectionGlyph.cs
- GeometryValueSerializer.cs
- TypeHelper.cs
- FunctionMappingTranslator.cs
- MailBnfHelper.cs
- _ConnectOverlappedAsyncResult.cs
- TrackingServices.cs
- TextProperties.cs
- CompilerInfo.cs
- SpeechRecognizer.cs
- XmlSchemaInfo.cs
- ContextBase.cs
- RetrieveVirtualItemEventArgs.cs
- ProfileSettingsCollection.cs
- Condition.cs
- SqlProcedureAttribute.cs
- ObjectContextServiceProvider.cs
- EventLogPermissionAttribute.cs
- ObjectSpanRewriter.cs
- WebPartDisplayModeEventArgs.cs
- OdbcException.cs
- SQLMembershipProvider.cs
- NameSpaceEvent.cs
- ReadOnlyCollectionBase.cs
- XamlDebuggerXmlReader.cs
- EntityDataSourceWizardForm.cs
- RemotingServices.cs
- DesignerActionMethodItem.cs
- MsmqHostedTransportManager.cs
- odbcmetadatafactory.cs
- PersonalizationState.cs
- MultiBindingExpression.cs
- OptimizerPatterns.cs
- ZeroOpNode.cs
- PathStreamGeometryContext.cs
- BitmapEffectInput.cs
- EntityDesignerDataSourceView.cs
- PolyQuadraticBezierSegment.cs
- QueryResponse.cs
- StringSource.cs
- ZoneIdentityPermission.cs
- DirectionalAction.cs
- AsyncWaitHandle.cs
- NameHandler.cs
- DeflateStream.cs
- TokenBasedSet.cs
- MouseButtonEventArgs.cs
- PropertyStore.cs
- FormsAuthenticationUserCollection.cs
- ImageKeyConverter.cs
- GuidConverter.cs
- XmlSerializationReader.cs
- StructuredTypeEmitter.cs
- PrePrepareMethodAttribute.cs
- MimePart.cs
- PrimitiveCodeDomSerializer.cs
- StatusBarItem.cs
- KnownBoxes.cs
- InvalidPipelineStoreException.cs
- HttpResponseInternalBase.cs
- GridViewAutomationPeer.cs
- Glyph.cs
- Int32KeyFrameCollection.cs
- DataGridViewComboBoxEditingControl.cs
- ToolStripContentPanel.cs
- PolicyException.cs
- RemoteX509Token.cs
- HandlerWithFactory.cs
- BindingMemberInfo.cs
- CompositeDataBoundControl.cs
- ScrollEventArgs.cs
- Size.cs
- PropertyPathWorker.cs