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
- SelectorAutomationPeer.cs
- UInt16.cs
- MulticastOption.cs
- RawKeyboardInputReport.cs
- GeneralTransformGroup.cs
- RelationshipEndCollection.cs
- _ProxyRegBlob.cs
- GeometryGroup.cs
- ObjectStateFormatter.cs
- SQLInt32.cs
- SizeFConverter.cs
- ReadOnlyState.cs
- SkipStoryboardToFill.cs
- IndentedWriter.cs
- PartBasedPackageProperties.cs
- ModelEditingScope.cs
- KeyedQueue.cs
- HttpProfileBase.cs
- SpotLight.cs
- EditorZoneBase.cs
- TickBar.cs
- TabItemAutomationPeer.cs
- ToolStripActionList.cs
- BlurBitmapEffect.cs
- formatstringdialog.cs
- CrossSiteScriptingValidation.cs
- TransformedBitmap.cs
- DataGridViewIntLinkedList.cs
- figurelengthconverter.cs
- ProgressBarBrushConverter.cs
- TextParagraphCache.cs
- Internal.cs
- ContextDataSource.cs
- EndpointDiscoveryBehavior.cs
- Matrix.cs
- WrappedIUnknown.cs
- PassportAuthenticationEventArgs.cs
- RightsManagementInformation.cs
- TemplateBindingExtensionConverter.cs
- SamlAttribute.cs
- XmlILTrace.cs
- TextServicesCompartmentEventSink.cs
- ToolBarButtonClickEvent.cs
- FlatButtonAppearance.cs
- DrawListViewColumnHeaderEventArgs.cs
- XmlSiteMapProvider.cs
- CodeAssignStatement.cs
- StackSpiller.Temps.cs
- SecureConversationDriver.cs
- BaseProcessor.cs
- MsiStyleLogWriter.cs
- PropertyGridView.cs
- SynchronizedCollection.cs
- ListDictionaryInternal.cs
- ObjectDataProvider.cs
- Button.cs
- PropertyReferenceSerializer.cs
- IdentityHolder.cs
- Input.cs
- ErrorRuntimeConfig.cs
- EventsTab.cs
- GridViewDeleteEventArgs.cs
- Exceptions.cs
- TypeDescriptionProviderAttribute.cs
- MethodInfo.cs
- TraceProvider.cs
- RegionIterator.cs
- WebPartTransformer.cs
- Merger.cs
- TraceContextRecord.cs
- SafeCloseHandleCritical.cs
- JournalEntryStack.cs
- SelectedGridItemChangedEvent.cs
- TdsParserHelperClasses.cs
- datacache.cs
- BasicExpressionVisitor.cs
- UnsafeNativeMethods.cs
- FixedFlowMap.cs
- IsolatedStorageFileStream.cs
- FtpWebRequest.cs
- StorageEntityTypeMapping.cs
- TagPrefixInfo.cs
- VerificationException.cs
- ObfuscateAssemblyAttribute.cs
- Classification.cs
- FormsAuthenticationUserCollection.cs
- SafeReversePInvokeHandle.cs
- OverflowException.cs
- Vector3DConverter.cs
- PerformanceCounter.cs
- TypeConverterHelper.cs
- Symbol.cs
- SystemIcmpV4Statistics.cs
- MetafileHeader.cs
- WebPartTransformerCollection.cs
- IdentitySection.cs
- ApplicationSecurityManager.cs
- XamlReaderHelper.cs
- WebBrowser.cs
- templategroup.cs