Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / Serialization / System / Xml / XmlDictionary.cs / 1305376 / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SafeRightsManagementQueryHandle.cs
- KeyInfo.cs
- NotifyParentPropertyAttribute.cs
- FtpWebResponse.cs
- NativeConfigurationLoader.cs
- CustomLineCap.cs
- StaticResourceExtension.cs
- WrapperEqualityComparer.cs
- XmlQueryOutput.cs
- FieldAccessException.cs
- ReadOnlyDictionary.cs
- TemplateField.cs
- DoubleStorage.cs
- RowType.cs
- TimeEnumHelper.cs
- ExtendedPropertiesHandler.cs
- WebBrowserNavigatingEventHandler.cs
- UniqueTransportManagerRegistration.cs
- Message.cs
- DWriteFactory.cs
- DispatcherTimer.cs
- TextParaClient.cs
- DependencyPropertyChangedEventArgs.cs
- Pkcs7Recipient.cs
- ZipIOCentralDirectoryBlock.cs
- MenuItemCollection.cs
- ResXResourceWriter.cs
- DataGridItem.cs
- DataGridLength.cs
- CategoryGridEntry.cs
- ConfigDefinitionUpdates.cs
- DocumentOrderComparer.cs
- PropertyEmitterBase.cs
- ModelUIElement3D.cs
- ClassValidator.cs
- OleDbReferenceCollection.cs
- FormViewInsertedEventArgs.cs
- unsafenativemethodsother.cs
- CustomError.cs
- MethodToken.cs
- ObjectSecurity.cs
- MaskedTextProvider.cs
- InstancePersistence.cs
- FullTextState.cs
- CounterCreationDataCollection.cs
- HtmlWindow.cs
- ObjectQueryExecutionPlan.cs
- PartialCachingAttribute.cs
- XmlEncoding.cs
- LinearGradientBrush.cs
- DaylightTime.cs
- ConnectionManagementSection.cs
- odbcmetadatacolumnnames.cs
- XmlSerializer.cs
- DiscoveryDocumentSearchPattern.cs
- XmlEntity.cs
- RTLAwareMessageBox.cs
- MappingException.cs
- MonitoringDescriptionAttribute.cs
- FrameworkContentElement.cs
- ReadOnlyDataSourceView.cs
- ClientTarget.cs
- XmlBoundElement.cs
- EventLogEntry.cs
- DataGridViewCheckBoxCell.cs
- DrawingState.cs
- SmtpDigestAuthenticationModule.cs
- DataListDesigner.cs
- IconBitmapDecoder.cs
- ContextItemManager.cs
- DesignerActionGlyph.cs
- MetadataPropertyCollection.cs
- AssemblyAttributes.cs
- Pair.cs
- Activity.cs
- NativeMethods.cs
- X509Utils.cs
- ObjectManager.cs
- XmlSchemaSimpleTypeUnion.cs
- UndoEngine.cs
- IPipelineRuntime.cs
- TextEvent.cs
- WebPartAuthorizationEventArgs.cs
- HtmlInputSubmit.cs
- ObjectSpanRewriter.cs
- ElementsClipboardData.cs
- Schema.cs
- WasAdminWrapper.cs
- RuntimeCompatibilityAttribute.cs
- BinaryFormatterWriter.cs
- HostVisual.cs
- FileSystemEventArgs.cs
- TreeView.cs
- SchemaCollectionPreprocessor.cs
- TouchFrameEventArgs.cs
- EventLogException.cs
- Path.cs
- AudioException.cs
- SamlConditions.cs
- ValidationEventArgs.cs