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
- KeyValuePair.cs
- SiteMap.cs
- InternalTypeHelper.cs
- SizeConverter.cs
- MatrixIndependentAnimationStorage.cs
- DataRow.cs
- TargetPerspective.cs
- WasAdminWrapper.cs
- ErrorWrapper.cs
- ScrollBar.cs
- AccessibilityApplicationManager.cs
- DataGridViewTextBoxCell.cs
- TextBoxAutoCompleteSourceConverter.cs
- MsdtcWrapper.cs
- OutputCacheProfileCollection.cs
- PartialCachingControl.cs
- ProxyWebPartConnectionCollection.cs
- BinHexDecoder.cs
- ProgressBarBrushConverter.cs
- SqlGatherProducedAliases.cs
- ManipulationPivot.cs
- Model3DCollection.cs
- SyndicationDeserializer.cs
- SqlOuterApplyReducer.cs
- WebPartZoneBase.cs
- PersonalizationEntry.cs
- SqlParameterCollection.cs
- ArgIterator.cs
- PageAsyncTask.cs
- EdmType.cs
- DesignerTransaction.cs
- DataBinding.cs
- GorillaCodec.cs
- PartitionedStream.cs
- TreeViewItemAutomationPeer.cs
- TextUtf8RawTextWriter.cs
- XsdValidatingReader.cs
- ValueType.cs
- EventSinkHelperWriter.cs
- TemplatedAdorner.cs
- ProtocolImporter.cs
- DataControlButton.cs
- QueueSurrogate.cs
- AnchoredBlock.cs
- RightsManagementPermission.cs
- HostedHttpContext.cs
- glyphs.cs
- WebPermission.cs
- SchemaObjectWriter.cs
- DataGridViewIntLinkedList.cs
- WebBrowserNavigatedEventHandler.cs
- DesignerLabelAdapter.cs
- QilBinary.cs
- StylusPlugin.cs
- FlowLayout.cs
- BitmapSizeOptions.cs
- StateRuntime.cs
- SelfIssuedAuthRSAPKCS1SignatureDeformatter.cs
- GlyphShapingProperties.cs
- DataGrid.cs
- PerfService.cs
- TcpSocketManager.cs
- PreDigestedSignedInfo.cs
- StylusOverProperty.cs
- WeakEventManager.cs
- GridViewColumnCollectionChangedEventArgs.cs
- PersonalizablePropertyEntry.cs
- MinimizableAttributeTypeConverter.cs
- AlignmentXValidation.cs
- TransportBindingElement.cs
- Visual3D.cs
- CellCreator.cs
- XmlSchemaSimpleContent.cs
- XslAst.cs
- SystemColorTracker.cs
- Floater.cs
- AuthorizationSection.cs
- Rect3D.cs
- AnnotationAuthorChangedEventArgs.cs
- PassportAuthentication.cs
- TypeDescriptor.cs
- GridViewDeletedEventArgs.cs
- Animatable.cs
- SqlCharStream.cs
- CapacityStreamGeometryContext.cs
- storepermission.cs
- MdiWindowListItemConverter.cs
- ObjectDataSourceFilteringEventArgs.cs
- EmissiveMaterial.cs
- PreviewPrintController.cs
- DataGridViewCheckBoxColumn.cs
- DataGridViewBand.cs
- OleServicesContext.cs
- DataGridViewCellConverter.cs
- RoleManagerModule.cs
- GridViewSortEventArgs.cs
- SafeBitVector32.cs
- ScriptResourceAttribute.cs
- RequestSecurityTokenResponse.cs
- SerializationObjectManager.cs