Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / MIT / System / Web / Mobile / DeviceFilterDictionary.cs / 1305376 / DeviceFilterDictionary.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.Mobile { using System.Web; using System.Collections; using System.Reflection; using System.Diagnostics; using System.ComponentModel; [Obsolete("The System.Web.Mobile.dll assembly has been deprecated and should no longer be used. For information about how to develop ASP.NET mobile applications, see http://go.microsoft.com/fwlink/?LinkId=157231.")] internal class DeviceFilterDictionary { internal class ComparisonEvaluator { internal readonly String capabilityName; internal readonly String capabilityArgument; internal ComparisonEvaluator(String name, String argument) { Debug.Assert(name != null); capabilityName = name; capabilityArgument = argument; } } private Hashtable _comparisonEvaluators = null; private Hashtable _delegateEvaluators = null; internal DeviceFilterDictionary() { _comparisonEvaluators = new Hashtable(); _delegateEvaluators = new Hashtable(); } internal DeviceFilterDictionary(DeviceFilterDictionary original) { _comparisonEvaluators = (Hashtable)original._comparisonEvaluators.Clone(); _delegateEvaluators = (Hashtable)original._delegateEvaluators.Clone(); } internal void AddCapabilityDelegate(String delegateName, MobileCapabilities.EvaluateCapabilitiesDelegate evaluator) { _delegateEvaluators[delegateName] = evaluator; } private void CheckForComparisonDelegateLoops(String delegateName) { String nextDelegateName = delegateName; Hashtable alreadyReferencedDelegates = new Hashtable(); while(true) { ComparisonEvaluator nextComparisonEvaluator = (ComparisonEvaluator)_comparisonEvaluators[nextDelegateName]; if(nextComparisonEvaluator == null) { break; } if(alreadyReferencedDelegates.Contains(nextDelegateName)) { String msg = SR.GetString(SR.DevFiltDict_FoundLoop, nextComparisonEvaluator.capabilityName, delegateName); throw new Exception(msg); } alreadyReferencedDelegates[nextDelegateName] = null; nextDelegateName = nextComparisonEvaluator.capabilityName; } } internal void AddComparisonDelegate(String delegateName, String comparisonName, String argument) { _comparisonEvaluators[delegateName] = new ComparisonEvaluator(comparisonName, argument); CheckForComparisonDelegateLoops(delegateName); } internal bool FindComparisonEvaluator(String evaluatorName, out String capabilityName, out String capabilityArgument) { capabilityName = null; capabilityArgument = null; ComparisonEvaluator evaluator = (ComparisonEvaluator)_comparisonEvaluators[evaluatorName]; if(evaluator == null) { return false; } capabilityName = evaluator.capabilityName; capabilityArgument = evaluator.capabilityArgument; return true; } internal bool FindDelegateEvaluator(String evaluatorName, out MobileCapabilities.EvaluateCapabilitiesDelegate evaluatorDelegate) { evaluatorDelegate = null; MobileCapabilities.EvaluateCapabilitiesDelegate evaluator; evaluator = (MobileCapabilities.EvaluateCapabilitiesDelegate) _delegateEvaluators[evaluatorName]; if(evaluator == null) { return false; } evaluatorDelegate = evaluator; return true; } internal bool IsComparisonEvaluator(String evaluatorName) { return _comparisonEvaluators.Contains(evaluatorName); } internal bool IsDelegateEvaluator(String evaluatorName) { return _delegateEvaluators.Contains(evaluatorName); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.Mobile { using System.Web; using System.Collections; using System.Reflection; using System.Diagnostics; using System.ComponentModel; [Obsolete("The System.Web.Mobile.dll assembly has been deprecated and should no longer be used. For information about how to develop ASP.NET mobile applications, see http://go.microsoft.com/fwlink/?LinkId=157231.")] internal class DeviceFilterDictionary { internal class ComparisonEvaluator { internal readonly String capabilityName; internal readonly String capabilityArgument; internal ComparisonEvaluator(String name, String argument) { Debug.Assert(name != null); capabilityName = name; capabilityArgument = argument; } } private Hashtable _comparisonEvaluators = null; private Hashtable _delegateEvaluators = null; internal DeviceFilterDictionary() { _comparisonEvaluators = new Hashtable(); _delegateEvaluators = new Hashtable(); } internal DeviceFilterDictionary(DeviceFilterDictionary original) { _comparisonEvaluators = (Hashtable)original._comparisonEvaluators.Clone(); _delegateEvaluators = (Hashtable)original._delegateEvaluators.Clone(); } internal void AddCapabilityDelegate(String delegateName, MobileCapabilities.EvaluateCapabilitiesDelegate evaluator) { _delegateEvaluators[delegateName] = evaluator; } private void CheckForComparisonDelegateLoops(String delegateName) { String nextDelegateName = delegateName; Hashtable alreadyReferencedDelegates = new Hashtable(); while(true) { ComparisonEvaluator nextComparisonEvaluator = (ComparisonEvaluator)_comparisonEvaluators[nextDelegateName]; if(nextComparisonEvaluator == null) { break; } if(alreadyReferencedDelegates.Contains(nextDelegateName)) { String msg = SR.GetString(SR.DevFiltDict_FoundLoop, nextComparisonEvaluator.capabilityName, delegateName); throw new Exception(msg); } alreadyReferencedDelegates[nextDelegateName] = null; nextDelegateName = nextComparisonEvaluator.capabilityName; } } internal void AddComparisonDelegate(String delegateName, String comparisonName, String argument) { _comparisonEvaluators[delegateName] = new ComparisonEvaluator(comparisonName, argument); CheckForComparisonDelegateLoops(delegateName); } internal bool FindComparisonEvaluator(String evaluatorName, out String capabilityName, out String capabilityArgument) { capabilityName = null; capabilityArgument = null; ComparisonEvaluator evaluator = (ComparisonEvaluator)_comparisonEvaluators[evaluatorName]; if(evaluator == null) { return false; } capabilityName = evaluator.capabilityName; capabilityArgument = evaluator.capabilityArgument; return true; } internal bool FindDelegateEvaluator(String evaluatorName, out MobileCapabilities.EvaluateCapabilitiesDelegate evaluatorDelegate) { evaluatorDelegate = null; MobileCapabilities.EvaluateCapabilitiesDelegate evaluator; evaluator = (MobileCapabilities.EvaluateCapabilitiesDelegate) _delegateEvaluators[evaluatorName]; if(evaluator == null) { return false; } evaluatorDelegate = evaluator; return true; } internal bool IsComparisonEvaluator(String evaluatorName) { return _comparisonEvaluators.Contains(evaluatorName); } internal bool IsDelegateEvaluator(String evaluatorName) { return _delegateEvaluators.Contains(evaluatorName); } } } // 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
- XmlSchemaComplexType.cs
- WindowsEditBoxRange.cs
- ModelItem.cs
- SingleSelectRootGridEntry.cs
- RoutedEventConverter.cs
- ListViewGroup.cs
- DataListAutoFormat.cs
- Codec.cs
- RepeaterItemEventArgs.cs
- BinaryReader.cs
- QueryOperationResponseOfT.cs
- ReadOnlyNameValueCollection.cs
- CompilerLocalReference.cs
- XmlSchemaAttribute.cs
- VScrollBar.cs
- ProfileGroupSettingsCollection.cs
- CfgParser.cs
- ObjectStateManagerMetadata.cs
- XmlSchemaAttributeGroupRef.cs
- XmlDataSource.cs
- HwndHostAutomationPeer.cs
- DispatcherTimer.cs
- EventEntry.cs
- ModelFunctionTypeElement.cs
- XmlArrayItemAttributes.cs
- PermissionListSet.cs
- DataTemplateSelector.cs
- ListControl.cs
- ComponentSerializationService.cs
- ClusterSafeNativeMethods.cs
- SqlReorderer.cs
- RequestCache.cs
- SettingsSavedEventArgs.cs
- HelpInfo.cs
- StringCollectionEditor.cs
- Journal.cs
- UriExt.cs
- DataGridColumnReorderingEventArgs.cs
- DispatcherFrame.cs
- SqlTypeConverter.cs
- CodeTypeOfExpression.cs
- VerticalConnector.xaml.cs
- NativeWindow.cs
- VirtualizingStackPanel.cs
- ValidationRule.cs
- TableChangeProcessor.cs
- Logging.cs
- Executor.cs
- SecurityRuntime.cs
- Cursor.cs
- TextTreeTextBlock.cs
- ObjectCloneHelper.cs
- XmlSerializationWriter.cs
- StringConcat.cs
- SchemaType.cs
- unsafeIndexingFilterStream.cs
- NativeCppClassAttribute.cs
- ThreadStartException.cs
- DataGridSortCommandEventArgs.cs
- TabControl.cs
- VariableReference.cs
- UndoManager.cs
- DataPagerFieldItem.cs
- ServicePointManager.cs
- Facet.cs
- Lasso.cs
- LinearGradientBrush.cs
- PropertyGridEditorPart.cs
- AutomationPatternInfo.cs
- Scanner.cs
- WebHostScriptMappingsInstallComponent.cs
- MethodBuilderInstantiation.cs
- EventManager.cs
- TransformerTypeCollection.cs
- Module.cs
- DesigntimeLicenseContext.cs
- ModuleElement.cs
- AuthenticateEventArgs.cs
- FigureParagraph.cs
- EpmTargetTree.cs
- FileUpload.cs
- ScriptModule.cs
- SignatureResourceHelper.cs
- EventQueueState.cs
- CharAnimationBase.cs
- SettingsPropertyValueCollection.cs
- DocComment.cs
- PathFigureCollection.cs
- Pkcs7Recipient.cs
- CountdownEvent.cs
- TraceLevelStore.cs
- XmlLanguage.cs
- XmlHierarchicalEnumerable.cs
- RightsManagementEncryptionTransform.cs
- StrokeIntersection.cs
- UpdateException.cs
- Pkcs7Signer.cs
- _NtlmClient.cs
- entityreference_tresulttype.cs
- NotCondition.cs