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; Dictionarydictionary; 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
- ProcessStartInfo.cs
- DataBinding.cs
- GradientStop.cs
- StrokeCollection.cs
- ExtenderProviderService.cs
- EntityContainerEmitter.cs
- ImageClickEventArgs.cs
- TextElementEditingBehaviorAttribute.cs
- InputBuffer.cs
- _OSSOCK.cs
- PropertyDescriptorComparer.cs
- FrugalMap.cs
- CacheOutputQuery.cs
- RowsCopiedEventArgs.cs
- SqlCachedBuffer.cs
- ConstructorArgumentAttribute.cs
- TimeSpanParse.cs
- DataGridViewCellFormattingEventArgs.cs
- CounterSampleCalculator.cs
- CLRBindingWorker.cs
- XmlILStorageConverter.cs
- MatrixValueSerializer.cs
- KnownTypesProvider.cs
- XNodeNavigator.cs
- ConnectionPointCookie.cs
- ProviderManager.cs
- XPathDocumentBuilder.cs
- TextSegment.cs
- HebrewNumber.cs
- DataControlFieldCell.cs
- RuntimeHelpers.cs
- MethodCallConverter.cs
- WindowsPen.cs
- XmlAnyElementAttribute.cs
- DataBindingCollection.cs
- ExclusiveCanonicalizationTransform.cs
- ScriptingWebServicesSectionGroup.cs
- KeyNotFoundException.cs
- XmlSchemaInferenceException.cs
- ClientUrlResolverWrapper.cs
- PolicyManager.cs
- ResizeGrip.cs
- Int64Storage.cs
- ProgressBarBrushConverter.cs
- MouseBinding.cs
- SpoolingTaskBase.cs
- DBSchemaRow.cs
- PropVariant.cs
- LinearKeyFrames.cs
- GridSplitter.cs
- WebServiceHost.cs
- HttpApplication.cs
- BindingsCollection.cs
- XsltInput.cs
- ParameterToken.cs
- ImageField.cs
- FlowPosition.cs
- OleDbErrorCollection.cs
- ImpersonateTokenRef.cs
- OnOperation.cs
- VisualBrush.cs
- ContractAdapter.cs
- DataControlCommands.cs
- EdmToObjectNamespaceMap.cs
- TypeConverterHelper.cs
- BamlRecordReader.cs
- ColumnWidthChangingEvent.cs
- ListControl.cs
- CommandField.cs
- DataSet.cs
- FileAccessException.cs
- DetailsViewModeEventArgs.cs
- ReversePositionQuery.cs
- CookielessHelper.cs
- RegexCompilationInfo.cs
- ProtocolViolationException.cs
- EntityClassGenerator.cs
- DynamicILGenerator.cs
- ActivitiesCollection.cs
- IPCCacheManager.cs
- TextTreeTextBlock.cs
- DataGridViewControlCollection.cs
- DetailsViewUpdatedEventArgs.cs
- QilReplaceVisitor.cs
- MinimizableAttributeTypeConverter.cs
- Rijndael.cs
- DbConnectionPoolGroup.cs
- NamespaceList.cs
- PropertyPathConverter.cs
- StyleModeStack.cs
- Root.cs
- PostBackOptions.cs
- AddInToken.cs
- input.cs
- CompilationLock.cs
- Timer.cs
- ExternalFile.cs
- XslException.cs
- ObservableDictionary.cs
- MarkupCompilePass1.cs