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
- CodeSubDirectory.cs
- TextEncodedRawTextWriter.cs
- ManipulationLogic.cs
- StrokeCollectionConverter.cs
- ErrorHandler.cs
- ModuleConfigurationInfo.cs
- DBSchemaTable.cs
- ObjectQuery.cs
- GlobalItem.cs
- XPathBuilder.cs
- Compiler.cs
- HttpInputStream.cs
- UshortList2.cs
- SendingRequestEventArgs.cs
- HttpServerVarsCollection.cs
- ListViewPagedDataSource.cs
- WindowsRegion.cs
- NextPreviousPagerField.cs
- RoleGroupCollection.cs
- WebServiceData.cs
- SubtreeProcessor.cs
- LoadedEvent.cs
- ReferentialConstraint.cs
- WebPartVerbCollection.cs
- Processor.cs
- UTF32Encoding.cs
- DeclaredTypeElementCollection.cs
- ImageSourceValueSerializer.cs
- CodeParameterDeclarationExpression.cs
- FileDataSourceCache.cs
- ObjectHandle.cs
- DefaultParameterValueAttribute.cs
- XmlLangPropertyAttribute.cs
- FreezableOperations.cs
- TextElementEnumerator.cs
- Token.cs
- XPathChildIterator.cs
- SiteMapNodeItem.cs
- DataGridViewMethods.cs
- SqlUDTStorage.cs
- TypeListConverter.cs
- PassportIdentity.cs
- ToolStripDropDownButton.cs
- SqlTriggerContext.cs
- MultiPageTextView.cs
- PersistenceMetadataNamespace.cs
- TemplatePropertyEntry.cs
- LogRestartAreaEnumerator.cs
- XmlSchemaSimpleTypeList.cs
- LayoutDump.cs
- ScriptingRoleServiceSection.cs
- SmiGettersStream.cs
- TypeLoader.cs
- DesignerAttribute.cs
- NotifyParentPropertyAttribute.cs
- DataListComponentEditor.cs
- ServiceProviders.cs
- PassportAuthentication.cs
- CompensableActivity.cs
- FtpWebRequest.cs
- ForwardPositionQuery.cs
- ObjectDataSourceChooseMethodsPanel.cs
- AppSettingsReader.cs
- FixedFlowMap.cs
- ValueConversionAttribute.cs
- SourceItem.cs
- XmlSchemaInferenceException.cs
- ProfileProvider.cs
- ScrollBarRenderer.cs
- IntegerValidator.cs
- StoreConnection.cs
- OleDbCommandBuilder.cs
- FixedSOMElement.cs
- CodeNamespace.cs
- StickyNote.cs
- TextClipboardData.cs
- ResourceAssociationTypeEnd.cs
- _ListenerRequestStream.cs
- DescendantQuery.cs
- NavigationPropertySingletonExpression.cs
- ListSortDescription.cs
- XmlObjectSerializerWriteContextComplexJson.cs
- SystemThemeKey.cs
- SubqueryRules.cs
- SerializationObjectManager.cs
- ClientSettingsStore.cs
- Constraint.cs
- FontUnitConverter.cs
- EncryptedData.cs
- Transactions.cs
- VariantWrapper.cs
- DocumentPageView.cs
- Visitor.cs
- RangeBase.cs
- Crypto.cs
- PathSegmentCollection.cs
- NotSupportedException.cs
- ModelPerspective.cs
- PolyLineSegment.cs
- DistributedTransactionPermission.cs