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
- OleDbPermission.cs
- InvokeWebService.cs
- SafeLibraryHandle.cs
- TraceUtils.cs
- MouseButtonEventArgs.cs
- InputBuffer.cs
- EventProviderWriter.cs
- ProtocolsConfigurationEntry.cs
- RequiredFieldValidator.cs
- Application.cs
- CellParagraph.cs
- validation.cs
- DefinitionUpdate.cs
- CompilerTypeWithParams.cs
- DataServices.cs
- HttpConfigurationContext.cs
- XPathBinder.cs
- DependencyObjectType.cs
- SerTrace.cs
- ExpanderAutomationPeer.cs
- SQLResource.cs
- ThaiBuddhistCalendar.cs
- ExtenderProviderService.cs
- DeviceContext2.cs
- TaskExceptionHolder.cs
- QueryServiceConfigHandle.cs
- CodeCastExpression.cs
- Crc32.cs
- DbConnectionPoolGroup.cs
- GraphicsContainer.cs
- MonitoringDescriptionAttribute.cs
- WebEventTraceProvider.cs
- ToolStripLocationCancelEventArgs.cs
- LocalizationParserHooks.cs
- DeobfuscatingStream.cs
- IFlowDocumentViewer.cs
- IFormattable.cs
- RelationalExpressions.cs
- XmlKeywords.cs
- SecurityTokenContainer.cs
- SqlUtils.cs
- UiaCoreTypesApi.cs
- DigitShape.cs
- GeometryConverter.cs
- WindowsListViewGroup.cs
- QuestionEventArgs.cs
- FontCollection.cs
- TransactionContextManager.cs
- XmlNavigatorFilter.cs
- RoutingBehavior.cs
- CodeParameterDeclarationExpression.cs
- SynchronizedCollection.cs
- InputScopeNameConverter.cs
- XmlSchemaAnyAttribute.cs
- BindingBase.cs
- StrongNamePublicKeyBlob.cs
- PassportAuthenticationModule.cs
- HandlerWithFactory.cs
- HandleExceptionArgs.cs
- XpsFixedPageReaderWriter.cs
- DrawingCollection.cs
- ResourceManagerWrapper.cs
- SynchronizedDispatch.cs
- wgx_sdk_version.cs
- OleDbConnectionInternal.cs
- DragDropHelper.cs
- HttpPostProtocolReflector.cs
- Transform3DGroup.cs
- __ConsoleStream.cs
- KeyConverter.cs
- WindowShowOrOpenTracker.cs
- Codec.cs
- GridViewCancelEditEventArgs.cs
- DataControlFieldCollection.cs
- HtmlInputImage.cs
- RsaSecurityTokenParameters.cs
- FixedSOMTextRun.cs
- WebSysDisplayNameAttribute.cs
- VoiceSynthesis.cs
- QueryResults.cs
- ContentType.cs
- RtfNavigator.cs
- PersonalizationProviderCollection.cs
- NonParentingControl.cs
- ConnectionConsumerAttribute.cs
- ParseNumbers.cs
- XmlException.cs
- FixedDocument.cs
- FixedSOMContainer.cs
- DesignerDataTableBase.cs
- BindingBase.cs
- TailCallAnalyzer.cs
- SortedList.cs
- Emitter.cs
- Convert.cs
- CmsInterop.cs
- CacheChildrenQuery.cs
- DataGridViewTopLeftHeaderCell.cs
- InitializationEventAttribute.cs
- TCPListener.cs