Code:
/ 4.0 / 4.0 / 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. //------------------------------------------------------------ // 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; Dictionary stringDict; 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
- DbConnectionHelper.cs
- ExpressionBindingCollection.cs
- WebBrowserDocumentCompletedEventHandler.cs
- Block.cs
- QueryResults.cs
- ComNativeDescriptor.cs
- RadialGradientBrush.cs
- TextPointerBase.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- AccessDataSourceView.cs
- UnsafeNativeMethods.cs
- GeometryModel3D.cs
- Overlapped.cs
- EventLogTraceListener.cs
- Update.cs
- GenericQueueSurrogate.cs
- BoundConstants.cs
- SoapAttributes.cs
- Misc.cs
- HtmlTextArea.cs
- SkewTransform.cs
- DefaultValueConverter.cs
- TypedDatasetGenerator.cs
- XmlILStorageConverter.cs
- ColorDialog.cs
- MarkupCompiler.cs
- DesignerDataColumn.cs
- XamlTreeBuilder.cs
- Ppl.cs
- ColorKeyFrameCollection.cs
- EnumerableRowCollection.cs
- HtmlHead.cs
- StringReader.cs
- ListItemCollection.cs
- TimeStampChecker.cs
- WebZone.cs
- TemplateColumn.cs
- BasicCellRelation.cs
- AuthenticationException.cs
- ClassData.cs
- AspNetHostingPermission.cs
- DesignRelationCollection.cs
- CheckBox.cs
- BitmapPalettes.cs
- TextStore.cs
- LinqToSqlWrapper.cs
- PrintEvent.cs
- FixedTextPointer.cs
- _UncName.cs
- InstalledFontCollection.cs
- PathFigureCollectionConverter.cs
- SecurityKeyUsage.cs
- DataStorage.cs
- FakeModelItemImpl.cs
- PointUtil.cs
- ArraySubsetEnumerator.cs
- GroupBox.cs
- Scalars.cs
- EncoderBestFitFallback.cs
- ContainerControl.cs
- SqlReferenceCollection.cs
- EncoderParameter.cs
- InvokePatternIdentifiers.cs
- EventHandlersStore.cs
- SqlFlattener.cs
- Int32Storage.cs
- FastEncoderStatics.cs
- RSAOAEPKeyExchangeFormatter.cs
- MessageEventSubscriptionService.cs
- DataColumn.cs
- UdpConstants.cs
- unsafenativemethodstextservices.cs
- TcpConnectionPool.cs
- SqlTriggerAttribute.cs
- ZipIORawDataFileBlock.cs
- XamlVector3DCollectionSerializer.cs
- Mappings.cs
- Wildcard.cs
- FileSystemEnumerable.cs
- SqlMethods.cs
- DiscoveryInnerClientAdhoc11.cs
- ImpersonateTokenRef.cs
- NavigationProperty.cs
- CriticalExceptions.cs
- DeferredTextReference.cs
- DrawListViewSubItemEventArgs.cs
- ViewStateAttachedPropertyFeature.cs
- WebBodyFormatMessageProperty.cs
- FilterQuery.cs
- DetailsViewPagerRow.cs
- FileVersion.cs
- Matrix3DStack.cs
- StorageMappingItemLoader.cs
- SpAudioStreamWrapper.cs
- Validator.cs
- View.cs
- MemoryRecordBuffer.cs
- WebPartExportVerb.cs
- COAUTHINFO.cs
- SignedXml.cs