Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / ServiceModelDictionary.cs / 1 / ServiceModelDictionary.cs
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------
namespace System.ServiceModel
{
using System.Xml;
using System.Collections.Generic;
class ServiceModelDictionary : IXmlDictionary
{
static public readonly ServiceModelDictionary Version1 = new ServiceModelDictionary(new ServiceModelStringsVersion1());
ServiceModelStrings strings;
int count;
XmlDictionaryString[] dictionaryStrings1;
XmlDictionaryString[] dictionaryStrings2;
Dictionary dictionary;
XmlDictionaryString[] versionedDictionaryStrings;
public ServiceModelDictionary(ServiceModelStrings strings)
{
this.strings = strings;
this.count = strings.Count;
}
static public ServiceModelDictionary CurrentVersion
{
get
{
return Version1;
}
}
public XmlDictionaryString CreateString(string value, int key)
{
return new XmlDictionaryString(this, value, key);
}
public bool TryLookup(string key, out XmlDictionaryString value)
{
if (key == null)
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("key"));
if (this.dictionary == null)
{
Dictionary dictionary = new Dictionary(count);
for (int i = 0; i < count; i++)
dictionary.Add(strings[i], i);
this.dictionary = dictionary;
}
int id;
if (this.dictionary.TryGetValue(key, out id))
return TryLookup(id, out value);
value = null;
return false;
}
public bool TryLookup(int key, out XmlDictionaryString value)
{
const int keyThreshold = 32;
if (key < 0 || key >= count)
{
value = null;
return false;
}
XmlDictionaryString s;
if (key < keyThreshold)
{
if (dictionaryStrings1 == null)
dictionaryStrings1 = new XmlDictionaryString[keyThreshold];
s = dictionaryStrings1[key];
if (s == null)
{
s = CreateString(strings[key], key);
dictionaryStrings1[key] = s;
}
}
else
{
if (dictionaryStrings2 == null)
dictionaryStrings2 = new XmlDictionaryString[count - keyThreshold];
s = dictionaryStrings2[key - keyThreshold];
if (s == null)
{
s = CreateString(strings[key], key);
dictionaryStrings2[key - keyThreshold] = s;
}
}
value = s;
return true;
}
public bool TryLookup(XmlDictionaryString key, out XmlDictionaryString value)
{
if (key == null)
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("key"));
if (key.Dictionary == this)
{
value = key;
return true;
}
if (key.Dictionary == CurrentVersion)
{
if (versionedDictionaryStrings == null)
versionedDictionaryStrings = new XmlDictionaryString[CurrentVersion.count];
XmlDictionaryString s = versionedDictionaryStrings[key.Key];
if (s == null)
{
if (!TryLookup(key.Value, out s))
{
value = null;
return false;
}
versionedDictionaryStrings[key.Key] = s;
}
value = s;
return true;
}
value = 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
- SimpleBitVector32.cs
- ColumnMapProcessor.cs
- WsdlInspector.cs
- XmlSchemas.cs
- AsymmetricCryptoHandle.cs
- MediaSystem.cs
- ColorConvertedBitmap.cs
- latinshape.cs
- EnumValAlphaComparer.cs
- IndexedString.cs
- DataTableNameHandler.cs
- LoadItemsEventArgs.cs
- ObjectAssociationEndMapping.cs
- SamlEvidence.cs
- AspNetSynchronizationContext.cs
- VectorKeyFrameCollection.cs
- OptimalTextSource.cs
- WebPartMenuStyle.cs
- ValidationErrorCollection.cs
- MimePart.cs
- CFGGrammar.cs
- DataGridViewComboBoxCell.cs
- DockPanel.cs
- RequestResizeEvent.cs
- Int32.cs
- DrawListViewColumnHeaderEventArgs.cs
- ColorTransformHelper.cs
- Binding.cs
- XmlDataProvider.cs
- DataRowCollection.cs
- ZipArchive.cs
- LogReservationCollection.cs
- XmlSchemaComplexContentRestriction.cs
- WaitHandle.cs
- WebRequestModuleElement.cs
- KeyedHashAlgorithm.cs
- ProcessHost.cs
- DataObjectMethodAttribute.cs
- XmlTypeAttribute.cs
- SecurityManager.cs
- DataGrid.cs
- MenuEventArgs.cs
- Image.cs
- MetadataItemCollectionFactory.cs
- SpellerInterop.cs
- SocketInformation.cs
- BaseInfoTable.cs
- Msmq4PoisonHandler.cs
- SponsorHelper.cs
- ASCIIEncoding.cs
- HtmlLabelAdapter.cs
- InvokePatternIdentifiers.cs
- SqlReorderer.cs
- XmlImplementation.cs
- WebPartVerbCollection.cs
- SectionRecord.cs
- _SecureChannel.cs
- If.cs
- RectangleF.cs
- OptimalTextSource.cs
- WindowsSecurityToken.cs
- Reference.cs
- NameTable.cs
- MailAddress.cs
- AutomationPropertyInfo.cs
- DelimitedListTraceListener.cs
- ResourceReferenceExpression.cs
- XPathSelectionIterator.cs
- BaseCollection.cs
- XmlC14NWriter.cs
- DirtyTextRange.cs
- PngBitmapEncoder.cs
- RuntimeCompatibilityAttribute.cs
- EntityDataSourceDesigner.cs
- Preprocessor.cs
- SkewTransform.cs
- ValidateNames.cs
- MetadataCacheItem.cs
- NotImplementedException.cs
- Random.cs
- PageTheme.cs
- Wildcard.cs
- AutoScrollExpandMessageFilter.cs
- IndexedGlyphRun.cs
- XsdDateTime.cs
- EtwTrackingParticipant.cs
- ObjectAnimationUsingKeyFrames.cs
- PictureBox.cs
- SuppressMergeCheckAttribute.cs
- CursorConverter.cs
- dataobject.cs
- ComponentCache.cs
- SecurityToken.cs
- ImportedNamespaceContextItem.cs
- VariantWrapper.cs
- XmlValueConverter.cs
- BrowserDefinitionCollection.cs
- XmlException.cs
- FeatureSupport.cs
- HealthMonitoringSectionHelper.cs