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
- XmlTextReader.cs
- QueueSurrogate.cs
- Table.cs
- RequestNavigateEventArgs.cs
- DefaultProxySection.cs
- DataGridViewImageCell.cs
- AddInEnvironment.cs
- cache.cs
- MetadataItemSerializer.cs
- Metadata.cs
- UpdateTranslator.cs
- XdrBuilder.cs
- Stream.cs
- cookie.cs
- Int32Rect.cs
- XPathException.cs
- ADMembershipUser.cs
- OAVariantLib.cs
- HttpProcessUtility.cs
- HtmlShimManager.cs
- LabelLiteral.cs
- SafeNativeMethods.cs
- ComboBox.cs
- DataGridViewAdvancedBorderStyle.cs
- ExportException.cs
- AuthenticationManager.cs
- BinHexEncoder.cs
- CachedCompositeFamily.cs
- AccessibleObject.cs
- SoapParser.cs
- DataSourceHelper.cs
- ToolStripSeparator.cs
- ConditionalDesigner.cs
- DataGridViewCellCancelEventArgs.cs
- HistoryEventArgs.cs
- ContainerSelectorGlyph.cs
- SecurityHelper.cs
- DesignerTransaction.cs
- ApplicationInterop.cs
- MessageBox.cs
- DesignerRegionMouseEventArgs.cs
- _Win32.cs
- MetadataItemSerializer.cs
- DataServiceContext.cs
- BitmapEffectDrawingContent.cs
- DeflateStream.cs
- Pair.cs
- DeviceSpecific.cs
- FormsAuthenticationCredentials.cs
- DocumentViewerAutomationPeer.cs
- DirectoryInfo.cs
- SmiContextFactory.cs
- HandleCollector.cs
- ContentElement.cs
- CornerRadius.cs
- MonthCalendar.cs
- NativeMethodsOther.cs
- DBConnection.cs
- ChangeBlockUndoRecord.cs
- ParseElement.cs
- DataGridItem.cs
- LayoutEngine.cs
- DataPagerField.cs
- ClassHandlersStore.cs
- HtmlTableCell.cs
- RangeValidator.cs
- WindowsListViewGroupSubsetLink.cs
- SchemaDeclBase.cs
- StringStorage.cs
- namescope.cs
- JsonSerializer.cs
- PersonalizationStateQuery.cs
- HyperlinkAutomationPeer.cs
- RIPEMD160.cs
- CustomCredentialPolicy.cs
- Model3D.cs
- ProcessHostFactoryHelper.cs
- SpecularMaterial.cs
- Label.cs
- ObjectContextServiceProvider.cs
- ProjectionPruner.cs
- AssemblyBuilder.cs
- ArgumentReference.cs
- MessageQueueEnumerator.cs
- ToolStripComboBox.cs
- BuilderPropertyEntry.cs
- Int32CollectionConverter.cs
- CustomLineCap.cs
- ProviderIncompatibleException.cs
- InputLanguage.cs
- CornerRadiusConverter.cs
- TreeViewImageKeyConverter.cs
- ServiceBehaviorAttribute.cs
- WindowsStatusBar.cs
- XmlIlTypeHelper.cs
- BreakRecordTable.cs
- PolyLineSegmentFigureLogic.cs
- BitmapCache.cs
- FileFormatException.cs
- WindowsPrincipal.cs