Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / Serialization / System / Xml / XmlDictionaryString.cs / 1305376 / XmlDictionaryString.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.Xml { using System; using System.Xml; using System.Text; using System.Diagnostics; using System.Runtime.Serialization; public class XmlDictionaryString { internal const int MinKey = 0; internal const int MaxKey = int.MaxValue / 4; IXmlDictionary dictionary; string value; int key; byte[] buffer; static EmptyStringDictionary emptyStringDictionary = new EmptyStringDictionary(); public XmlDictionaryString(IXmlDictionary dictionary, string value, int key) { if (dictionary == null) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("dictionary")); if (value == null) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("value")); if (key < MinKey || key > MaxKey) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("key", SR.GetString(SR.ValueMustBeInRange, MinKey, MaxKey))); this.dictionary = dictionary; this.value = value; this.key = key; } static internal string GetString(XmlDictionaryString s) { if (s == null) return null; return s.Value; } static public XmlDictionaryString Empty { get { return emptyStringDictionary.EmptyString; } } public IXmlDictionary Dictionary { get { return dictionary; } } public int Key { get { return key; } } public string Value { get { return value; } } internal byte[] ToUTF8() { if (buffer == null) buffer = System.Text.Encoding.UTF8.GetBytes(value); return buffer; } public override string ToString() { return value; } class EmptyStringDictionary : IXmlDictionary { XmlDictionaryString empty; public EmptyStringDictionary() { empty = new XmlDictionaryString(this, string.Empty, 0); } public XmlDictionaryString EmptyString { get { return empty; } } public bool TryLookup(string value, out XmlDictionaryString result) { if (value == null) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("value"); if (value.Length == 0) { result = empty; return true; } result = null; return false; } public bool TryLookup(int key, out XmlDictionaryString result) { if (key == 0) { result = empty; 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; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.Xml { using System; using System.Xml; using System.Text; using System.Diagnostics; using System.Runtime.Serialization; public class XmlDictionaryString { internal const int MinKey = 0; internal const int MaxKey = int.MaxValue / 4; IXmlDictionary dictionary; string value; int key; byte[] buffer; static EmptyStringDictionary emptyStringDictionary = new EmptyStringDictionary(); public XmlDictionaryString(IXmlDictionary dictionary, string value, int key) { if (dictionary == null) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("dictionary")); if (value == null) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("value")); if (key < MinKey || key > MaxKey) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("key", SR.GetString(SR.ValueMustBeInRange, MinKey, MaxKey))); this.dictionary = dictionary; this.value = value; this.key = key; } static internal string GetString(XmlDictionaryString s) { if (s == null) return null; return s.Value; } static public XmlDictionaryString Empty { get { return emptyStringDictionary.EmptyString; } } public IXmlDictionary Dictionary { get { return dictionary; } } public int Key { get { return key; } } public string Value { get { return value; } } internal byte[] ToUTF8() { if (buffer == null) buffer = System.Text.Encoding.UTF8.GetBytes(value); return buffer; } public override string ToString() { return value; } class EmptyStringDictionary : IXmlDictionary { XmlDictionaryString empty; public EmptyStringDictionary() { empty = new XmlDictionaryString(this, string.Empty, 0); } public XmlDictionaryString EmptyString { get { return empty; } } public bool TryLookup(string value, out XmlDictionaryString result) { if (value == null) throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("value"); if (value.Length == 0) { result = empty; return true; } result = null; return false; } public bool TryLookup(int key, out XmlDictionaryString result) { if (key == 0) { result = empty; 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; } } } } // 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
- RuleSettings.cs
- WsatExtendedInformation.cs
- InstancePersistence.cs
- BinaryWriter.cs
- XmlElement.cs
- XmlSchemaSequence.cs
- latinshape.cs
- DataListCommandEventArgs.cs
- Glyph.cs
- RSACryptoServiceProvider.cs
- TextParaLineResult.cs
- SmiEventStream.cs
- DragDrop.cs
- SqlDataSourceConfigureFilterForm.cs
- HandleScope.cs
- AccessDataSourceView.cs
- ReaderOutput.cs
- NotifyCollectionChangedEventArgs.cs
- OdbcConnectionStringbuilder.cs
- StubHelpers.cs
- HttpRawResponse.cs
- EventLogPermission.cs
- ProfileSection.cs
- InvalidFilterCriteriaException.cs
- LicenseContext.cs
- PersonalizationStateInfoCollection.cs
- AssociationTypeEmitter.cs
- TemplateGroupCollection.cs
- Int16Storage.cs
- Util.cs
- StreamWriter.cs
- AsnEncodedData.cs
- FileAuthorizationModule.cs
- ApplicationHost.cs
- ProcessModelInfo.cs
- DependencyPropertyAttribute.cs
- Comparer.cs
- SharedUtils.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- MessageQueueTransaction.cs
- ToolStripActionList.cs
- DesignerAutoFormatCollection.cs
- WCFBuildProvider.cs
- BitArray.cs
- OrderByExpression.cs
- UserMapPath.cs
- RightNameExpirationInfoPair.cs
- GifBitmapEncoder.cs
- TextDocumentView.cs
- LinqDataSourceSelectEventArgs.cs
- UdpChannelFactory.cs
- EventDescriptorCollection.cs
- AnnotationService.cs
- ContentPropertyAttribute.cs
- LinqDataSourceContextEventArgs.cs
- Win32MouseDevice.cs
- CommonGetThemePartSize.cs
- DescendantOverDescendantQuery.cs
- HtmlLabelAdapter.cs
- TagPrefixAttribute.cs
- ProfessionalColorTable.cs
- FontNamesConverter.cs
- CodeConditionStatement.cs
- LayoutEditorPart.cs
- GrammarBuilderBase.cs
- AccessedThroughPropertyAttribute.cs
- TextTreeInsertElementUndoUnit.cs
- InstanceDataCollectionCollection.cs
- XmlUtilWriter.cs
- NotImplementedException.cs
- PropertyNames.cs
- XmlDigitalSignatureProcessor.cs
- TypedReference.cs
- GeneralTransform2DTo3D.cs
- FontEmbeddingManager.cs
- CodeStatement.cs
- Stylus.cs
- XPathArrayIterator.cs
- QilNode.cs
- listitem.cs
- ByteStorage.cs
- VisualStyleInformation.cs
- x509store.cs
- XmlSchemaExternal.cs
- LoginNameDesigner.cs
- VirtualizingPanel.cs
- ExtensibleClassFactory.cs
- Types.cs
- Color.cs
- QuaternionRotation3D.cs
- QilGenerator.cs
- PropertyInformationCollection.cs
- PrimitiveType.cs
- DataGridViewRowCollection.cs
- NavigationFailedEventArgs.cs
- TickBar.cs
- WeakEventTable.cs
- NumberFormatter.cs
- QueryConverter.cs
- Int64Storage.cs