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
- SharedHttpsTransportManager.cs
- SourceFileBuildProvider.cs
- StateWorkerRequest.cs
- FixedDocumentSequencePaginator.cs
- GridViewUpdateEventArgs.cs
- TextParaClient.cs
- StylusPoint.cs
- FrugalMap.cs
- UpdateTracker.cs
- While.cs
- LicenseProviderAttribute.cs
- SnapLine.cs
- GroupBox.cs
- DynamicVirtualDiscoSearcher.cs
- TextElementCollectionHelper.cs
- XPathNode.cs
- XamlNamespaceHelper.cs
- HttpPostedFile.cs
- Brushes.cs
- MultiBinding.cs
- WebServicesDescriptionAttribute.cs
- ApplyImportsAction.cs
- DownloadProgressEventArgs.cs
- SubstitutionResponseElement.cs
- MarkerProperties.cs
- Vector3DCollectionValueSerializer.cs
- CodeAttachEventStatement.cs
- SelectedCellsCollection.cs
- MeshGeometry3D.cs
- DataException.cs
- StylusPoint.cs
- StreamGeometryContext.cs
- RuleInfoComparer.cs
- CharAnimationBase.cs
- ApplicationActivator.cs
- SiteMembershipCondition.cs
- AsymmetricSignatureFormatter.cs
- __FastResourceComparer.cs
- BinaryFormatter.cs
- DataGridLinkButton.cs
- ZipPackage.cs
- _ConnectOverlappedAsyncResult.cs
- ISAPIApplicationHost.cs
- SecurityDescriptor.cs
- AttachedAnnotationChangedEventArgs.cs
- Normalization.cs
- PlaceHolder.cs
- HMACSHA384.cs
- XmlElementList.cs
- TextAutomationPeer.cs
- EraserBehavior.cs
- CommandEventArgs.cs
- MergeFailedEvent.cs
- NullableDecimalAverageAggregationOperator.cs
- TypedLocationWrapper.cs
- ExtractorMetadata.cs
- Material.cs
- RadioButtonFlatAdapter.cs
- PersonalizationAdministration.cs
- GenericsInstances.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- EventMap.cs
- MulticastDelegate.cs
- RIPEMD160.cs
- DelimitedListTraceListener.cs
- X509ChainPolicy.cs
- ColorTransformHelper.cs
- ChannelPoolSettingsElement.cs
- Help.cs
- ButtonPopupAdapter.cs
- IsolatedStorageFileStream.cs
- ColumnWidthChangedEvent.cs
- MessageEnumerator.cs
- XhtmlConformanceSection.cs
- GetChildSubtree.cs
- GridViewCancelEditEventArgs.cs
- ThreadAttributes.cs
- CompositionDesigner.cs
- MailHeaderInfo.cs
- basemetadatamappingvisitor.cs
- Material.cs
- ProcessModelInfo.cs
- Propagator.cs
- ChildTable.cs
- RsaSecurityToken.cs
- TableLayout.cs
- TimeSpanValidatorAttribute.cs
- DynamicRenderer.cs
- ExpressionPrefixAttribute.cs
- SoapIgnoreAttribute.cs
- TimeoutHelper.cs
- PackageDigitalSignature.cs
- SerializationEventsCache.cs
- LockedActivityGlyph.cs
- Events.cs
- ImageCodecInfoPrivate.cs
- CodeConstructor.cs
- MultipleViewProviderWrapper.cs
- Transform3DGroup.cs
- ContentDisposition.cs