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
- UpdateManifestForBrowserApplication.cs
- XmlSerializerAssemblyAttribute.cs
- XmlSchemaChoice.cs
- ToolBarDesigner.cs
- DocumentViewerHelper.cs
- MatcherBuilder.cs
- CodeSnippetTypeMember.cs
- FrameAutomationPeer.cs
- XmlQualifiedName.cs
- SystemIPInterfaceProperties.cs
- FontWeightConverter.cs
- CodeTypeDeclaration.cs
- ResourceReferenceKeyNotFoundException.cs
- FileChangeNotifier.cs
- SmiConnection.cs
- Transform3DGroup.cs
- DecoderNLS.cs
- RoutedEventHandlerInfo.cs
- IdentifierService.cs
- TextTreeUndoUnit.cs
- FilterableAttribute.cs
- FontStyleConverter.cs
- PerfCounters.cs
- ChannelTracker.cs
- RegisteredScript.cs
- InputLanguage.cs
- BitmapEffectGroup.cs
- EditingCommands.cs
- PageParser.cs
- SeparatorAutomationPeer.cs
- ConfigurationManagerInternalFactory.cs
- DbInsertCommandTree.cs
- BaseCAMarshaler.cs
- SynchronizationLockException.cs
- TypeConstant.cs
- TransformerTypeCollection.cs
- ConfigurationValidatorAttribute.cs
- Transform3D.cs
- DynamicEntity.cs
- ServiceProviders.cs
- AppLevelCompilationSectionCache.cs
- ParseElementCollection.cs
- DrawToolTipEventArgs.cs
- BitmapFrameDecode.cs
- DelegateSerializationHolder.cs
- TreeViewItemAutomationPeer.cs
- DataGridViewCheckBoxCell.cs
- MonitoringDescriptionAttribute.cs
- VideoDrawing.cs
- NativeRecognizer.cs
- Pts.cs
- SchemaMerger.cs
- SqlCommand.cs
- HtmlInputText.cs
- ConfigXmlSignificantWhitespace.cs
- Viewport3DAutomationPeer.cs
- ExpressionEditorAttribute.cs
- EventData.cs
- DbProviderManifest.cs
- ObjectListTitleAttribute.cs
- PageBuildProvider.cs
- EntityContainerAssociationSetEnd.cs
- MetadataItem_Static.cs
- SendKeys.cs
- RepeaterItemEventArgs.cs
- ReadOnlyDictionary.cs
- Propagator.Evaluator.cs
- figurelengthconverter.cs
- StringWriter.cs
- DataRowChangeEvent.cs
- DirectoryLocalQuery.cs
- StreamUpdate.cs
- LogExtent.cs
- QilPatternVisitor.cs
- BlobPersonalizationState.cs
- XslTransform.cs
- EventListenerClientSide.cs
- EtwTrace.cs
- MemberBinding.cs
- UrlRoutingModule.cs
- mediapermission.cs
- PropertyBuilder.cs
- PipeException.cs
- TextEvent.cs
- DiffuseMaterial.cs
- UnauthorizedAccessException.cs
- StaticContext.cs
- XmlSerializerNamespaces.cs
- SqlColumnizer.cs
- SHA1Cng.cs
- MessageEncodingBindingElementImporter.cs
- StringArrayConverter.cs
- RSAOAEPKeyExchangeDeformatter.cs
- ServiceChannelManager.cs
- WebPartDescription.cs
- ReadonlyMessageFilter.cs
- DataColumnMappingCollection.cs
- MediaContext.cs
- MaterialGroup.cs
- selecteditemcollection.cs