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
- ObjectSecurity.cs
- RuleConditionDialog.cs
- OutputCacheSettingsSection.cs
- DataGridViewRowPostPaintEventArgs.cs
- TreeNodeBinding.cs
- SmtpClient.cs
- BitmapEffectInputData.cs
- ByteConverter.cs
- IndicFontClient.cs
- SemaphoreSecurity.cs
- SqlCacheDependency.cs
- listviewsubitemcollectioneditor.cs
- NavigationPropertySingletonExpression.cs
- XmlSchemaAppInfo.cs
- SslStream.cs
- StylusEventArgs.cs
- mediaclock.cs
- InfoCardSymmetricAlgorithm.cs
- RequestResponse.cs
- ApplyTemplatesAction.cs
- ChangeDirector.cs
- ValueTypePropertyReference.cs
- Axis.cs
- RecipientServiceModelSecurityTokenRequirement.cs
- ThicknessAnimationUsingKeyFrames.cs
- SoapRpcServiceAttribute.cs
- XmlLinkedNode.cs
- ConversionContext.cs
- WindowsListBox.cs
- PrintPageEvent.cs
- Propagator.JoinPropagator.JoinPredicateVisitor.cs
- MaskedTextBoxTextEditorDropDown.cs
- StrongNamePublicKeyBlob.cs
- EntityDataSourceWrapper.cs
- CallbackValidator.cs
- TextContainerHelper.cs
- Message.cs
- Stroke2.cs
- WebPartTracker.cs
- DesignUtil.cs
- versioninfo.cs
- WinEventWrap.cs
- RowVisual.cs
- AssemblyBuilder.cs
- IsolatedStorage.cs
- SessionPageStateSection.cs
- SmiRequestExecutor.cs
- ReadOnlyDataSource.cs
- ConstantSlot.cs
- ProfileBuildProvider.cs
- TransformCollection.cs
- ClosableStream.cs
- GridViewRow.cs
- TreeIterator.cs
- InternalConfigHost.cs
- GenericTypeParameterConverter.cs
- IDQuery.cs
- TextRenderer.cs
- JsonXmlDataContract.cs
- MarkupObject.cs
- UIElementCollection.cs
- dbenumerator.cs
- PolicyImporterElementCollection.cs
- ProviderSettingsCollection.cs
- TextEditorSpelling.cs
- ProgressBar.cs
- GeometryHitTestParameters.cs
- PublisherIdentityPermission.cs
- AssemblyAssociatedContentFileAttribute.cs
- TemplateBindingExpression.cs
- DataSetFieldSchema.cs
- ListBoxAutomationPeer.cs
- DbMetaDataCollectionNames.cs
- MailMessageEventArgs.cs
- AuthenticationModuleElement.cs
- DrawingContext.cs
- ObjectListFieldCollection.cs
- MessageQueueException.cs
- ElementsClipboardData.cs
- CapacityStreamGeometryContext.cs
- IncrementalCompileAnalyzer.cs
- XPathAxisIterator.cs
- CorrelationQuery.cs
- OrderedDictionary.cs
- HttpWebRequest.cs
- SqlBuffer.cs
- DbProviderFactory.cs
- HyperLink.cs
- BinaryObjectInfo.cs
- ListParaClient.cs
- GridErrorDlg.cs
- XmlCustomFormatter.cs
- FormClosingEvent.cs
- ContextMarshalException.cs
- DesignerValidationSummaryAdapter.cs
- MultiPageTextView.cs
- DiffuseMaterial.cs
- GridViewEditEventArgs.cs
- SchemaTableColumn.cs
- MouseButton.cs