Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Data / System / Data / Filter / ExpressionNode.cs / 1305376 / ExpressionNode.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// [....]
// [....]
// [....]
//-----------------------------------------------------------------------------
namespace System.Data {
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Data.SqlTypes;
internal abstract class ExpressionNode {
private DataTable _table;
protected ExpressionNode(DataTable table) {
_table = table;
}
internal IFormatProvider FormatProvider {
get {
return ((null != _table) ? _table.FormatProvider : System.Globalization.CultureInfo.CurrentCulture);
}
}
internal virtual bool IsSqlColumn{
get{
return false;
}
}
protected DataTable table {
get { return _table; }
}
protected void BindTable(DataTable table) {
// when the expression is created, DataColumn may not be associated with a table yet
_table = table;
}
internal abstract void Bind(DataTable table, List list);
internal abstract object Eval();
internal abstract object Eval(DataRow row, DataRowVersion version);
internal abstract object Eval(int[] recordNos);
internal abstract bool IsConstant();
internal abstract bool IsTableConstant();
internal abstract bool HasLocalAggregate();
internal abstract bool HasRemoteAggregate();
internal abstract ExpressionNode Optimize();
internal virtual bool DependsOn(DataColumn column) {
return false;
}
internal static bool IsInteger(StorageType type) {
return(type == StorageType.Int16 ||
type == StorageType.Int32 ||
type == StorageType.Int64 ||
type == StorageType.UInt16 ||
type == StorageType.UInt32 ||
type == StorageType.UInt64 ||
type == StorageType.SByte ||
type == StorageType.Byte);
}
internal static bool IsIntegerSql(StorageType type) {
return(type == StorageType.Int16 ||
type == StorageType.Int32 ||
type == StorageType.Int64 ||
type == StorageType.UInt16 ||
type == StorageType.UInt32 ||
type == StorageType.UInt64 ||
type == StorageType.SByte ||
type == StorageType.Byte ||
type == StorageType.SqlInt64 ||
type == StorageType.SqlInt32 ||
type == StorageType.SqlInt16 ||
type == StorageType.SqlByte);
}
internal static bool IsSigned(StorageType type) {
return(type == StorageType.Int16 ||
type == StorageType.Int32 ||
type == StorageType.Int64 ||
type == StorageType.SByte ||
IsFloat(type));
}
internal static bool IsSignedSql(StorageType type) {
return(type == StorageType.Int16 || // IsSigned(type)
type == StorageType.Int32 ||
type == StorageType.Int64 ||
type == StorageType.SByte ||
type == StorageType.SqlInt64 ||
type == StorageType.SqlInt32 ||
type == StorageType.SqlInt16 ||
IsFloatSql(type));
}
internal static bool IsUnsigned(StorageType type) {
return(type == StorageType.UInt16 ||
type == StorageType.UInt32 ||
type == StorageType.UInt64 ||
type == StorageType.Byte);
}
internal static bool IsUnsignedSql(StorageType type) {
return(type == StorageType.UInt16 ||
type == StorageType.UInt32 ||
type == StorageType.UInt64 ||
type == StorageType.SqlByte ||// SqlByte represents an 8-bit unsigned integer, in the range of 0 through 255,
type == StorageType.Byte);
}
internal static bool IsNumeric(StorageType type) {
return(IsFloat(type) ||
IsInteger(type));
}
internal static bool IsNumericSql(StorageType type) {
return(IsFloatSql(type) ||
IsIntegerSql(type));
}
internal static bool IsFloat(StorageType type) {
return(type == StorageType.Single ||
type == StorageType.Double ||
type == StorageType.Decimal);
}
internal static bool IsFloatSql(StorageType type) {
return(type == StorageType.Single ||
type == StorageType.Double ||
type == StorageType.Decimal ||
type == StorageType.SqlDouble ||
type == StorageType.SqlDecimal || // I expect decimal to be Integer!
type == StorageType.SqlMoney || // if decimal is here, this should be definitely here!
type == StorageType.SqlSingle);
}
}
}
// 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
- Vertex.cs
- SQLMoneyStorage.cs
- ExtensionSimplifierMarkupObject.cs
- Queue.cs
- Fx.cs
- TcpAppDomainProtocolHandler.cs
- DataServiceRequestOfT.cs
- StylusPointPropertyInfo.cs
- TextTreeUndoUnit.cs
- NativeMethods.cs
- PersistenceContextEnlistment.cs
- Schema.cs
- Util.cs
- ManagementPath.cs
- Crc32.cs
- UseAttributeSetsAction.cs
- LayoutTable.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- BuildProviderAppliesToAttribute.cs
- FindRequestContext.cs
- TreeViewItem.cs
- ValidationErrorCollection.cs
- PackWebRequestFactory.cs
- PathFigure.cs
- RepeaterItemEventArgs.cs
- SiteOfOriginPart.cs
- SiteMapProvider.cs
- CryptographicAttribute.cs
- ToolStripRenderEventArgs.cs
- FieldCollectionEditor.cs
- ConnectionManagementElementCollection.cs
- EntityViewGenerationAttribute.cs
- ConfigUtil.cs
- FileFormatException.cs
- DataGridViewLinkCell.cs
- __ConsoleStream.cs
- ConstructorArgumentAttribute.cs
- _SafeNetHandles.cs
- OutputCacheProfileCollection.cs
- NativeMethods.cs
- Point3D.cs
- InternalConfigConfigurationFactory.cs
- PtsHost.cs
- ServicePoint.cs
- TreeNodeMouseHoverEvent.cs
- DragStartedEventArgs.cs
- MarkerProperties.cs
- LogExtent.cs
- URI.cs
- EventPropertyMap.cs
- SafeHandle.cs
- ImageListStreamer.cs
- AutoScrollExpandMessageFilter.cs
- VisualBasicDesignerHelper.cs
- BooleanExpr.cs
- SystemWebExtensionsSectionGroup.cs
- RegexFCD.cs
- MonthChangedEventArgs.cs
- SafeTokenHandle.cs
- HorizontalAlignConverter.cs
- FixedTextSelectionProcessor.cs
- RepeatInfo.cs
- Polyline.cs
- sqlstateclientmanager.cs
- Cursors.cs
- ListenerElementsCollection.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- XPathNavigator.cs
- SystemIcons.cs
- EntityRecordInfo.cs
- DataKey.cs
- CodeSubDirectory.cs
- DiscardableAttribute.cs
- XmlSchemaComplexContentRestriction.cs
- TransactionManager.cs
- TextModifierScope.cs
- GenericAuthenticationEventArgs.cs
- ConsoleKeyInfo.cs
- WebServiceHostFactory.cs
- RandomNumberGenerator.cs
- CurrencyManager.cs
- TableCell.cs
- RouteCollection.cs
- AnalyzedTree.cs
- StylusEditingBehavior.cs
- ADMembershipUser.cs
- EnumType.cs
- AmbiguousMatchException.cs
- DefaultAsyncDataDispatcher.cs
- ItemPager.cs
- _NegoStream.cs
- KeyBinding.cs
- CustomTypeDescriptor.cs
- DnsEndpointIdentity.cs
- CompositeScriptReference.cs
- QuerySafeNavigator.cs
- PropertyDescriptor.cs
- FixedTextBuilder.cs
- TargetParameterCountException.cs
- FieldNameLookup.cs