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
- Visual3D.cs
- XmlSchemaComplexContentRestriction.cs
- PlainXmlWriter.cs
- WsdlBuildProvider.cs
- RolePrincipal.cs
- PropertySourceInfo.cs
- QueryCacheKey.cs
- SafeEventLogReadHandle.cs
- SchemaTypeEmitter.cs
- BitmapMetadataEnumerator.cs
- XmlSchemaObjectCollection.cs
- DesignerSerializationOptionsAttribute.cs
- HybridDictionary.cs
- TextEditorContextMenu.cs
- TextTabProperties.cs
- FtpRequestCacheValidator.cs
- ExtendedProtectionPolicy.cs
- InputMethodStateTypeInfo.cs
- HMACSHA256.cs
- ServiceEndpointCollection.cs
- StrokeFIndices.cs
- ItemsControl.cs
- SimpleType.cs
- Image.cs
- LinkClickEvent.cs
- OutputScope.cs
- ModelItemDictionary.cs
- ProjectionCamera.cs
- connectionpool.cs
- GenericPrincipal.cs
- TypedReference.cs
- AesManaged.cs
- Convert.cs
- WsrmTraceRecord.cs
- WebPartZoneBase.cs
- Command.cs
- CompositeCollectionView.cs
- CoreSwitches.cs
- AVElementHelper.cs
- DiffuseMaterial.cs
- DecoratedNameAttribute.cs
- Win32.cs
- XsltLibrary.cs
- PeoplePickerWrapper.cs
- ResolveNameEventArgs.cs
- SimpleRecyclingCache.cs
- DataControlFieldCollection.cs
- SessionEndedEventArgs.cs
- ProfilePropertySettings.cs
- RequestResizeEvent.cs
- ReadWriteObjectLock.cs
- AdditionalEntityFunctions.cs
- SQLDoubleStorage.cs
- CodeSnippetStatement.cs
- RefreshEventArgs.cs
- PageAsyncTask.cs
- Baml2006ReaderFrame.cs
- ServerValidateEventArgs.cs
- PageAction.cs
- SHA1CryptoServiceProvider.cs
- NavigationWindowAutomationPeer.cs
- EntityContainerEntitySet.cs
- DataGridPageChangedEventArgs.cs
- DBCSCodePageEncoding.cs
- ReflectionHelper.cs
- TextParaClient.cs
- DbDataRecord.cs
- ActivityDesignerLayoutSerializers.cs
- QuaternionAnimation.cs
- SecurityState.cs
- Polygon.cs
- AspNetSynchronizationContext.cs
- XmlSequenceWriter.cs
- RedirectionProxy.cs
- TrailingSpaceComparer.cs
- PictureBox.cs
- InputScopeNameConverter.cs
- DrawingGroup.cs
- QueryStringParameter.cs
- InputLanguage.cs
- ScriptComponentDescriptor.cs
- InterleavedZipPartStream.cs
- SupportingTokenDuplexChannel.cs
- BridgeDataRecord.cs
- XPathDocumentNavigator.cs
- CalculatedColumn.cs
- UIElementCollection.cs
- ResetableIterator.cs
- ObservableCollection.cs
- Module.cs
- ThreadExceptionEvent.cs
- Handle.cs
- ValueProviderWrapper.cs
- _AutoWebProxyScriptWrapper.cs
- NeutralResourcesLanguageAttribute.cs
- WebServicesDescriptionAttribute.cs
- Msmq4PoisonHandler.cs
- ExitEventArgs.cs
- XPathChildIterator.cs
- RawUIStateInputReport.cs