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
- DataBindEngine.cs
- StreamSecurityUpgradeAcceptorBase.cs
- RightsManagementEncryptedStream.cs
- PropertyIDSet.cs
- ThemeInfoAttribute.cs
- SqlPersonalizationProvider.cs
- SurrogateChar.cs
- LinqDataView.cs
- StylusPoint.cs
- BitmapSourceSafeMILHandle.cs
- AdPostCacheSubstitution.cs
- OleDbRowUpdatingEvent.cs
- Size3DConverter.cs
- EdmRelationshipRoleAttribute.cs
- Content.cs
- ToolTipAutomationPeer.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- ListControlDataBindingHandler.cs
- MouseEvent.cs
- IISUnsafeMethods.cs
- DES.cs
- RadioButtonList.cs
- MouseActionConverter.cs
- Compiler.cs
- configsystem.cs
- storepermissionattribute.cs
- XmlSchemaInferenceException.cs
- CngProperty.cs
- CodeStatementCollection.cs
- HtmlString.cs
- SqlStatistics.cs
- remotingproxy.cs
- Send.cs
- ErrorEventArgs.cs
- HMACSHA512.cs
- CodeVariableDeclarationStatement.cs
- Trace.cs
- GridViewRowCollection.cs
- GeneralTransform3DTo2D.cs
- DbParameterHelper.cs
- PrintPageEvent.cs
- PEFileReader.cs
- MsmqException.cs
- Win32SafeHandles.cs
- EntityDataSource.cs
- GlyphingCache.cs
- MetadataCollection.cs
- SourceLineInfo.cs
- CustomCategoryAttribute.cs
- IODescriptionAttribute.cs
- Stacktrace.cs
- RenderDataDrawingContext.cs
- AutomationEventArgs.cs
- TreeViewEvent.cs
- PathSegment.cs
- ProviderCommandInfoUtils.cs
- PresentationSource.cs
- ResourceProperty.cs
- SoapIncludeAttribute.cs
- SmiEventStream.cs
- IncrementalReadDecoders.cs
- NativeMethods.cs
- StateRuntime.cs
- ServiceMetadataExtension.cs
- XmlnsDictionary.cs
- ForwardPositionQuery.cs
- RelativeSource.cs
- MemberHolder.cs
- VerticalConnector.xaml.cs
- TypeSystem.cs
- ResolveCriteriaCD1.cs
- TreeView.cs
- CodePageUtils.cs
- PeerHelpers.cs
- Compiler.cs
- DataControlFieldCollection.cs
- DocumentXmlWriter.cs
- ComponentManagerBroker.cs
- QueryExtender.cs
- KeyValuePairs.cs
- WsdlImporterElementCollection.cs
- ProvidePropertyAttribute.cs
- TakeOrSkipWhileQueryOperator.cs
- CachedBitmap.cs
- DataGridViewEditingControlShowingEventArgs.cs
- Animatable.cs
- HttpContext.cs
- InputMethod.cs
- HtmlContainerControl.cs
- TextEffectResolver.cs
- NamespaceEmitter.cs
- RadioButtonDesigner.cs
- NamespaceInfo.cs
- CodeSubDirectory.cs
- FacetDescriptionElement.cs
- HwndSourceKeyboardInputSite.cs
- HttpSessionStateBase.cs
- SamlAttribute.cs
- ProxyHwnd.cs
- X509ChainElement.cs