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
- JoinSymbol.cs
- StickyNoteAnnotations.cs
- StringComparer.cs
- LoginView.cs
- AnnotationObservableCollection.cs
- SpecialNameAttribute.cs
- InputLanguage.cs
- CodeTypeDeclarationCollection.cs
- Button.cs
- SiteMapProvider.cs
- XmlRootAttribute.cs
- ResourceExpressionBuilder.cs
- BuildResult.cs
- MetadataPropertyCollection.cs
- CallbackValidator.cs
- Cloud.cs
- PerformanceCounterPermissionEntry.cs
- DocComment.cs
- ThemeableAttribute.cs
- TreeWalkHelper.cs
- Win32Interop.cs
- DataSourceXmlClassAttribute.cs
- SafeFileMappingHandle.cs
- IPipelineRuntime.cs
- NavigatorOutput.cs
- BooleanAnimationUsingKeyFrames.cs
- DataContext.cs
- GridViewCommandEventArgs.cs
- Maps.cs
- ConsumerConnectionPoint.cs
- HyperLinkColumn.cs
- FixedHighlight.cs
- StylusPointCollection.cs
- EnumUnknown.cs
- PenContexts.cs
- SystemUdpStatistics.cs
- DataObjectMethodAttribute.cs
- WindowsProgressbar.cs
- WeakReference.cs
- DomainLiteralReader.cs
- Nullable.cs
- CodeTypeReference.cs
- IBuiltInEvidence.cs
- ConsoleTraceListener.cs
- COM2ComponentEditor.cs
- FileChangeNotifier.cs
- MissingManifestResourceException.cs
- WebAdminConfigurationHelper.cs
- InstanceDescriptor.cs
- ServerIdentity.cs
- DPCustomTypeDescriptor.cs
- RootAction.cs
- HttpCookiesSection.cs
- OleDbTransaction.cs
- IFlowDocumentViewer.cs
- ActivationArguments.cs
- MultiPageTextView.cs
- TabControl.cs
- BufferedConnection.cs
- Canvas.cs
- DataStorage.cs
- XmlAttributeCollection.cs
- MLangCodePageEncoding.cs
- CompensatableTransactionScopeActivity.cs
- SizeValueSerializer.cs
- SymmetricKeyWrap.cs
- SystemIPGlobalProperties.cs
- LoginDesigner.cs
- TableCell.cs
- smtpconnection.cs
- ButtonColumn.cs
- DeflateStream.cs
- ParagraphResult.cs
- DrawListViewItemEventArgs.cs
- SendMailErrorEventArgs.cs
- ProvidersHelper.cs
- HebrewCalendar.cs
- RadioButton.cs
- SerializationObjectManager.cs
- CharacterBufferReference.cs
- FtpCachePolicyElement.cs
- DataTransferEventArgs.cs
- SvcFileManager.cs
- StorageMappingFragment.cs
- SchemaElementDecl.cs
- MediaCommands.cs
- WsatServiceCertificate.cs
- EdmItemError.cs
- WebPartZone.cs
- FlagPanel.cs
- QueryCacheKey.cs
- ProxyHelper.cs
- ProgressBar.cs
- DateTimeOffset.cs
- OverrideMode.cs
- ParallelEnumerableWrapper.cs
- RecognizedAudio.cs
- CaseInsensitiveOrdinalStringComparer.cs
- DropDownHolder.cs
- ExceptionUtil.cs