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
- PeerToPeerException.cs
- MaterialGroup.cs
- ProxyWebPart.cs
- NativeMethods.cs
- XmlSchemaNotation.cs
- AsyncCallback.cs
- XmlDataFileEditor.cs
- Bold.cs
- MsmqVerifier.cs
- FixedElement.cs
- _BaseOverlappedAsyncResult.cs
- Events.cs
- RandomNumberGenerator.cs
- PersistenceMetadataNamespace.cs
- TransportDefaults.cs
- MobileControlsSectionHandler.cs
- SqlColumnizer.cs
- FileStream.cs
- InitializationEventAttribute.cs
- CommonGetThemePartSize.cs
- VideoDrawing.cs
- UserControlCodeDomTreeGenerator.cs
- ToolStripDropDownClosedEventArgs.cs
- DoubleAnimationBase.cs
- FeatureSupport.cs
- HasRunnableWorkflowEvent.cs
- NumberEdit.cs
- XmlWrappingReader.cs
- RecordManager.cs
- RichTextBox.cs
- TTSEngineTypes.cs
- UnmanagedMemoryStream.cs
- ConfigXmlComment.cs
- SpotLight.cs
- XMLUtil.cs
- MetadataFile.cs
- CounterSampleCalculator.cs
- MemberCollection.cs
- UnsafePeerToPeerMethods.cs
- DrawTreeNodeEventArgs.cs
- DataGridHelper.cs
- OdbcConnectionFactory.cs
- XamlUtilities.cs
- ViewStateModeByIdAttribute.cs
- MsmqBindingElementBase.cs
- DataMemberListEditor.cs
- HttpServerVarsCollection.cs
- ObjectDataProvider.cs
- QilVisitor.cs
- HtmlTextArea.cs
- _ListenerAsyncResult.cs
- AddInControllerImpl.cs
- TextMessageEncoder.cs
- ListenerElementsCollection.cs
- DataContractSerializerSection.cs
- EdmScalarPropertyAttribute.cs
- ByteStream.cs
- GcSettings.cs
- SystemResourceKey.cs
- ListItemsPage.cs
- Pair.cs
- DrawingServices.cs
- TableRowGroup.cs
- ExceptionUtil.cs
- SoundPlayerAction.cs
- SspiNegotiationTokenProviderState.cs
- TableRow.cs
- ResourcePermissionBaseEntry.cs
- RewritingProcessor.cs
- recordstatefactory.cs
- XmlSchemaGroupRef.cs
- ObfuscationAttribute.cs
- ProcessModelSection.cs
- SwitchElementsCollection.cs
- DeferredReference.cs
- HttpConfigurationContext.cs
- AsymmetricSignatureFormatter.cs
- ObjectListCommandsPage.cs
- DataServiceRequestOfT.cs
- RegisteredScript.cs
- TextStore.cs
- CollectionDataContractAttribute.cs
- BufferedWebEventProvider.cs
- SelectedGridItemChangedEvent.cs
- SchemaCreator.cs
- CultureTableRecord.cs
- DocumentPageView.cs
- GridEntry.cs
- HwndKeyboardInputProvider.cs
- PropertyDescriptor.cs
- OdbcConnectionHandle.cs
- CodeTypeReferenceExpression.cs
- FamilyCollection.cs
- DbConnectionInternal.cs
- CellLabel.cs
- UnmanagedMemoryStreamWrapper.cs
- CatalogZoneAutoFormat.cs
- SkipQueryOptionExpression.cs
- PaintValueEventArgs.cs
- StringResourceManager.cs