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
- ProcessModuleCollection.cs
- InfiniteIntConverter.cs
- NamespaceDisplay.xaml.cs
- ConfigurationManager.cs
- PathFigureCollection.cs
- UmAlQuraCalendar.cs
- VisualStateManager.cs
- CodeArrayIndexerExpression.cs
- PassportAuthentication.cs
- CombinedGeometry.cs
- WorkflowRuntimeElement.cs
- IdentityManager.cs
- ProxyElement.cs
- ProcessExitedException.cs
- NonSerializedAttribute.cs
- DefaultAuthorizationContext.cs
- EasingKeyFrames.cs
- AddInStore.cs
- ResourcesChangeInfo.cs
- DataRowExtensions.cs
- FlagsAttribute.cs
- WSSecurityTokenSerializer.cs
- OleDbDataReader.cs
- NoClickablePointException.cs
- ToolBarDesigner.cs
- DataTrigger.cs
- QilExpression.cs
- SchemaEntity.cs
- ImageMap.cs
- InvalidDataException.cs
- VisualStyleElement.cs
- XmlFormatReaderGenerator.cs
- ChannelRequirements.cs
- DataServiceStreamResponse.cs
- Relationship.cs
- SqlSupersetValidator.cs
- cookiecontainer.cs
- Composition.cs
- TemplateBaseAction.cs
- ZipIOExtraField.cs
- KeyBinding.cs
- Comparer.cs
- DetailsViewInsertedEventArgs.cs
- BitmapPalettes.cs
- SchemaInfo.cs
- MasterPageParser.cs
- DesignerDataView.cs
- _UriTypeConverter.cs
- DbConnectionPoolCounters.cs
- StringAnimationUsingKeyFrames.cs
- SchemaType.cs
- ConfigurationConverterBase.cs
- WebCategoryAttribute.cs
- UnsafeNativeMethods.cs
- HtmlLink.cs
- GPRECTF.cs
- MenuItemStyleCollection.cs
- ReflectTypeDescriptionProvider.cs
- ObjectReaderCompiler.cs
- graph.cs
- QueryCacheEntry.cs
- MediaEntryAttribute.cs
- TemplateAction.cs
- EncodingInfo.cs
- CatalogPartCollection.cs
- TextTreeFixupNode.cs
- AssociationSetMetadata.cs
- HtmlHistory.cs
- RecognizedPhrase.cs
- Accessible.cs
- SendParametersContent.cs
- CacheForPrimitiveTypes.cs
- HttpCachePolicyElement.cs
- WebPartTransformerCollection.cs
- NetworkAddressChange.cs
- Crypto.cs
- ListBindableAttribute.cs
- HostedHttpRequestAsyncResult.cs
- AppModelKnownContentFactory.cs
- ByteAnimation.cs
- ApplyTemplatesAction.cs
- ConnectivityStatus.cs
- PointHitTestResult.cs
- Label.cs
- ConfigurationElement.cs
- FaultContractInfo.cs
- EventManager.cs
- SchemaNamespaceManager.cs
- ItemPager.cs
- HealthMonitoringSectionHelper.cs
- ObjectListFieldCollection.cs
- RandomDelayQueuedSendsAsyncResult.cs
- StatusBarAutomationPeer.cs
- PropertyGeneratedEventArgs.cs
- DataPager.cs
- RequestUriProcessor.cs
- WorkflowMarkupSerializer.cs
- RelationshipNavigation.cs
- ListViewAutomationPeer.cs
- ChangePasswordAutoFormat.cs