Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- BamlTreeUpdater.cs
- MULTI_QI.cs
- ArrayList.cs
- OptimalTextSource.cs
- FilterElement.cs
- HttpListenerPrefixCollection.cs
- DeadLetterQueue.cs
- XhtmlBasicPanelAdapter.cs
- SafeFileMapViewHandle.cs
- AutoCompleteStringCollection.cs
- HandleRef.cs
- PerformanceCounter.cs
- CodeRegionDirective.cs
- SecurityDescriptor.cs
- PointAnimation.cs
- StringOutput.cs
- Triplet.cs
- ValueConversionAttribute.cs
- ValidationHelper.cs
- ISAPIRuntime.cs
- ToolStripItemRenderEventArgs.cs
- MailMessageEventArgs.cs
- SessionParameter.cs
- BigInt.cs
- QueryStringHandler.cs
- SingleObjectCollection.cs
- InstancePersistence.cs
- DrawingBrush.cs
- XmlSchemaSimpleTypeRestriction.cs
- InstanceKey.cs
- PreviewPrintController.cs
- TextSimpleMarkerProperties.cs
- HiddenField.cs
- WebPartConnectionsCancelVerb.cs
- Base64Encoder.cs
- HotCommands.cs
- CodeAttributeDeclaration.cs
- MimeBasePart.cs
- HtmlShim.cs
- TabControlAutomationPeer.cs
- SystemParameters.cs
- DocumentsTrace.cs
- ImmutableObjectAttribute.cs
- SubMenuStyle.cs
- JsonFormatWriterGenerator.cs
- ByValueEqualityComparer.cs
- SafeSecurityHelper.cs
- DataTableClearEvent.cs
- CapabilitiesAssignment.cs
- MediaCommands.cs
- PropertyEmitterBase.cs
- ListManagerBindingsCollection.cs
- HttpHandlerAction.cs
- MiniParameterInfo.cs
- RuntimeConfig.cs
- DbLambda.cs
- CompressedStack.cs
- BindingContext.cs
- ModifierKeysValueSerializer.cs
- DiagnosticsConfiguration.cs
- IncomingWebRequestContext.cs
- UriExt.cs
- PrintPageEvent.cs
- ChameleonKey.cs
- X509CertificateRecipientServiceCredential.cs
- TypeDelegator.cs
- TabRenderer.cs
- PermissionToken.cs
- SmtpDigestAuthenticationModule.cs
- GroupStyle.cs
- WorkflowShape.cs
- XmlSignificantWhitespace.cs
- BasicAsyncResult.cs
- InfoCardMasterKey.cs
- RemotingSurrogateSelector.cs
- FontConverter.cs
- WebPartActionVerb.cs
- UDPClient.cs
- FixedSOMLineCollection.cs
- DesignTimeType.cs
- FixedTextBuilder.cs
- HttpModulesSection.cs
- MgmtConfigurationRecord.cs
- HttpHandlersSection.cs
- IsolatedStorageException.cs
- PerformanceCounterPermission.cs
- QilNode.cs
- DurableErrorHandler.cs
- StatusBar.cs
- ClientApiGenerator.cs
- BuildProviderCollection.cs
- ImageKeyConverter.cs
- CompilerScope.Storage.cs
- VsPropertyGrid.cs
- NativeCompoundFileAPIs.cs
- SoapMessage.cs
- DCSafeHandle.cs
- PrintDialog.cs
- _AutoWebProxyScriptWrapper.cs
- ResourceAssociationType.cs