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
- _AuthenticationState.cs
- ExecutedRoutedEventArgs.cs
- WindowInteropHelper.cs
- XamlBuildProvider.cs
- HTMLTextWriter.cs
- ContractCodeDomInfo.cs
- BooleanKeyFrameCollection.cs
- Int32.cs
- Win32MouseDevice.cs
- XmlParserContext.cs
- SerialErrors.cs
- CharacterShapingProperties.cs
- InfoCardBaseException.cs
- HelpKeywordAttribute.cs
- PKCS1MaskGenerationMethod.cs
- CipherData.cs
- HasActivatableWorkflowEvent.cs
- FixedSOMLineRanges.cs
- WaitHandle.cs
- GridToolTip.cs
- Configuration.cs
- DbParameterCollection.cs
- CapabilitiesUse.cs
- QilStrConcat.cs
- FontSourceCollection.cs
- ListMarkerLine.cs
- ReaderOutput.cs
- Nodes.cs
- BrowserTree.cs
- ProcessStartInfo.cs
- LoginView.cs
- TabControlAutomationPeer.cs
- SchemaSetCompiler.cs
- EqualityComparer.cs
- CommentGlyph.cs
- XMLSchema.cs
- CfgRule.cs
- InstanceData.cs
- AccessViolationException.cs
- MsmqProcessProtocolHandler.cs
- Typography.cs
- HierarchicalDataSourceConverter.cs
- RandomNumberGenerator.cs
- HtmlForm.cs
- ModuleConfigurationInfo.cs
- ScopedMessagePartSpecification.cs
- OdbcRowUpdatingEvent.cs
- InlineUIContainer.cs
- ViewKeyConstraint.cs
- ComponentResourceManager.cs
- HotSpot.cs
- MissingSatelliteAssemblyException.cs
- ToolStripProgressBar.cs
- OleDbFactory.cs
- ServiceDescription.cs
- AsymmetricSignatureDeformatter.cs
- BuildProviderCollection.cs
- ReaderWriterLock.cs
- RtType.cs
- WebPartManagerDesigner.cs
- FileChangesMonitor.cs
- User.cs
- HttpModuleAction.cs
- ConnectionsZoneDesigner.cs
- StorageMappingItemCollection.cs
- WindowsIPAddress.cs
- SspiNegotiationTokenAuthenticatorState.cs
- BaseDataList.cs
- MatchAllMessageFilter.cs
- ComponentEditorForm.cs
- MultiTrigger.cs
- Decorator.cs
- DynamicQueryStringParameter.cs
- ServiceModelEnumValidatorAttribute.cs
- LinqTreeNodeEvaluator.cs
- MetadataArtifactLoaderCompositeResource.cs
- SqlTopReducer.cs
- DataKey.cs
- TextDpi.cs
- CatalogPartChrome.cs
- TableDetailsRow.cs
- DispatchChannelSink.cs
- SspiWrapper.cs
- TrackingProfile.cs
- ExpressionContext.cs
- EnvironmentPermission.cs
- ThreadInterruptedException.cs
- X509CertificateEndpointIdentity.cs
- DbExpressionVisitor_TResultType.cs
- MultiPartWriter.cs
- KeySplineConverter.cs
- WinEventQueueItem.cs
- DetailsViewUpdateEventArgs.cs
- OdbcUtils.cs
- ProvidersHelper.cs
- SynchronizedPool.cs
- DataGridViewControlCollection.cs
- XMLUtil.cs
- _NegoState.cs
- PrimitiveCodeDomSerializer.cs