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
- _emptywebproxy.cs
- WebServiceParameterData.cs
- BehaviorEditorPart.cs
- JsonQueryStringConverter.cs
- MissingFieldException.cs
- InternalUserCancelledException.cs
- XPathParser.cs
- TemplateXamlParser.cs
- DataSourceCacheDurationConverter.cs
- OneWayBindingElement.cs
- PagesSection.cs
- RegexParser.cs
- InkCanvasSelection.cs
- FixedDSBuilder.cs
- FileInfo.cs
- EnterpriseServicesHelper.cs
- ResourceDescriptionAttribute.cs
- EncoderFallback.cs
- DataGridViewTextBoxCell.cs
- XmlEncodedRawTextWriter.cs
- ActiveXHelper.cs
- KeyGestureValueSerializer.cs
- RegistrationServices.cs
- RowToParametersTransformer.cs
- TreeNodeEventArgs.cs
- XmlSchemaAttribute.cs
- DocumentReference.cs
- PermissionRequestEvidence.cs
- Soap11ServerProtocol.cs
- WebBaseEventKeyComparer.cs
- ConditionChanges.cs
- RedistVersionInfo.cs
- AdapterDictionary.cs
- SessionEndedEventArgs.cs
- DbExpressionRules.cs
- Screen.cs
- BitmapEffectGroup.cs
- DecoderFallbackWithFailureFlag.cs
- DataControlButton.cs
- WsdlBuildProvider.cs
- XmlCharacterData.cs
- UnsafeNativeMethods.cs
- ContentAlignmentEditor.cs
- CookieProtection.cs
- XmlTextReaderImplHelpers.cs
- SystemIdentity.cs
- CodeAttachEventStatement.cs
- EntitySetRetriever.cs
- Listbox.cs
- OdbcHandle.cs
- FontConverter.cs
- Literal.cs
- TimeSpanConverter.cs
- ObjectPersistData.cs
- HandlerFactoryCache.cs
- CalendarButtonAutomationPeer.cs
- ManagementEventWatcher.cs
- TypeUsageBuilder.cs
- WsatConfiguration.cs
- RelatedView.cs
- ElementsClipboardData.cs
- ConditionedDesigner.cs
- GetIndexBinder.cs
- XhtmlBasicCalendarAdapter.cs
- SqlDataSourceQueryEditorForm.cs
- XmlNavigatorStack.cs
- TabControlAutomationPeer.cs
- ContextMarshalException.cs
- OpCopier.cs
- cookiecollection.cs
- SoapTypeAttribute.cs
- DataListCommandEventArgs.cs
- SymLanguageVendor.cs
- DataControlField.cs
- ProviderUtil.cs
- SubclassTypeValidatorAttribute.cs
- SafeArrayTypeMismatchException.cs
- SoapFormatter.cs
- HttpContextBase.cs
- RequestContext.cs
- NetTcpSectionData.cs
- TemplateNameScope.cs
- Single.cs
- GeometryHitTestParameters.cs
- NativeMethods.cs
- SourceItem.cs
- TextTabProperties.cs
- Authorization.cs
- SqlBulkCopyColumnMapping.cs
- DoubleKeyFrameCollection.cs
- GC.cs
- HwndMouseInputProvider.cs
- ELinqQueryState.cs
- QueryPageSettingsEventArgs.cs
- AbandonedMutexException.cs
- DBConcurrencyException.cs
- RoleManagerSection.cs
- DataGridViewHeaderCell.cs
- AssertUtility.cs
- SystemNetHelpers.cs