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
- KeyManager.cs
- TdsParameterSetter.cs
- UpdateManifestForBrowserApplication.cs
- SizeF.cs
- FileDialog.cs
- DataGridViewControlCollection.cs
- mediaeventargs.cs
- OleDbDataAdapter.cs
- InfoCardKeyedHashAlgorithm.cs
- SelectedDatesCollection.cs
- GroupPartitionExpr.cs
- ProcessHostFactoryHelper.cs
- MaskInputRejectedEventArgs.cs
- SafeNativeMethods.cs
- RegexCompiler.cs
- ArgIterator.cs
- AnalyzedTree.cs
- IdleTimeoutMonitor.cs
- ConnectionManagementElement.cs
- HttpSessionStateBase.cs
- GeneralTransform3D.cs
- SourceElementsCollection.cs
- Helper.cs
- LabelEditEvent.cs
- SecurityException.cs
- PrintSystemException.cs
- NamedPipeTransportManager.cs
- altserialization.cs
- StyleTypedPropertyAttribute.cs
- MetroSerializationManager.cs
- ConfigurationSectionGroup.cs
- Typography.cs
- ScriptReference.cs
- TagPrefixAttribute.cs
- DataGridViewRowHeaderCell.cs
- ConfigPathUtility.cs
- AutomationProperties.cs
- ProtocolsConfigurationEntry.cs
- Int64.cs
- NameValueSectionHandler.cs
- XmlMapping.cs
- AnnotationObservableCollection.cs
- HostedHttpContext.cs
- CallbackHandler.cs
- RegexGroupCollection.cs
- BigInt.cs
- MenuTracker.cs
- Error.cs
- FixedDocumentPaginator.cs
- SQLMembershipProvider.cs
- DrawingState.cs
- Duration.cs
- DependsOnAttribute.cs
- SimpleBitVector32.cs
- XamlWriter.cs
- MenuItem.cs
- DataViewSetting.cs
- Vector3DValueSerializer.cs
- WebPartDeleteVerb.cs
- BevelBitmapEffect.cs
- SqlDataSourceCommandParser.cs
- ContainerControl.cs
- _AcceptOverlappedAsyncResult.cs
- ExternalCalls.cs
- XsdBuildProvider.cs
- FileDialog_Vista.cs
- ManageRequest.cs
- ElementInit.cs
- ClientBuildManager.cs
- HtmlTernaryTree.cs
- EUCJPEncoding.cs
- BehaviorEditorPart.cs
- SiteIdentityPermission.cs
- SetterBaseCollection.cs
- CheckBoxField.cs
- XmlElementList.cs
- SHA1Managed.cs
- CreateParams.cs
- Policy.cs
- WebPartCollection.cs
- ApplicationManager.cs
- AppearanceEditorPart.cs
- InternalsVisibleToAttribute.cs
- IntellisenseTextBox.designer.cs
- ListViewGroup.cs
- DesignerActionUIStateChangeEventArgs.cs
- FeatureSupport.cs
- Mutex.cs
- CollectionContainer.cs
- BindingExpressionBase.cs
- ClientTargetSection.cs
- Stack.cs
- TextParagraphView.cs
- IgnoreFlushAndCloseStream.cs
- AppDomainInfo.cs
- ByteFacetDescriptionElement.cs
- _AutoWebProxyScriptHelper.cs
- CqlLexerHelpers.cs
- PermissionToken.cs
- RoutedPropertyChangedEventArgs.cs