Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / Serialization / System / Xml / XmlBinaryReaderSession.cs / 1305376 / XmlBinaryReaderSession.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- using StringHandle = System.Int64; namespace System.Xml { using System.Xml; using System.Collections.Generic; using System.Runtime.Serialization; public class XmlBinaryReaderSession : IXmlDictionary { const int MaxArrayEntries = 2048; XmlDictionaryString[] strings; DictionarystringDict; public XmlBinaryReaderSession() { } public XmlDictionaryString Add(int id, string value) { if (id < 0) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(SR.GetString(SR.XmlInvalidID))); if (value == null) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("value"); XmlDictionaryString xmlString; if (TryLookup(id, out xmlString)) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.XmlIDDefined))); xmlString = new XmlDictionaryString(this, value, id); if (id >= MaxArrayEntries) { if (stringDict == null) this.stringDict = new Dictionary (); this.stringDict.Add(id, xmlString); } else { if (strings == null) { strings = new XmlDictionaryString[Math.Max(id + 1, 16)]; } else if (id >= strings.Length) { XmlDictionaryString[] newStrings = new XmlDictionaryString[Math.Min(Math.Max(id + 1, strings.Length * 2), MaxArrayEntries)]; Array.Copy(strings, newStrings, strings.Length); strings = newStrings; } strings[id] = xmlString; } return xmlString; } public bool TryLookup(int key, out XmlDictionaryString result) { if (strings != null && key >= 0 && key < strings.Length) { result = strings[key]; return result != null; } else if (key >= MaxArrayEntries) { if (this.stringDict != null) return this.stringDict.TryGetValue(key, out result); } result = null; return false; } public bool TryLookup(string value, out XmlDictionaryString result) { if (value == null) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("value"); if (strings != null) { for (int i = 0; i < strings.Length; i++) { XmlDictionaryString s = strings[i]; if (s != null && s.Value == value) { result = s; return true; } } } if (this.stringDict != null) { foreach (XmlDictionaryString s in this.stringDict.Values) { if (s.Value == value) { result = s; return true; } } } result = null; return false; } public bool TryLookup(XmlDictionaryString value, out XmlDictionaryString result) { if (value == null) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("value")); if (value.Dictionary != this) { result = null; return false; } result = value; return true; } public void Clear() { if (strings != null) Array.Clear(strings, 0, strings.Length); if (this.stringDict != null) this.stringDict.Clear(); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SortedDictionary.cs
- HttpGetProtocolImporter.cs
- HashMembershipCondition.cs
- Visual3D.cs
- DataRecordInternal.cs
- Types.cs
- HttpModuleAction.cs
- CodeTypeReference.cs
- IImplicitResourceProvider.cs
- DbConnectionStringCommon.cs
- peersecurityelement.cs
- LoginCancelEventArgs.cs
- XPathSelectionIterator.cs
- EntityTypeEmitter.cs
- ErrorLog.cs
- SqlConnectionHelper.cs
- CellParaClient.cs
- AnnotationMap.cs
- AutomationElement.cs
- ToolStripRendererSwitcher.cs
- RegularExpressionValidator.cs
- TemplatedMailWebEventProvider.cs
- ByteRangeDownloader.cs
- ObjectReaderCompiler.cs
- ScrollItemProviderWrapper.cs
- HwndStylusInputProvider.cs
- CompressedStack.cs
- ServiceDescriptionReflector.cs
- ProtectedConfiguration.cs
- FaultHandlingFilter.cs
- OutputCacheSettingsSection.cs
- StackSpiller.Generated.cs
- PolicyDesigner.cs
- SchemaDeclBase.cs
- CqlGenerator.cs
- SettingsProperty.cs
- IgnoreSectionHandler.cs
- DataServiceStreamProviderWrapper.cs
- DbConnectionPoolCounters.cs
- OdbcConnectionHandle.cs
- DrawingImage.cs
- PackagePart.cs
- PropertyDescriptorCollection.cs
- ColumnMap.cs
- ParallelTimeline.cs
- Suspend.cs
- SystemWebExtensionsSectionGroup.cs
- EncoderReplacementFallback.cs
- GroupByExpressionRewriter.cs
- UrlAuthFailureHandler.cs
- userdatakeys.cs
- SubstitutionList.cs
- ClientTargetSection.cs
- HtmlInputCheckBox.cs
- SuppressIldasmAttribute.cs
- PasswordTextNavigator.cs
- FontSourceCollection.cs
- TcpServerChannel.cs
- PrivacyNoticeBindingElement.cs
- RuleAction.cs
- GuidelineCollection.cs
- WSSecureConversationFeb2005.cs
- UserPersonalizationStateInfo.cs
- SuppressMessageAttribute.cs
- Inflater.cs
- HMAC.cs
- CopyOnWriteList.cs
- EditorPartChrome.cs
- ActiveDocumentEvent.cs
- ScrollEvent.cs
- CapabilitiesSection.cs
- UMPAttributes.cs
- ListViewEditEventArgs.cs
- Delegate.cs
- HttpWebResponse.cs
- ShaderEffect.cs
- XmlWriterTraceListener.cs
- CheckBox.cs
- ExpressionBuilder.cs
- TimeManager.cs
- transactioncontext.cs
- AudioStateChangedEventArgs.cs
- TabControlDesigner.cs
- BaseDataList.cs
- PolicyChain.cs
- StringCollection.cs
- WebPartZoneBase.cs
- SpotLight.cs
- PreservationFileReader.cs
- ObjectAssociationEndMapping.cs
- InputBinding.cs
- WebColorConverter.cs
- SqlInternalConnectionTds.cs
- ReadOnlyKeyedCollection.cs
- XmlAnyElementAttribute.cs
- LowerCaseStringConverter.cs
- TemplatedWizardStep.cs
- IApplicationTrustManager.cs
- WindowsHyperlink.cs
- _ConnectOverlappedAsyncResult.cs