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
- EFAssociationProvider.cs
- DataGridViewRowConverter.cs
- SafeNativeMethodsMilCoreApi.cs
- MessageQueuePermissionEntry.cs
- LabelLiteral.cs
- AdPostCacheSubstitution.cs
- DebugHandleTracker.cs
- ValuePatternIdentifiers.cs
- HelpOperationInvoker.cs
- FolderBrowserDialog.cs
- ScrollEvent.cs
- SHA1.cs
- VersionPair.cs
- Pkcs7Recipient.cs
- EmbeddedObject.cs
- CircleEase.cs
- Certificate.cs
- StrongNameIdentityPermission.cs
- TypeName.cs
- ReflectionTypeLoadException.cs
- ConstructorBuilder.cs
- HttpCapabilitiesSectionHandler.cs
- InputEventArgs.cs
- BufferedResponseStream.cs
- XslNumber.cs
- StorageModelBuildProvider.cs
- RootBrowserWindowAutomationPeer.cs
- versioninfo.cs
- GroupBoxRenderer.cs
- xamlnodes.cs
- TextTreeRootTextBlock.cs
- WsatServiceCertificate.cs
- NameValuePair.cs
- CodeLinePragma.cs
- WebPartConnectionsConnectVerb.cs
- MemberCollection.cs
- ForEach.cs
- DesignerImageAdapter.cs
- RuleValidation.cs
- ArgumentFixer.cs
- SoapAttributeOverrides.cs
- SQLByte.cs
- Classification.cs
- _ConnectionGroup.cs
- ChannelSinkStacks.cs
- XmlMapping.cs
- GregorianCalendar.cs
- UserNamePasswordValidator.cs
- SplitterPanelDesigner.cs
- TextBox.cs
- ParamArrayAttribute.cs
- SecurityStandardsManager.cs
- DataGridViewRowStateChangedEventArgs.cs
- DriveNotFoundException.cs
- DataSourceView.cs
- TagPrefixAttribute.cs
- ArrayConverter.cs
- FileInfo.cs
- InsufficientMemoryException.cs
- MulticastNotSupportedException.cs
- MemberDomainMap.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- DragCompletedEventArgs.cs
- WeakEventManager.cs
- BaseAppDomainProtocolHandler.cs
- LocationReferenceEnvironment.cs
- IdentitySection.cs
- HtmlShim.cs
- BitmapDecoder.cs
- StackBuilderSink.cs
- HttpStaticObjectsCollectionBase.cs
- CLSCompliantAttribute.cs
- RetrieveVirtualItemEventArgs.cs
- Manipulation.cs
- DataGridLinkButton.cs
- EntityDataSourceWrapperPropertyDescriptor.cs
- PriorityItem.cs
- XmlSigningNodeWriter.cs
- ParameterModifier.cs
- QueryRewriter.cs
- ToolStripSeparator.cs
- CounterCreationData.cs
- WorkflowViewStateService.cs
- ISAPIWorkerRequest.cs
- CodeBlockBuilder.cs
- DispatcherTimer.cs
- ConfigXmlAttribute.cs
- SafeRightsManagementHandle.cs
- TextAction.cs
- IndexedDataBuffer.cs
- DuplexChannelBinder.cs
- FileDialog_Vista_Interop.cs
- TabControl.cs
- DataSourceCacheDurationConverter.cs
- OdbcPermission.cs
- SqlBinder.cs
- FillBehavior.cs
- HashMembershipCondition.cs
- TriggerCollection.cs
- SurrogateEncoder.cs