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
- FormViewDeleteEventArgs.cs
- ObjectStateEntry.cs
- ItemChangedEventArgs.cs
- NamedPipeDuplicateContext.cs
- TreeNodeSelectionProcessor.cs
- LabelDesigner.cs
- MetaColumn.cs
- XmlEntity.cs
- UniqueConstraint.cs
- InvokeAction.cs
- ComNativeDescriptor.cs
- TreeViewCancelEvent.cs
- ConnectionStringsExpressionBuilder.cs
- Camera.cs
- InkPresenterAutomationPeer.cs
- OutputCacheProfile.cs
- ListViewDataItem.cs
- SqlAliasesReferenced.cs
- CapiHashAlgorithm.cs
- Focus.cs
- SystemThemeKey.cs
- SelectionRangeConverter.cs
- DefaultValueConverter.cs
- XmlDataSource.cs
- FtpWebRequest.cs
- AudioLevelUpdatedEventArgs.cs
- SqlAliasesReferenced.cs
- BasicExpressionVisitor.cs
- Formatter.cs
- ComponentRenameEvent.cs
- HttpContextServiceHost.cs
- XmlNode.cs
- WindowsTitleBar.cs
- ControlPropertyNameConverter.cs
- SpeakProgressEventArgs.cs
- FontUnit.cs
- PageWrapper.cs
- ReferencedCollectionType.cs
- WindowHideOrCloseTracker.cs
- SafeReversePInvokeHandle.cs
- DesignerRegionCollection.cs
- DataGridViewCellValueEventArgs.cs
- DataGridColumnHeaderCollection.cs
- DetailsViewDeletedEventArgs.cs
- HttpChannelHelpers.cs
- ContentDisposition.cs
- CfgArc.cs
- SchemaMapping.cs
- BindingListCollectionView.cs
- CharUnicodeInfo.cs
- CalloutQueueItem.cs
- ControlIdConverter.cs
- ZipPackage.cs
- Int32EqualityComparer.cs
- AutomationElementIdentifiers.cs
- CommonDialog.cs
- OleStrCAMarshaler.cs
- Splitter.cs
- AsyncStreamReader.cs
- CheckedPointers.cs
- AutomationPatternInfo.cs
- XomlDesignerLoader.cs
- GeneralTransform3DGroup.cs
- IndentedTextWriter.cs
- XhtmlBasicSelectionListAdapter.cs
- FontNamesConverter.cs
- DeferredReference.cs
- ResumeStoryboard.cs
- UserInitiatedRoutedEventPermissionAttribute.cs
- LayoutInformation.cs
- DataGridViewCellConverter.cs
- SymbolEqualComparer.cs
- SqlRowUpdatedEvent.cs
- DataGridViewTopLeftHeaderCell.cs
- BaseResourcesBuildProvider.cs
- PassportAuthenticationEventArgs.cs
- XmlSchemaInclude.cs
- IndexExpression.cs
- BaseResourcesBuildProvider.cs
- InitializationEventAttribute.cs
- WorkItem.cs
- DesignerCategoryAttribute.cs
- RelatedImageListAttribute.cs
- XamlStream.cs
- SqlCharStream.cs
- CompilerErrorCollection.cs
- AppearanceEditorPart.cs
- ReachPageContentSerializer.cs
- CookieProtection.cs
- FilterUserControlBase.cs
- TypeGeneratedEventArgs.cs
- GenerateTemporaryTargetAssembly.cs
- DataGridViewCellCollection.cs
- VerificationException.cs
- PackageRelationshipSelector.cs
- XmlReflectionMember.cs
- WindowsUpDown.cs
- Ref.cs
- XmlCharacterData.cs
- CaseInsensitiveComparer.cs