Code:
/ 4.0 / 4.0 / 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. //-------------------------------------------------------- // 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
- ProtocolsConfiguration.cs
- IPPacketInformation.cs
- DependsOnAttribute.cs
- ConnectionsZone.cs
- OperationAbortedException.cs
- Int32Rect.cs
- TypeConverterAttribute.cs
- WindowsFormsHostAutomationPeer.cs
- ListViewAutomationPeer.cs
- PrivilegeNotHeldException.cs
- OleDbWrapper.cs
- MenuAdapter.cs
- BaseTemplateParser.cs
- HelpEvent.cs
- GenericTypeParameterBuilder.cs
- RuntimeEnvironment.cs
- TypeValidationEventArgs.cs
- PropertySet.cs
- NetworkCredential.cs
- Transform3D.cs
- KnownTypesProvider.cs
- WebMessageBodyStyleHelper.cs
- Debug.cs
- IncomingWebResponseContext.cs
- TemplateComponentConnector.cs
- SettingsContext.cs
- TreeChangeInfo.cs
- ConstantExpression.cs
- Options.cs
- _AuthenticationState.cs
- ExtentKey.cs
- Completion.cs
- DetailsViewCommandEventArgs.cs
- DesignerFrame.cs
- ConnectionInterfaceCollection.cs
- ClientTargetCollection.cs
- HMACMD5.cs
- DispatcherFrame.cs
- SelectionItemPattern.cs
- FormatConvertedBitmap.cs
- OdbcRowUpdatingEvent.cs
- ArrayListCollectionBase.cs
- SecurityPermission.cs
- CodeVariableDeclarationStatement.cs
- DataGridTextColumn.cs
- ListViewItemMouseHoverEvent.cs
- CustomErrorsSection.cs
- CodeStatementCollection.cs
- ConfigurationErrorsException.cs
- InkCanvas.cs
- HybridDictionary.cs
- OracleConnection.cs
- ProcessManager.cs
- BaseTreeIterator.cs
- FilteredDataSetHelper.cs
- WebReferencesBuildProvider.cs
- IndexExpression.cs
- SafeRightsManagementHandle.cs
- PolyBezierSegmentFigureLogic.cs
- OlePropertyStructs.cs
- AsnEncodedData.cs
- RenderDataDrawingContext.cs
- TdsParserStaticMethods.cs
- SmiEventSink_Default.cs
- Double.cs
- HtmlContainerControl.cs
- DefaultPropertyAttribute.cs
- ContentFilePart.cs
- DataServiceQueryProvider.cs
- RemoteWebConfigurationHost.cs
- SafeBitVector32.cs
- ParameterToken.cs
- ButtonChrome.cs
- UIntPtr.cs
- SqlBulkCopyColumnMappingCollection.cs
- EndpointDiscoveryMetadataCD1.cs
- MergeFilterQuery.cs
- PhysicalOps.cs
- ProfilePropertyNameValidator.cs
- updateconfighost.cs
- SecureUICommand.cs
- TextEvent.cs
- GridViewRowCollection.cs
- NullableBoolConverter.cs
- TextTreeNode.cs
- ListBox.cs
- Compiler.cs
- CapacityStreamGeometryContext.cs
- DataControlField.cs
- CloseSequenceResponse.cs
- ToolStripPanel.cs
- DataTableCollection.cs
- shaperfactory.cs
- CodeParameterDeclarationExpressionCollection.cs
- InternalSendMessage.cs
- ListBindingConverter.cs
- ObjectDataSourceSelectingEventArgs.cs
- Function.cs
- MappedMetaModel.cs
- OutputCacheProfileCollection.cs