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
- HwndHost.cs
- TemplateParser.cs
- ItemAutomationPeer.cs
- FlatButtonAppearance.cs
- WindowsSecurityTokenAuthenticator.cs
- CodePageUtils.cs
- _SingleItemRequestCache.cs
- XmlILConstructAnalyzer.cs
- DiscoveryServerProtocol.cs
- SqlTypeConverter.cs
- Input.cs
- ToolStripContentPanelRenderEventArgs.cs
- DbConnectionOptions.cs
- OracleException.cs
- ActiveXHelper.cs
- ObjectView.cs
- Math.cs
- PaperSize.cs
- TypeUnloadedException.cs
- Rotation3D.cs
- ExpandCollapseProviderWrapper.cs
- Image.cs
- EnumerableValidator.cs
- KeyNotFoundException.cs
- ThrowHelper.cs
- SmtpSection.cs
- RangeValuePattern.cs
- DependencyPropertyDescriptor.cs
- DataGridTemplateColumn.cs
- DataServiceResponse.cs
- EntityContainerEntitySet.cs
- CultureMapper.cs
- CustomTypeDescriptor.cs
- OrElse.cs
- EvidenceBase.cs
- ToolConsole.cs
- DesignRelationCollection.cs
- AQNBuilder.cs
- HttpCookieCollection.cs
- PageAsyncTaskManager.cs
- SchemaHelper.cs
- QueryMatcher.cs
- ZoneButton.cs
- CacheMemory.cs
- HotSpot.cs
- EventRoute.cs
- FixedSOMLineCollection.cs
- CommandDevice.cs
- ColumnWidthChangingEvent.cs
- TraceContextRecord.cs
- HiddenField.cs
- XmlDeclaration.cs
- XmlWhitespace.cs
- FormViewDeleteEventArgs.cs
- UiaCoreApi.cs
- GetImportFileNameRequest.cs
- GenericTextProperties.cs
- SimpleHandlerBuildProvider.cs
- MetadataHelper.cs
- HtmlGenericControl.cs
- PasswordBox.cs
- SqlConnectionPoolGroupProviderInfo.cs
- ClientTargetCollection.cs
- KeyedPriorityQueue.cs
- LayoutManager.cs
- ImplicitInputBrush.cs
- XsdDateTime.cs
- GeometryCombineModeValidation.cs
- GestureRecognitionResult.cs
- NumberFormatter.cs
- ProxyHwnd.cs
- Visual3DCollection.cs
- TextRangeAdaptor.cs
- StandardOleMarshalObject.cs
- SByteStorage.cs
- SapiAttributeParser.cs
- InstrumentationTracker.cs
- FormsAuthenticationUser.cs
- ReflectionUtil.cs
- KeyValueConfigurationElement.cs
- TypeProvider.cs
- StrongNameMembershipCondition.cs
- XamlSerializerUtil.cs
- HitTestDrawingContextWalker.cs
- SharedConnectionListener.cs
- OleDbCommand.cs
- MethodInfo.cs
- DataKey.cs
- ExpandCollapseProviderWrapper.cs
- ConstructorBuilder.cs
- ErrorLog.cs
- FixedSOMFixedBlock.cs
- SqlDataSourceWizardForm.cs
- RectAnimationClockResource.cs
- DocumentScope.cs
- DataViewListener.cs
- ToolboxService.cs
- DesignerLabelAdapter.cs
- TextServicesManager.cs
- SelectionItemPatternIdentifiers.cs