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
- FamilyMap.cs
- UIElementHelper.cs
- DataGridViewColumn.cs
- DictionaryManager.cs
- SystemColorTracker.cs
- TableLayoutColumnStyleCollection.cs
- BaseParaClient.cs
- Schema.cs
- Nodes.cs
- SelectionChangedEventArgs.cs
- XmlComplianceUtil.cs
- AQNBuilder.cs
- ObjRef.cs
- XmlSchemaComplexContent.cs
- MetadataCollection.cs
- TargetControlTypeAttribute.cs
- Utils.cs
- Helpers.cs
- FontInfo.cs
- OrderByQueryOptionExpression.cs
- HtmlElementErrorEventArgs.cs
- SecurityPolicySection.cs
- TransactionFlowBindingElement.cs
- ValidationPropertyAttribute.cs
- SchemaNames.cs
- QilPatternVisitor.cs
- EventData.cs
- ReceiveMessageRecord.cs
- SourceFilter.cs
- SharedPerformanceCounter.cs
- BulletDecorator.cs
- SectionXmlInfo.cs
- HwndAppCommandInputProvider.cs
- ClrProviderManifest.cs
- ConnectionPoint.cs
- ProfileService.cs
- SafePointer.cs
- SmtpDigestAuthenticationModule.cs
- DesignerAdapterAttribute.cs
- SerializationInfo.cs
- EndpointAddress.cs
- SortDescription.cs
- EditorZone.cs
- AsyncResult.cs
- ListViewGroupItemCollection.cs
- InstrumentationTracker.cs
- JulianCalendar.cs
- HeaderedItemsControl.cs
- TimelineGroup.cs
- TextOptions.cs
- XhtmlBasicListAdapter.cs
- RequestCacheValidator.cs
- ErasingStroke.cs
- SafeMarshalContext.cs
- SR.cs
- WindowsServiceCredential.cs
- SqlWriter.cs
- DbMetaDataCollectionNames.cs
- StatusBarDrawItemEvent.cs
- WebPartEditVerb.cs
- precedingquery.cs
- FileAuthorizationModule.cs
- DiscoveryDocumentSearchPattern.cs
- SafePEFileHandle.cs
- ExpressionDumper.cs
- ExceptionCollection.cs
- DataTableReader.cs
- XamlToRtfParser.cs
- ParentQuery.cs
- DiagnosticsConfiguration.cs
- X509CertificateCollection.cs
- UTF32Encoding.cs
- SettingsPropertyIsReadOnlyException.cs
- DesignerLinkAdapter.cs
- SessionStateSection.cs
- HttpStreamMessage.cs
- HtmlLiteralTextAdapter.cs
- StringStorage.cs
- ComMethodElementCollection.cs
- EventPropertyMap.cs
- TabPanel.cs
- StreamResourceInfo.cs
- XmlCharType.cs
- KnownTypeHelper.cs
- DataGridViewSelectedRowCollection.cs
- ReachPrintTicketSerializerAsync.cs
- NamespaceList.cs
- ReadOnlyDictionary.cs
- ColumnMapTranslator.cs
- ButtonBaseAdapter.cs
- ExpressionPrefixAttribute.cs
- CodeDefaultValueExpression.cs
- SqlXmlStorage.cs
- ServiceObjectContainer.cs
- Point3DIndependentAnimationStorage.cs
- HMACSHA256.cs
- ServiceBusyException.cs
- ObjectSelectorEditor.cs
- DataStreamFromComStream.cs
- MessageDirection.cs