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
- DataIdProcessor.cs
- CompressedStack.cs
- ModelTreeEnumerator.cs
- PeerResolverSettings.cs
- PasswordPropertyTextAttribute.cs
- _NTAuthentication.cs
- ConfigPathUtility.cs
- UseLicense.cs
- IndexerNameAttribute.cs
- HtmlTableRow.cs
- NotifyIcon.cs
- LayoutTableCell.cs
- Camera.cs
- diagnosticsswitches.cs
- FontFaceLayoutInfo.cs
- PeerApplication.cs
- SourceSwitch.cs
- SamlConstants.cs
- Queue.cs
- TextEditorCopyPaste.cs
- ConfigXmlAttribute.cs
- SurrogateChar.cs
- ResourceReferenceExpression.cs
- Decoder.cs
- ServiceNameElementCollection.cs
- ComboBox.cs
- ScriptingSectionGroup.cs
- GroupBoxRenderer.cs
- UdpConstants.cs
- RangeValidator.cs
- SafeUserTokenHandle.cs
- WmpBitmapDecoder.cs
- WebConfigurationManager.cs
- ObjectDataSource.cs
- XXXInfos.cs
- CriticalHandle.cs
- DrawingContextWalker.cs
- HandlerBase.cs
- SmiGettersStream.cs
- EnumUnknown.cs
- XmlSchemaDatatype.cs
- LabelDesigner.cs
- WebRequestModulesSection.cs
- DataPointer.cs
- HMACSHA256.cs
- Triangle.cs
- AsyncPostBackErrorEventArgs.cs
- XmlAttributeOverrides.cs
- GradientStopCollection.cs
- ToolStripGripRenderEventArgs.cs
- DbConnectionHelper.cs
- DataGridViewAddColumnDialog.cs
- XmlReaderSettings.cs
- WindowsAuthenticationEventArgs.cs
- ActivityBuilderHelper.cs
- AnimationTimeline.cs
- AutoGeneratedField.cs
- SymbolMethod.cs
- Model3DGroup.cs
- Material.cs
- DocumentPaginator.cs
- streamingZipPartStream.cs
- Point.cs
- Splitter.cs
- Adorner.cs
- EncryptedReference.cs
- DeclarativeCatalogPart.cs
- PersistenceProvider.cs
- ThumbAutomationPeer.cs
- _NegotiateClient.cs
- RectangleF.cs
- FilteredDataSetHelper.cs
- PropertyCollection.cs
- RegisteredDisposeScript.cs
- Visitors.cs
- TextEndOfParagraph.cs
- RegexBoyerMoore.cs
- RelatedImageListAttribute.cs
- TextContainerHelper.cs
- AttributeUsageAttribute.cs
- InArgumentConverter.cs
- RelationshipConverter.cs
- EventDescriptor.cs
- DesignerProperties.cs
- propertytag.cs
- DetailsViewDeletedEventArgs.cs
- MultiView.cs
- PersonalizationProviderHelper.cs
- WebServiceHandler.cs
- IncrementalHitTester.cs
- BlockUIContainer.cs
- DesignerToolStripControlHost.cs
- CapabilitiesRule.cs
- SqlDataSourceCustomCommandPanel.cs
- DbConnectionPool.cs
- UIPermission.cs
- Fx.cs
- TrackingServices.cs
- MatrixCamera.cs
- MetadataSerializer.cs