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
- CounterSample.cs
- DecoratedNameAttribute.cs
- EventProperty.cs
- ClientApiGenerator.cs
- TreeNodeStyleCollectionEditor.cs
- Rijndael.cs
- StructuralCache.cs
- TemplateApplicationHelper.cs
- StructuralType.cs
- CacheOutputQuery.cs
- KeyPullup.cs
- SecureUICommand.cs
- UserControlCodeDomTreeGenerator.cs
- DefaultEvaluationContext.cs
- DataMemberListEditor.cs
- TypedLocationWrapper.cs
- DbConnectionPoolGroupProviderInfo.cs
- BrowserCapabilitiesFactoryBase.cs
- GCHandleCookieTable.cs
- ClientEventManager.cs
- SoapFault.cs
- DropDownList.cs
- ConfigurationCollectionAttribute.cs
- EventEntry.cs
- WhereaboutsReader.cs
- RtfFormatStack.cs
- EditorServiceContext.cs
- HwndAppCommandInputProvider.cs
- SchemaElementLookUpTable.cs
- SafeProcessHandle.cs
- WindowsSolidBrush.cs
- DeadLetterQueue.cs
- GeometryCollection.cs
- NameTable.cs
- EntityDataSourceColumn.cs
- TextSegment.cs
- FlagPanel.cs
- ObjectStateEntryDbDataRecord.cs
- TextTreeText.cs
- CustomErrorsSection.cs
- UrlMappingsSection.cs
- GeneralTransform3DTo2D.cs
- WebZone.cs
- PenThread.cs
- Hashtable.cs
- ModelTreeEnumerator.cs
- ExpandSegment.cs
- DocumentReference.cs
- XamlTemplateSerializer.cs
- CharAnimationBase.cs
- ListControl.cs
- SubMenuStyleCollection.cs
- DbQueryCommandTree.cs
- TextCollapsingProperties.cs
- TextElement.cs
- Solver.cs
- BitmapFrameEncode.cs
- CapabilitiesState.cs
- ConstraintStruct.cs
- _OverlappedAsyncResult.cs
- ZipIORawDataFileBlock.cs
- XmlnsCompatibleWithAttribute.cs
- MonthCalendar.cs
- EntityContainerRelationshipSet.cs
- MexTcpBindingCollectionElement.cs
- serverconfig.cs
- FormsAuthenticationModule.cs
- OdbcRowUpdatingEvent.cs
- TimeSpanMinutesConverter.cs
- SettingsPropertyCollection.cs
- PageAsyncTask.cs
- BaseDataList.cs
- Deflater.cs
- ReflectionTypeLoadException.cs
- SID.cs
- SignatureDescription.cs
- SqlBuffer.cs
- SplitterCancelEvent.cs
- HMAC.cs
- returneventsaver.cs
- Encoder.cs
- PropertyConverter.cs
- CellIdBoolean.cs
- RijndaelCryptoServiceProvider.cs
- SQLInt32.cs
- TreeNodeCollection.cs
- WindowsMenu.cs
- WebPartChrome.cs
- RequestCachePolicyConverter.cs
- DataServiceRequestException.cs
- BevelBitmapEffect.cs
- TypeDescriptionProviderAttribute.cs
- CodeGenHelper.cs
- ConfigXmlText.cs
- TextParaLineResult.cs
- DynamicUpdateCommand.cs
- TextStore.cs
- PolygonHotSpot.cs
- SqlVersion.cs
- WeakReadOnlyCollection.cs