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
- PauseStoryboard.cs
- RSACryptoServiceProvider.cs
- Selection.cs
- WebPartMenu.cs
- FileDialog.cs
- FrameworkElement.cs
- DrawToolTipEventArgs.cs
- SiteMapDataSource.cs
- SettingsProviderCollection.cs
- EventBookmark.cs
- Currency.cs
- BamlResourceDeserializer.cs
- TextLine.cs
- OwnerDrawPropertyBag.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- SafeViewOfFileHandle.cs
- Model3D.cs
- IndexedEnumerable.cs
- HashLookup.cs
- XslCompiledTransform.cs
- ExpressionConverter.cs
- XPathAxisIterator.cs
- InvalidBodyAccessException.cs
- NameValuePair.cs
- SqlProviderManifest.cs
- AuthorizationRule.cs
- TypefaceCollection.cs
- DesignerVerbCollection.cs
- CompilerError.cs
- TableLayoutStyleCollection.cs
- ProviderConnectionPoint.cs
- ItemPager.cs
- ItemCheckEvent.cs
- Italic.cs
- LayoutUtils.cs
- ControlCachePolicy.cs
- StatusBarDrawItemEvent.cs
- ListBindableAttribute.cs
- SoapIncludeAttribute.cs
- SiteMapHierarchicalDataSourceView.cs
- LoginName.cs
- EdmValidator.cs
- StylusPlugInCollection.cs
- ProfileManager.cs
- OptimalBreakSession.cs
- InstanceKeyCompleteException.cs
- CodeTypeParameter.cs
- LockedActivityGlyph.cs
- BitmapMetadataEnumerator.cs
- CallbackValidator.cs
- CustomPeerResolverService.cs
- TemplatePagerField.cs
- RequestCacheEntry.cs
- OnOperation.cs
- DbProviderSpecificTypePropertyAttribute.cs
- Utils.cs
- AnnotationService.cs
- InheritablePropertyChangeInfo.cs
- ItemCollection.cs
- CFStream.cs
- VBCodeProvider.cs
- FontCacheUtil.cs
- FragmentQueryKB.cs
- WindowsListBox.cs
- ValueTypePropertyReference.cs
- DocComment.cs
- InvalidFilterCriteriaException.cs
- Expressions.cs
- SrgsElementFactoryCompiler.cs
- MenuCommands.cs
- TextureBrush.cs
- WmlLinkAdapter.cs
- CategoryGridEntry.cs
- EntityDataSourceReferenceGroup.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- MeasureItemEvent.cs
- WebDisplayNameAttribute.cs
- UriWriter.cs
- QueryContinueDragEventArgs.cs
- VisualTreeHelper.cs
- LookupBindingPropertiesAttribute.cs
- PathSegmentCollection.cs
- Logging.cs
- DataGridColumnFloatingHeader.cs
- RowsCopiedEventArgs.cs
- Utilities.cs
- WebConfigurationManager.cs
- TextServicesDisplayAttribute.cs
- ListCommandEventArgs.cs
- TypeConverterAttribute.cs
- ComponentRenameEvent.cs
- DiagnosticsConfigurationHandler.cs
- COM2ExtendedBrowsingHandler.cs
- DataBoundControlHelper.cs
- EventHandlersStore.cs
- ContextStaticAttribute.cs
- IdentityModelStringsVersion1.cs
- ConnectionsZoneAutoFormat.cs
- VectorCollectionConverter.cs
- DrawingAttributesDefaultValueFactory.cs