Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- QueryResultOp.cs
- KeyboardDevice.cs
- ZipIOExtraFieldElement.cs
- ContainerVisual.cs
- SqlDataSourceSelectingEventArgs.cs
- TextOptions.cs
- CollectionViewGroupRoot.cs
- WindowsIdentity.cs
- Encoding.cs
- SelectionPatternIdentifiers.cs
- SrgsSubset.cs
- ObjectReferenceStack.cs
- FieldMetadata.cs
- LambdaCompiler.Unary.cs
- FlowDocument.cs
- RemoteHelper.cs
- x509utils.cs
- TableParagraph.cs
- Privilege.cs
- PeerEndPoint.cs
- InvocationExpression.cs
- ServiceModelReg.cs
- TabControlCancelEvent.cs
- securitycriticaldata.cs
- StorageRoot.cs
- XmlSchemaSubstitutionGroup.cs
- BindingElementExtensionElement.cs
- DecodeHelper.cs
- SerializationTrace.cs
- DynamicPropertyReader.cs
- StringReader.cs
- ChangeTracker.cs
- HttpDebugHandler.cs
- OleServicesContext.cs
- SchemaMerger.cs
- SpeechSynthesizer.cs
- MsmqInputMessage.cs
- ApplicationBuildProvider.cs
- RuleAttributes.cs
- PackageDigitalSignature.cs
- CurrentTimeZone.cs
- MemoryFailPoint.cs
- HwndHost.cs
- Registration.cs
- DbFunctionCommandTree.cs
- MexHttpBindingElement.cs
- EllipseGeometry.cs
- SpnegoTokenProvider.cs
- OuterGlowBitmapEffect.cs
- NamespaceEmitter.cs
- WmiPutTraceRecord.cs
- AccessKeyManager.cs
- _SslSessionsCache.cs
- FileRecordSequenceCompletedAsyncResult.cs
- MulticastIPAddressInformationCollection.cs
- HtmlTableCellCollection.cs
- OutputWindow.cs
- ReferencedCollectionType.cs
- ThreadExceptionEvent.cs
- ReferencedType.cs
- Matrix3DConverter.cs
- WebResponse.cs
- SafeThemeHandle.cs
- DataRowView.cs
- TabControlAutomationPeer.cs
- FamilyCollection.cs
- FileDetails.cs
- WorkflowInvoker.cs
- ToolStripRenderEventArgs.cs
- BoundColumn.cs
- MessageLoggingElement.cs
- SecurityValidationBehavior.cs
- TimeSpanConverter.cs
- KeyProperty.cs
- OutputCacheProfile.cs
- ArgIterator.cs
- MatrixCamera.cs
- NativeObjectSecurity.cs
- UpdateExpressionVisitor.cs
- AliasExpr.cs
- CfgSemanticTag.cs
- ModulesEntry.cs
- Component.cs
- TypedElement.cs
- StreamInfo.cs
- Resources.Designer.cs
- ToolStripItemTextRenderEventArgs.cs
- XhtmlCssHandler.cs
- ViewPort3D.cs
- StrokeNodeOperations2.cs
- CustomErrorsSection.cs
- WebPartEventArgs.cs
- ExpressionReplacer.cs
- RegionIterator.cs
- ActionFrame.cs
- ProfileManager.cs
- BlockUIContainer.cs
- LineServices.cs
- QuaternionRotation3D.cs
- EnumMemberAttribute.cs