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
- DrawListViewItemEventArgs.cs
- TileModeValidation.cs
- AttributeUsageAttribute.cs
- CompiledQuery.cs
- Point3DValueSerializer.cs
- XmlException.cs
- WebAdminConfigurationHelper.cs
- ObjectAnimationUsingKeyFrames.cs
- UIElementIsland.cs
- ColumnHeaderConverter.cs
- WeakEventTable.cs
- GcSettings.cs
- ArcSegment.cs
- StreamResourceInfo.cs
- MD5CryptoServiceProvider.cs
- AQNBuilder.cs
- UITypeEditor.cs
- GridViewEditEventArgs.cs
- LinqDataSource.cs
- SafeFindHandle.cs
- QilParameter.cs
- IntSecurity.cs
- HttpStreamMessageEncoderFactory.cs
- AutomationElement.cs
- TextContainer.cs
- StringAttributeCollection.cs
- Helpers.cs
- LoginView.cs
- Calendar.cs
- BooleanKeyFrameCollection.cs
- XmlUTF8TextWriter.cs
- SslStream.cs
- PermissionListSet.cs
- DelegateSerializationHolder.cs
- VisualBasicReference.cs
- XmlCharCheckingWriter.cs
- IndependentAnimationStorage.cs
- DateBoldEvent.cs
- WbemProvider.cs
- DefinitionBase.cs
- RenderCapability.cs
- Condition.cs
- RtfToXamlLexer.cs
- SmiGettersStream.cs
- FixedBufferAttribute.cs
- BinaryParser.cs
- HtmlFormParameterReader.cs
- TraceContextEventArgs.cs
- ApplicationException.cs
- DelegateTypeInfo.cs
- Publisher.cs
- AppDomainUnloadedException.cs
- XmlDocumentFragment.cs
- SubqueryRules.cs
- BaseCodePageEncoding.cs
- WorkflowRuntimeEndpoint.cs
- StyleCollection.cs
- PriorityQueue.cs
- GridViewEditEventArgs.cs
- MediaCommands.cs
- SqlInfoMessageEvent.cs
- HttpPostedFile.cs
- SchemaTableOptionalColumn.cs
- XmlReflectionImporter.cs
- EmptyStringExpandableObjectConverter.cs
- DataGridPageChangedEventArgs.cs
- EllipseGeometry.cs
- ErrorProvider.cs
- SplineQuaternionKeyFrame.cs
- _NativeSSPI.cs
- UrlPropertyAttribute.cs
- TraceContextEventArgs.cs
- Operator.cs
- SqlProviderServices.cs
- ImageKeyConverter.cs
- RemoteWebConfigurationHost.cs
- EntityCommandExecutionException.cs
- EncryptedXml.cs
- ZipIOExtraFieldElement.cs
- XPathNavigatorKeyComparer.cs
- DataTableReaderListener.cs
- StateDesigner.LayoutSelectionGlyph.cs
- ToolStripGripRenderEventArgs.cs
- PenThreadWorker.cs
- DesignerDataColumn.cs
- MimeBasePart.cs
- XPathExpr.cs
- ValueType.cs
- Path.cs
- WebMessageBodyStyleHelper.cs
- XmlSerializerFactory.cs
- WebBrowserProgressChangedEventHandler.cs
- DependentList.cs
- VideoDrawing.cs
- EdmComplexTypeAttribute.cs
- Parser.cs
- Application.cs
- MatrixTransform3D.cs
- WindowsIdentity.cs
- Icon.cs