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
- TemplateEditingFrame.cs
- CallId.cs
- ScrollBarRenderer.cs
- XhtmlBasicFormAdapter.cs
- XmlSerializationGeneratedCode.cs
- ObsoleteAttribute.cs
- XmlBinaryReaderSession.cs
- BoundField.cs
- WeakEventTable.cs
- OutputCacheSettingsSection.cs
- IndentedWriter.cs
- WhereaboutsReader.cs
- Wizard.cs
- dbdatarecord.cs
- WindowsFormsHost.cs
- BindingContext.cs
- TextElement.cs
- FormView.cs
- ComponentEditorForm.cs
- Rectangle.cs
- TraceContextEventArgs.cs
- ParameterElementCollection.cs
- Panel.cs
- RangeValuePatternIdentifiers.cs
- MethodBuilder.cs
- UdpSocketReceiveManager.cs
- ThicknessAnimationBase.cs
- Operator.cs
- XmlConvert.cs
- DataSourceSelectArguments.cs
- SizeAnimationUsingKeyFrames.cs
- XmlAtomicValue.cs
- mda.cs
- OrderPreservingPipeliningMergeHelper.cs
- RadioButtonPopupAdapter.cs
- TypeDependencyAttribute.cs
- PersonalizationProvider.cs
- FastEncoderWindow.cs
- ProbeMatchesMessageCD1.cs
- RoutedPropertyChangedEventArgs.cs
- IdentityManager.cs
- DbXmlEnabledProviderManifest.cs
- WebPartConnectionsCloseVerb.cs
- TypeSystem.cs
- ParseChildrenAsPropertiesAttribute.cs
- TextTreePropertyUndoUnit.cs
- View.cs
- SpellerStatusTable.cs
- WinFormsSecurity.cs
- DynamicDocumentPaginator.cs
- PersonalizationEntry.cs
- ResourceWriter.cs
- ImportFileRequest.cs
- LayoutExceptionEventArgs.cs
- WebBrowserHelper.cs
- ValidationRule.cs
- ConnectionPoolManager.cs
- SvcMapFileSerializer.cs
- StylusPointDescription.cs
- ChangeBlockUndoRecord.cs
- WinCategoryAttribute.cs
- XmlTextEncoder.cs
- SortQuery.cs
- compensatingcollection.cs
- DataViewListener.cs
- StrokeRenderer.cs
- DefaultAssemblyResolver.cs
- BoundPropertyEntry.cs
- NextPreviousPagerField.cs
- FormViewCommandEventArgs.cs
- DataGridViewColumnCollection.cs
- ComponentRenameEvent.cs
- SQLBinaryStorage.cs
- CompleteWizardStep.cs
- SqlRowUpdatedEvent.cs
- DisplayMemberTemplateSelector.cs
- PropertyGeneratedEventArgs.cs
- WebPartVerb.cs
- UrlMappingsModule.cs
- PostBackTrigger.cs
- FileEnumerator.cs
- BindingList.cs
- XPathDocumentNavigator.cs
- UnknownWrapper.cs
- DataContractAttribute.cs
- AssemblyNameProxy.cs
- LinkClickEvent.cs
- ImageAnimator.cs
- CodeCompiler.cs
- Accessible.cs
- XmlTextReaderImpl.cs
- SoapIgnoreAttribute.cs
- XmlCharCheckingReader.cs
- ContentDisposition.cs
- HostAdapter.cs
- SafeHandles.cs
- ItemAutomationPeer.cs
- RelatedView.cs
- ToolStripComboBox.cs
- TextContainerHelper.cs