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
- HtmlElement.cs
- GeometryDrawing.cs
- SoapElementAttribute.cs
- ModelMemberCollection.cs
- BamlLocalizabilityResolver.cs
- HostUtils.cs
- IxmlLineInfo.cs
- ThreadSafeList.cs
- DataPagerField.cs
- PrimitiveCodeDomSerializer.cs
- SingleQueryOperator.cs
- DataExpression.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- SamlNameIdentifierClaimResource.cs
- EntityDataSourceSelectingEventArgs.cs
- ZoomPercentageConverter.cs
- XmlDownloadManager.cs
- WorkflowOperationBehavior.cs
- ListenerElementsCollection.cs
- FormatException.cs
- IntranetCredentialPolicy.cs
- MimeTypeAttribute.cs
- EntityReference.cs
- Encoding.cs
- XD.cs
- DataSourceHelper.cs
- MatrixTransform.cs
- TextTreeTextElementNode.cs
- StrictModeSecurityHeaderElementInferenceEngine.cs
- FrameworkContentElement.cs
- HttpCachePolicy.cs
- AvTrace.cs
- ContentPropertyAttribute.cs
- TimelineCollection.cs
- DiagnosticsConfiguration.cs
- SafeTimerHandle.cs
- XmlTextReader.cs
- Polyline.cs
- CreatingCookieEventArgs.cs
- HitTestDrawingContextWalker.cs
- MiniLockedBorderGlyph.cs
- CachedTypeface.cs
- LayoutEngine.cs
- loginstatus.cs
- FormatConvertedBitmap.cs
- AccessibilityHelperForVista.cs
- PositiveTimeSpanValidatorAttribute.cs
- XmlILIndex.cs
- DependencyProperty.cs
- PixelFormat.cs
- ToolStripTextBox.cs
- State.cs
- RightNameExpirationInfoPair.cs
- Dump.cs
- RoleManagerSection.cs
- LingerOption.cs
- CacheEntry.cs
- WebBrowser.cs
- HttpCapabilitiesEvaluator.cs
- ObjectStateFormatter.cs
- GridItemPattern.cs
- Pen.cs
- MessageSmuggler.cs
- SettingsPropertyIsReadOnlyException.cs
- SplayTreeNode.cs
- ControlBuilderAttribute.cs
- MaskedTextBox.cs
- ListenUriMode.cs
- Vars.cs
- StylusPointProperties.cs
- IRCollection.cs
- PropVariant.cs
- ClientCultureInfo.cs
- ByteArrayHelperWithString.cs
- _FtpControlStream.cs
- XmlWrappingReader.cs
- ColumnResult.cs
- ProjectionPlan.cs
- Range.cs
- ToolboxCategoryItems.cs
- XD.cs
- KeyboardNavigation.cs
- PreservationFileReader.cs
- TextEditorCopyPaste.cs
- WebPartZoneCollection.cs
- SmiTypedGetterSetter.cs
- WebPartConnectionsCancelVerb.cs
- IProvider.cs
- MonitorWrapper.cs
- BrowserDefinition.cs
- SHA384.cs
- HashAlgorithm.cs
- BaseDataBoundControl.cs
- codemethodreferenceexpression.cs
- TraceContextRecord.cs
- HandoffBehavior.cs
- TextEditorCopyPaste.cs
- ClientUIRequest.cs
- CompiledQueryCacheEntry.cs
- IisTraceWebEventProvider.cs