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
- CodeExpressionCollection.cs
- Wow64ConfigurationLoader.cs
- Regex.cs
- UseAttributeSetsAction.cs
- _ContextAwareResult.cs
- ComponentConverter.cs
- XmlCharType.cs
- PageVisual.cs
- ToolboxItemAttribute.cs
- DataColumn.cs
- GlobalProxySelection.cs
- ComponentCommands.cs
- IntPtr.cs
- EditBehavior.cs
- VolatileResourceManager.cs
- NativeCompoundFileAPIs.cs
- DataRecordInternal.cs
- CodeAccessSecurityEngine.cs
- XmlDomTextWriter.cs
- dbenumerator.cs
- Propagator.Evaluator.cs
- ToolboxCategory.cs
- TrackBar.cs
- SchemaTypeEmitter.cs
- GridViewRowEventArgs.cs
- CheckBoxList.cs
- CachedFontFace.cs
- MatrixStack.cs
- MessagePropertyAttribute.cs
- FastEncoder.cs
- CharacterBuffer.cs
- ListViewItemSelectionChangedEvent.cs
- FormsIdentity.cs
- ServiceDurableInstanceContextProvider.cs
- SmtpMail.cs
- ActivityTypeCodeDomSerializer.cs
- SQLMoney.cs
- TextBoxView.cs
- RegexCompiler.cs
- XmlILModule.cs
- MessageBox.cs
- DirectoryObjectSecurity.cs
- WebPartCancelEventArgs.cs
- ContextQuery.cs
- SqlDataSource.cs
- AdobeCFFWrapper.cs
- BlobPersonalizationState.cs
- OutputCacheSection.cs
- KnownTypeAttribute.cs
- CompiledRegexRunnerFactory.cs
- DrawingContext.cs
- Int32AnimationBase.cs
- XmlStringTable.cs
- _BasicClient.cs
- Preprocessor.cs
- Matrix3D.cs
- ObsoleteAttribute.cs
- VectorCollectionValueSerializer.cs
- PagesChangedEventArgs.cs
- DrawListViewColumnHeaderEventArgs.cs
- VScrollProperties.cs
- Processor.cs
- Permission.cs
- ActivityExecutorDelegateInfo.cs
- EntityDataSource.cs
- PassportAuthenticationEventArgs.cs
- TypedReference.cs
- TableParagraph.cs
- VectorKeyFrameCollection.cs
- UriTemplateEquivalenceComparer.cs
- SubMenuStyle.cs
- Privilege.cs
- PackageRelationship.cs
- FormViewDeletedEventArgs.cs
- SqlClientPermission.cs
- ListenerSessionConnection.cs
- PositiveTimeSpanValidator.cs
- GradientBrush.cs
- ImageFormat.cs
- ValidationErrorEventArgs.cs
- Matrix3DConverter.cs
- TextSimpleMarkerProperties.cs
- XmlCustomFormatter.cs
- PaintEvent.cs
- Viewport3DAutomationPeer.cs
- BitmapDownload.cs
- MembershipValidatePasswordEventArgs.cs
- ServiceNameElementCollection.cs
- GetPageCompletedEventArgs.cs
- ZipIORawDataFileBlock.cs
- CreateUserWizardStep.cs
- ConcurrentQueue.cs
- ServiceChannel.cs
- HttpStaticObjectsCollectionWrapper.cs
- SafeSystemMetrics.cs
- CheckBoxDesigner.cs
- InputProcessorProfilesLoader.cs
- ServiceRouteHandler.cs
- ThemeInfoAttribute.cs
- TargetPerspective.cs