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
- InsufficientMemoryException.cs
- BitmapEffectrendercontext.cs
- Region.cs
- TagMapCollection.cs
- BindingOperations.cs
- CompositionAdorner.cs
- TaskFileService.cs
- ToolstripProfessionalRenderer.cs
- BuildDependencySet.cs
- HTMLTagNameToTypeMapper.cs
- XmlDictionaryReaderQuotas.cs
- Directory.cs
- DecimalStorage.cs
- SortedDictionary.cs
- CFGGrammar.cs
- BufferedGraphicsContext.cs
- XmlAtomicValue.cs
- WebPartDisplayModeEventArgs.cs
- WaveHeader.cs
- Mouse.cs
- Stack.cs
- QueryCacheManager.cs
- DataGridViewDataErrorEventArgs.cs
- CardSpaceException.cs
- LoginView.cs
- ToolStripOverflowButton.cs
- DataGridPageChangedEventArgs.cs
- ChangeInterceptorAttribute.cs
- Accessors.cs
- Matrix.cs
- PropertyItemInternal.cs
- Tokenizer.cs
- Matrix3D.cs
- ErrorHandler.cs
- ZipIOFileItemStream.cs
- securestring.cs
- ImageSource.cs
- BuilderInfo.cs
- ZipIOEndOfCentralDirectoryBlock.cs
- XsltLoader.cs
- StickyNoteHelper.cs
- ScriptResourceMapping.cs
- ListBindableAttribute.cs
- ViewStateException.cs
- DocumentReferenceCollection.cs
- BamlBinaryWriter.cs
- CodeAccessSecurityEngine.cs
- DataControlLinkButton.cs
- Schema.cs
- CommandPlan.cs
- SortedSetDebugView.cs
- StoragePropertyMapping.cs
- PartialTrustVisibleAssembliesSection.cs
- WebPartCollection.cs
- PropertyMapper.cs
- LocalizeDesigner.cs
- InputDevice.cs
- ServiceModelSecurityTokenTypes.cs
- MenuItemStyleCollection.cs
- GridViewRow.cs
- FamilyTypeface.cs
- ServiceBuildProvider.cs
- SynchronizedRandom.cs
- Italic.cs
- TreeViewAutomationPeer.cs
- GeometryCollection.cs
- Missing.cs
- PageContentAsyncResult.cs
- _Connection.cs
- RenderData.cs
- LogRestartAreaEnumerator.cs
- FontNamesConverter.cs
- FilterQuery.cs
- NavigationHelper.cs
- webeventbuffer.cs
- FlatButtonAppearance.cs
- ComPlusTypeLoader.cs
- ToolStripContainerDesigner.cs
- StatusBar.cs
- LogicalTreeHelper.cs
- Resources.Designer.cs
- ApplicationContext.cs
- MultiSelector.cs
- CmsInterop.cs
- wmiprovider.cs
- DecoderExceptionFallback.cs
- IdentityHolder.cs
- LayoutEditorPart.cs
- DataSourceCacheDurationConverter.cs
- ActivityValidator.cs
- NamedPipeAppDomainProtocolHandler.cs
- NamespaceCollection.cs
- X509CertificateCollection.cs
- ArraySubsetEnumerator.cs
- PhysicalAddress.cs
- DecimalAnimationBase.cs
- Internal.cs
- entityreference_tresulttype.cs
- TextBreakpoint.cs
- CacheHelper.cs