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
- JsonFormatMapping.cs
- CodeTypeMember.cs
- WindowsFont.cs
- InteropEnvironment.cs
- TypographyProperties.cs
- TileBrush.cs
- ModulesEntry.cs
- GridViewSelectEventArgs.cs
- XPathDocument.cs
- RuntimeConfig.cs
- DesignerOptionService.cs
- XmlText.cs
- Section.cs
- CreateUserErrorEventArgs.cs
- XmlSchemaSequence.cs
- TextEditorTyping.cs
- List.cs
- RequestCacheEntry.cs
- COMException.cs
- DataConnectionHelper.cs
- EmptyEnumerator.cs
- TemplateField.cs
- ExceptionRoutedEventArgs.cs
- XmlSerializableWriter.cs
- HttpStaticObjectsCollectionBase.cs
- ValidationPropertyAttribute.cs
- PersonalizationEntry.cs
- ErrorItem.cs
- Boolean.cs
- TableSectionStyle.cs
- CompModSwitches.cs
- RemoteCryptoSignHashRequest.cs
- XmlAnyElementAttribute.cs
- ScrollPatternIdentifiers.cs
- MetabaseSettingsIis7.cs
- ConfigXmlSignificantWhitespace.cs
- SourceInterpreter.cs
- DecoderExceptionFallback.cs
- Context.cs
- AuthenticationManager.cs
- ISAPIRuntime.cs
- ApplicationSecurityManager.cs
- DataGridViewIntLinkedList.cs
- ReaderContextStackData.cs
- AmbientEnvironment.cs
- DeobfuscatingStream.cs
- DataPointer.cs
- SqlHelper.cs
- InvokeHandlers.cs
- XmlSchemaComplexContent.cs
- RequiredFieldValidator.cs
- VBIdentifierDesigner.xaml.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- MultiDataTrigger.cs
- DaylightTime.cs
- ShaderRenderModeValidation.cs
- PrintPreviewGraphics.cs
- KeyFrames.cs
- ToolStripPanel.cs
- MonthChangedEventArgs.cs
- DynamicControlParameter.cs
- CompositeFontParser.cs
- _StreamFramer.cs
- TripleDESCryptoServiceProvider.cs
- HttpsHostedTransportConfiguration.cs
- SocketStream.cs
- Transform3DGroup.cs
- PropertyMapper.cs
- SqlVisitor.cs
- PinnedBufferMemoryStream.cs
- XsdSchemaFileEditor.cs
- NameTable.cs
- SiteOfOriginPart.cs
- DataGridViewIntLinkedList.cs
- ZeroOpNode.cs
- DispatchWrapper.cs
- RuntimeEnvironment.cs
- TemplatePropertyEntry.cs
- CapacityStreamGeometryContext.cs
- DataGridViewRowConverter.cs
- XmlLanguage.cs
- EncodingConverter.cs
- Calendar.cs
- Range.cs
- RequestUriProcessor.cs
- Speller.cs
- ContextItemManager.cs
- MethodBody.cs
- ToolZone.cs
- TypeForwardedToAttribute.cs
- SettingsProperty.cs
- SystemInformation.cs
- DrawListViewColumnHeaderEventArgs.cs
- ThreadStateException.cs
- PasswordRecovery.cs
- RouteParameter.cs
- MethodSet.cs
- HttpCachePolicy.cs
- ControlPropertyNameConverter.cs
- ToolStripStatusLabel.cs