Code:
/ 4.0 / 4.0 / 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. //------------------------------------------------------------ // 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; Dictionary stringDict; 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
- InvalidFilterCriteriaException.cs
- ComponentEditorPage.cs
- TextDecorationCollection.cs
- InheritanceContextHelper.cs
- EventRoute.cs
- HtmlTableRowCollection.cs
- ContentElementAutomationPeer.cs
- SoapSchemaMember.cs
- BrowserCapabilitiesFactoryBase.cs
- TraceLog.cs
- ComponentChangedEvent.cs
- SendKeys.cs
- FontUnit.cs
- MailAddress.cs
- InertiaTranslationBehavior.cs
- XmlComment.cs
- FixedPage.cs
- TextEditorCharacters.cs
- IItemContainerGenerator.cs
- HttpPostedFile.cs
- PlatformCulture.cs
- HttpInputStream.cs
- SchemaMapping.cs
- NativeMethods.cs
- DefaultValueTypeConverter.cs
- BypassElement.cs
- WebHttpBindingCollectionElement.cs
- AbandonedMutexException.cs
- WithStatement.cs
- EditorBrowsableAttribute.cs
- SessionPageStateSection.cs
- ItemAutomationPeer.cs
- SoapMessage.cs
- PageThemeCodeDomTreeGenerator.cs
- EditorBrowsableAttribute.cs
- Bidi.cs
- SyndicationItem.cs
- _ListenerRequestStream.cs
- SqlConnectionString.cs
- LogLogRecordEnumerator.cs
- PaintValueEventArgs.cs
- XmlAggregates.cs
- ClientFormsAuthenticationCredentials.cs
- OutKeywords.cs
- ToolStripDropDownMenu.cs
- ImpersonateTokenRef.cs
- ToolboxComponentsCreatingEventArgs.cs
- ComponentResourceKey.cs
- TrackingWorkflowEventArgs.cs
- KeyInfo.cs
- HtmlAnchor.cs
- WebBrowserDocumentCompletedEventHandler.cs
- ContentValidator.cs
- WmlPanelAdapter.cs
- DataGridColumnCollection.cs
- ApplicationBuildProvider.cs
- StandardToolWindows.cs
- DataBoundControl.cs
- GeneratedView.cs
- Task.cs
- SortFieldComparer.cs
- DialogDivider.cs
- Cloud.cs
- PaperSize.cs
- TreeSet.cs
- MetaType.cs
- SQLChars.cs
- PageContentAsyncResult.cs
- Crc32Helper.cs
- CheckBoxList.cs
- TreeViewHitTestInfo.cs
- MetafileHeaderWmf.cs
- TransformCryptoHandle.cs
- Light.cs
- AsyncResult.cs
- Point3D.cs
- ParameterExpression.cs
- SingleResultAttribute.cs
- CodeDOMProvider.cs
- CultureTable.cs
- Converter.cs
- ResponseBodyWriter.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- MemberAccessException.cs
- Screen.cs
- DecimalAnimationUsingKeyFrames.cs
- VectorAnimation.cs
- CookielessHelper.cs
- SemanticBasicElement.cs
- PersonalizationProviderHelper.cs
- XamlReaderHelper.cs
- BasePattern.cs
- Selector.cs
- DurableOperationAttribute.cs
- CharacterShapingProperties.cs
- DataColumnMappingCollection.cs
- AppDomainShutdownMonitor.cs
- XmlUtil.cs
- ResolveMatches11.cs
- Debugger.cs