Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Framework / MS / Internal / Globalization / BamlResourceSerializer.cs / 1 / BamlResourceSerializer.cs
//--------------------------------------------------------
// Class that implements BamlResourceSerializer
//
// Created: [....] @ 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
- ApplicationHost.cs
- XamlTypeMapper.cs
- ConfigXmlComment.cs
- AbsoluteQuery.cs
- GlyphInfoList.cs
- PreProcessInputEventArgs.cs
- ConnectionStringEditor.cs
- TreeNodeEventArgs.cs
- TableCellCollection.cs
- QueryOperatorEnumerator.cs
- Win32Exception.cs
- OleDbReferenceCollection.cs
- MobileControlsSectionHelper.cs
- HttpCookiesSection.cs
- ContextMenuStrip.cs
- WindowsFormsHelpers.cs
- SamlEvidence.cs
- DashStyle.cs
- ParserHooks.cs
- XsdBuildProvider.cs
- ByteStream.cs
- TypeUtils.cs
- PreviewKeyDownEventArgs.cs
- Win32.cs
- AmbientProperties.cs
- AutomationPatternInfo.cs
- DetailsViewPagerRow.cs
- WeakEventTable.cs
- UserValidatedEventArgs.cs
- OdbcConnectionFactory.cs
- NativeMethods.cs
- SecurityTokenAuthenticator.cs
- DbgUtil.cs
- RadioButton.cs
- ThreadInterruptedException.cs
- CollectionViewSource.cs
- RoleGroup.cs
- TimersDescriptionAttribute.cs
- WebZone.cs
- TypeNameParser.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- DbXmlEnabledProviderManifest.cs
- RoutingSection.cs
- XmlIncludeAttribute.cs
- WebFaultClientMessageInspector.cs
- CheckedListBox.cs
- EditorPartDesigner.cs
- DefaultPropertyAttribute.cs
- RectangleGeometry.cs
- WebPartVerbCollection.cs
- CompiledXpathExpr.cs
- ping.cs
- LinqDataSourceDisposeEventArgs.cs
- Stylus.cs
- PropVariant.cs
- VersionedStreamOwner.cs
- InternalMappingException.cs
- DbConnectionOptions.cs
- OutKeywords.cs
- TextLineBreak.cs
- TransformConverter.cs
- SqlResolver.cs
- StringBuilder.cs
- CompilerGeneratedAttribute.cs
- QilChoice.cs
- BitHelper.cs
- PatternMatcher.cs
- MenuItem.cs
- GridViewUpdatedEventArgs.cs
- Font.cs
- BufferBuilder.cs
- CompatibleIComparer.cs
- MatrixTransform.cs
- ContextMenu.cs
- EditingCoordinator.cs
- SelectionService.cs
- Overlapped.cs
- UIElementIsland.cs
- FileRecordSequenceHelper.cs
- ReturnType.cs
- HttpRequestBase.cs
- IPEndPoint.cs
- HttpHandlerActionCollection.cs
- HtmlEmptyTagControlBuilder.cs
- SqlServer2KCompatibilityCheck.cs
- BaseTreeIterator.cs
- ErrorFormatterPage.cs
- ProcessingInstructionAction.cs
- IImplicitResourceProvider.cs
- BindingValueChangedEventArgs.cs
- RepeatButtonAutomationPeer.cs
- DependentList.cs
- XmlSchemaFacet.cs
- SqlDependencyUtils.cs
- Int16KeyFrameCollection.cs
- TemplateBindingExtensionConverter.cs
- XmlSchemaInclude.cs
- FrameworkContentElementAutomationPeer.cs
- RowToFieldTransformer.cs
- XmlDomTextWriter.cs