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
- DecoderBestFitFallback.cs
- TemplateControlCodeDomTreeGenerator.cs
- CollectionBase.cs
- ListViewGroupItemCollection.cs
- ConditionalAttribute.cs
- ScalarOps.cs
- DbParameterCollection.cs
- DataGridPagerStyle.cs
- NativeMethods.cs
- ProcessHost.cs
- SafeRightsManagementSessionHandle.cs
- ThreadExceptionDialog.cs
- LambdaCompiler.Address.cs
- StrokeCollectionConverter.cs
- SerializationAttributes.cs
- TypeRestriction.cs
- CategoryAttribute.cs
- _StreamFramer.cs
- NavigationProgressEventArgs.cs
- EncodingDataItem.cs
- ByteStreamMessageEncoder.cs
- ConfigXmlAttribute.cs
- SafeFindHandle.cs
- TableStyle.cs
- QilDataSource.cs
- WebPartZoneCollection.cs
- XmlSchemaDatatype.cs
- PngBitmapEncoder.cs
- ToolStripOverflow.cs
- StateDesigner.cs
- XmlAttributeCollection.cs
- X509SecurityTokenAuthenticator.cs
- WeakReferenceList.cs
- BuildManagerHost.cs
- ManagementException.cs
- ReadOnlyHierarchicalDataSource.cs
- CubicEase.cs
- CodeMethodInvokeExpression.cs
- UIElement.cs
- StateMachineAction.cs
- DerivedKeySecurityTokenStub.cs
- PrePrepareMethodAttribute.cs
- Menu.cs
- HttpHandlersInstallComponent.cs
- DbConnectionStringCommon.cs
- MaskedTextBoxDesigner.cs
- ReadOnlyAttribute.cs
- DesignerGenericWebPart.cs
- SQLCharsStorage.cs
- DataViewManagerListItemTypeDescriptor.cs
- TypeDependencyAttribute.cs
- HttpsHostedTransportConfiguration.cs
- BrowserInteropHelper.cs
- DataBindEngine.cs
- ClientScriptManagerWrapper.cs
- ProcessHost.cs
- StreamAsIStream.cs
- FieldToken.cs
- Animatable.cs
- Accessors.cs
- _IPv4Address.cs
- TextCollapsingProperties.cs
- StringConcat.cs
- EmptyControlCollection.cs
- BindingElement.cs
- Image.cs
- FrugalMap.cs
- HtmlControlPersistable.cs
- WizardSideBarListControlItemEventArgs.cs
- MimeReturn.cs
- FixedSOMFixedBlock.cs
- FastEncoderWindow.cs
- CLSCompliantAttribute.cs
- StateManagedCollection.cs
- BitmapEffectInput.cs
- CreateUserWizardStep.cs
- TypeReference.cs
- DynamicDocumentPaginator.cs
- CalendarDataBindingHandler.cs
- SystemGatewayIPAddressInformation.cs
- SafeFindHandle.cs
- ParserExtension.cs
- CodeEntryPointMethod.cs
- HostElement.cs
- CompModSwitches.cs
- WindowsToolbarAsMenu.cs
- ErrorHandler.cs
- KeyValuePairs.cs
- _UriSyntax.cs
- DeploymentSectionCache.cs
- ResourceCategoryAttribute.cs
- FtpWebRequest.cs
- State.cs
- ToolStripSplitStackLayout.cs
- ValueUtilsSmi.cs
- RubberbandSelector.cs
- ResolveResponseInfo.cs
- TreeNodeEventArgs.cs
- X509ScopedServiceCertificateElementCollection.cs
- MediaPlayer.cs