Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / Serialization / System / Xml / XmlBinaryReaderSession.cs / 1 / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SQLBytes.cs
- WS2007FederationHttpBinding.cs
- SystemBrushes.cs
- PropertyPath.cs
- QueryReaderSettings.cs
- GeneralTransform.cs
- RecordConverter.cs
- SqlConnection.cs
- SourceLineInfo.cs
- CopyAction.cs
- DataGridViewColumnHeaderCell.cs
- ToolStripStatusLabel.cs
- TitleStyle.cs
- Exception.cs
- RegionData.cs
- CroppedBitmap.cs
- AttachmentService.cs
- FixedSOMFixedBlock.cs
- SecUtil.cs
- OutgoingWebRequestContext.cs
- EventRoute.cs
- Compiler.cs
- PropertyOverridesDialog.cs
- Renderer.cs
- CloseCollectionAsyncResult.cs
- DoubleAnimationUsingPath.cs
- PageAsyncTaskManager.cs
- StickyNoteHelper.cs
- ToolStripRenderer.cs
- QuaternionAnimationBase.cs
- WorkflowOperationAsyncResult.cs
- SafeNativeMethods.cs
- RegistryDataKey.cs
- WizardForm.cs
- EmptyQuery.cs
- CaretElement.cs
- ExeConfigurationFileMap.cs
- BasicViewGenerator.cs
- ProcessModelInfo.cs
- RIPEMD160Managed.cs
- TraceListener.cs
- KeyedCollection.cs
- CapabilitiesState.cs
- PathFigureCollectionConverter.cs
- Helper.cs
- AutomationElementCollection.cs
- ToolStrip.cs
- WebControl.cs
- ConnectionStringsExpressionBuilder.cs
- AttributeCollection.cs
- BindingMemberInfo.cs
- BuildProvidersCompiler.cs
- StringDictionaryWithComparer.cs
- Triplet.cs
- PropertyEmitter.cs
- DropDownButton.cs
- FixedDocument.cs
- BaseValidator.cs
- TextContainerHelper.cs
- ReverseInheritProperty.cs
- DocumentGridPage.cs
- UpdatePanelControlTrigger.cs
- TheQuery.cs
- RayHitTestParameters.cs
- DesignerActionTextItem.cs
- SafeCryptContextHandle.cs
- CommonRemoteMemoryBlock.cs
- DbgUtil.cs
- XmlEnumAttribute.cs
- MultipleFilterMatchesException.cs
- SQLSingle.cs
- DataGridColumnReorderingEventArgs.cs
- EmulateRecognizeCompletedEventArgs.cs
- FontDialog.cs
- DataGridViewCellEventArgs.cs
- InlinedAggregationOperatorEnumerator.cs
- ActivityInterfaces.cs
- MSAAEventDispatcher.cs
- DragDeltaEventArgs.cs
- TrailingSpaceComparer.cs
- DocumentGridPage.cs
- HorizontalAlignConverter.cs
- BamlLocalizableResourceKey.cs
- PropertyMapper.cs
- KeyboardEventArgs.cs
- EventLogger.cs
- TableRowCollection.cs
- EdmRelationshipRoleAttribute.cs
- SmiGettersStream.cs
- _AcceptOverlappedAsyncResult.cs
- RedBlackList.cs
- SizeAnimationClockResource.cs
- SmtpNetworkElement.cs
- LinqDataSourceHelper.cs
- HtmlControlPersistable.cs
- RelationshipEnd.cs
- InitializationEventAttribute.cs
- ProcessModelSection.cs
- ScrollableControl.cs
- XXXOnTypeBuilderInstantiation.cs