Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / Serialization / System / Xml / XmlBinaryReaderSession.cs / 1305376 / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- IListConverters.cs
- ConstructorArgumentAttribute.cs
- Converter.cs
- SoundPlayerAction.cs
- wmiprovider.cs
- versioninfo.cs
- SafeFileMappingHandle.cs
- RC2.cs
- CqlQuery.cs
- hresults.cs
- Win32NamedPipes.cs
- DomainUpDown.cs
- LinearQuaternionKeyFrame.cs
- NameValueCache.cs
- ResponseStream.cs
- TextBox.cs
- IpcClientChannel.cs
- DataPointer.cs
- IDQuery.cs
- BitmapScalingModeValidation.cs
- ObjectTag.cs
- Label.cs
- DataPagerCommandEventArgs.cs
- WebReferencesBuildProvider.cs
- ObjectView.cs
- DataGridRowsPresenter.cs
- ProjectionPath.cs
- ChangePassword.cs
- CodeSnippetStatement.cs
- RadioButtonPopupAdapter.cs
- EdmProviderManifest.cs
- StandardToolWindows.cs
- Instrumentation.cs
- NumericUpDownAcceleration.cs
- XPathException.cs
- ListSourceHelper.cs
- HtmlInputText.cs
- TempFiles.cs
- EmulateRecognizeCompletedEventArgs.cs
- SoapTypeAttribute.cs
- RetrieveVirtualItemEventArgs.cs
- ProcessManager.cs
- ActivityCollectionMarkupSerializer.cs
- EventTrigger.cs
- sqlpipe.cs
- SortKey.cs
- GridViewSortEventArgs.cs
- ElementProxy.cs
- TrueReadOnlyCollection.cs
- XmlSchemaAttribute.cs
- AddInAdapter.cs
- CDSsyncETWBCLProvider.cs
- SimpleMailWebEventProvider.cs
- InternalConfigEventArgs.cs
- Currency.cs
- EventLog.cs
- AppDomainGrammarProxy.cs
- TimeoutHelper.cs
- UnhandledExceptionEventArgs.cs
- DateTimePicker.cs
- RadialGradientBrush.cs
- XMLSchema.cs
- ControlIdConverter.cs
- ContentDisposition.cs
- DiscoveryReferences.cs
- ImplicitInputBrush.cs
- GeometryHitTestParameters.cs
- IDispatchConstantAttribute.cs
- IndentedTextWriter.cs
- ImplicitInputBrush.cs
- oledbmetadatacollectionnames.cs
- GridViewRowPresenter.cs
- BoundColumn.cs
- DbCommandDefinition.cs
- WindowsTreeView.cs
- XmlWhitespace.cs
- ProcessingInstructionAction.cs
- VariableExpressionConverter.cs
- PhysicalOps.cs
- CodeTypeReferenceExpression.cs
- ColorAnimationBase.cs
- ScriptControlDescriptor.cs
- CorrelationManager.cs
- RuntimeConfigLKG.cs
- CompositeCollection.cs
- Stackframe.cs
- SiteMapNode.cs
- PageContent.cs
- Stack.cs
- PresentationTraceSources.cs
- FieldBuilder.cs
- ColumnClickEvent.cs
- Lease.cs
- SqlRecordBuffer.cs
- SizeLimitedCache.cs
- CodeExpressionCollection.cs
- KeyPressEvent.cs
- NullReferenceException.cs
- SchemaEntity.cs
- UInt16Storage.cs