Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / Serialization / System / Xml / XmlDictionary.cs / 1 / XmlDictionary.cs
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------
namespace System.Xml
{
using System;
using System.IO;
using System.Xml;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
using System.Runtime.Serialization;
public class XmlDictionary : IXmlDictionary
{
static IXmlDictionary empty;
Dictionary lookup;
XmlDictionaryString[] strings;
int nextId;
static public IXmlDictionary Empty
{
get
{
if (empty == null)
empty = new EmptyDictionary();
return empty;
}
}
public XmlDictionary()
{
this.lookup = new Dictionary();
this.strings = null;
this.nextId = 0;
}
public XmlDictionary(int capacity)
{
this.lookup = new Dictionary(capacity);
this.strings = new XmlDictionaryString[capacity];
this.nextId = 0;
}
public virtual XmlDictionaryString Add(string value)
{
XmlDictionaryString str;
if (!this.lookup.TryGetValue(value, out str))
{
if (this.strings == null)
{
this.strings = new XmlDictionaryString[4];
}
else if (this.nextId == this.strings.Length)
{
int newSize = this.nextId * 2;
if (newSize == 0)
newSize = 4;
Array.Resize(ref this.strings, newSize);
}
str = new XmlDictionaryString(this, value, this.nextId);
this.strings[this.nextId] = str;
this.lookup.Add(value, str);
this.nextId++;
}
return str;
}
public virtual bool TryLookup(string value, out XmlDictionaryString result)
{
return this.lookup.TryGetValue(value, out result);
}
public virtual bool TryLookup(int key, out XmlDictionaryString result)
{
if (key < 0 || key >= this.nextId)
{
result = null;
return false;
}
result = this.strings[key];
return true;
}
public virtual bool TryLookup(XmlDictionaryString value, out XmlDictionaryString result)
{
if (value == null)
throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("value"));
if (value.Dictionary != this)
{
result = null;
return false;
}
result = value;
return true;
}
class EmptyDictionary : IXmlDictionary
{
public bool TryLookup(string value, out XmlDictionaryString result)
{
result = null;
return false;
}
public bool TryLookup(int key, out XmlDictionaryString result)
{
result = null;
return false;
}
public bool TryLookup(XmlDictionaryString value, out XmlDictionaryString result)
{
result = null;
return false;
}
}
}
}
// 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
- NoPersistProperty.cs
- ApplicationBuildProvider.cs
- UserControlParser.cs
- RegistryKey.cs
- Rect3DConverter.cs
- DocumentOrderQuery.cs
- _WinHttpWebProxyDataBuilder.cs
- MobileErrorInfo.cs
- WebPartCollection.cs
- SchemaNamespaceManager.cs
- NavigationWindowAutomationPeer.cs
- PermissionAttributes.cs
- Wow64ConfigurationLoader.cs
- SelectionProcessor.cs
- SqlDataAdapter.cs
- ExtentJoinTreeNode.cs
- MLangCodePageEncoding.cs
- Pen.cs
- DesignerToolboxInfo.cs
- ShutDownListener.cs
- EncoderNLS.cs
- ValidatorCompatibilityHelper.cs
- TypeSemantics.cs
- ActivityXRefConverter.cs
- TreePrinter.cs
- RegexReplacement.cs
- ToolStripStatusLabel.cs
- _OSSOCK.cs
- SqlBuilder.cs
- SecurityRuntime.cs
- PreviewPageInfo.cs
- WindowsStatusBar.cs
- BaseTreeIterator.cs
- MsiStyleLogWriter.cs
- AppDomainUnloadedException.cs
- VisualTreeUtils.cs
- PropertyItemInternal.cs
- LogExtent.cs
- EncryptedPackage.cs
- Attributes.cs
- UnsafeMethods.cs
- CompilerWrapper.cs
- ScaleTransform.cs
- ComEventsInfo.cs
- Int32CollectionValueSerializer.cs
- HttpClientProtocol.cs
- ObjectSecurity.cs
- PackageRelationshipCollection.cs
- SettingsSection.cs
- XmlDataSource.cs
- ReferencedCollectionType.cs
- NavigationPropertyAccessor.cs
- SizeChangedInfo.cs
- EntityProviderFactory.cs
- GenericIdentity.cs
- FontNamesConverter.cs
- GlobalProxySelection.cs
- DbParameterHelper.cs
- DataSourceCollectionBase.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- NotificationContext.cs
- DynamicRouteExpression.cs
- BufferedGraphicsContext.cs
- AssemblyCollection.cs
- SessionPageStateSection.cs
- NamespaceCollection.cs
- WebConvert.cs
- WebCategoryAttribute.cs
- GlyphingCache.cs
- SafeLibraryHandle.cs
- ElementHostPropertyMap.cs
- PathFigureCollectionValueSerializer.cs
- FilterQuery.cs
- nulltextcontainer.cs
- MasterPageBuildProvider.cs
- WebBodyFormatMessageProperty.cs
- HttpCapabilitiesSectionHandler.cs
- PrimarySelectionAdorner.cs
- LogStore.cs
- Padding.cs
- FormViewInsertedEventArgs.cs
- TextFormatterContext.cs
- TogglePattern.cs
- FixedSOMGroup.cs
- FixedHyperLink.cs
- XdrBuilder.cs
- CalendarDay.cs
- NamespaceDecl.cs
- ModifierKeysValueSerializer.cs
- ClientProxyGenerator.cs
- PrefixQName.cs
- InputMethodStateChangeEventArgs.cs
- EventRecordWrittenEventArgs.cs
- RuleProcessor.cs
- SqlDataRecord.cs
- XamlPoint3DCollectionSerializer.cs
- SolidBrush.cs
- DesignTimeParseData.cs
- DocumentScope.cs
- ScrollProperties.cs