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
- ClipboardData.cs
- GetLastErrorDetailsRequest.cs
- ColumnClickEvent.cs
- SchemaConstraints.cs
- DocumentOrderQuery.cs
- Geometry3D.cs
- GridViewSelectEventArgs.cs
- OutputWindow.cs
- KnownTypes.cs
- CompositeControl.cs
- ColumnHeaderConverter.cs
- ExpressionReplacer.cs
- SerializerWriterEventHandlers.cs
- NativeMethods.cs
- TripleDESCryptoServiceProvider.cs
- UInt16.cs
- RelationshipNavigation.cs
- HtmlButton.cs
- DataSourceXmlClassAttribute.cs
- ColorConvertedBitmap.cs
- IpcChannel.cs
- WCFModelStrings.Designer.cs
- HtmlGenericControl.cs
- XPathEmptyIterator.cs
- CaseInsensitiveComparer.cs
- GlyphRun.cs
- MappingModelBuildProvider.cs
- SerializationInfo.cs
- OleDbPermission.cs
- AllMembershipCondition.cs
- OneWayElement.cs
- XmlObjectSerializerReadContext.cs
- DataColumnPropertyDescriptor.cs
- CodeCommentStatement.cs
- ResourcePool.cs
- PolicyChain.cs
- MappingSource.cs
- URLString.cs
- Button.cs
- MenuAutomationPeer.cs
- ObjectTag.cs
- SafeNativeMethods.cs
- IISUnsafeMethods.cs
- EventlogProvider.cs
- Ipv6Element.cs
- PrintDocument.cs
- SectionInput.cs
- HandleCollector.cs
- BaseValidator.cs
- GeneralTransformCollection.cs
- Site.cs
- EventLogPermissionEntryCollection.cs
- SqlReferenceCollection.cs
- DiscreteKeyFrames.cs
- ContentValidator.cs
- DataContractAttribute.cs
- Rotation3DAnimation.cs
- _LocalDataStoreMgr.cs
- ShaderEffect.cs
- IntSecurity.cs
- SecuritySessionServerSettings.cs
- BrowserTree.cs
- SqlSelectStatement.cs
- ProfileInfo.cs
- SessionStateContainer.cs
- TypeBinaryExpression.cs
- Oid.cs
- SocketException.cs
- DependencyObjectType.cs
- XmlWrappingReader.cs
- TextSelectionHelper.cs
- TypeNameParser.cs
- EncodingInfo.cs
- WebEventCodes.cs
- XPathSelfQuery.cs
- OutputCacheSection.cs
- TemplateParser.cs
- DataGridViewColumnDesignTimeVisibleAttribute.cs
- ConstrainedDataObject.cs
- HostingEnvironment.cs
- WindowsButton.cs
- DataGridViewMethods.cs
- URLString.cs
- ValueTable.cs
- XAMLParseException.cs
- WorkflowRuntime.cs
- DataSysAttribute.cs
- KoreanLunisolarCalendar.cs
- Freezable.cs
- SoapExtensionReflector.cs
- SequentialWorkflowRootDesigner.cs
- dataprotectionpermission.cs
- NullToBooleanConverter.cs
- PerformanceCounterPermissionAttribute.cs
- WCFModelStrings.Designer.cs
- MemberDomainMap.cs
- COM2FontConverter.cs
- DrawingVisual.cs
- ExternalDataExchangeService.cs
- SqlProviderServices.cs