Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Data / System / Data / Filter / ExpressionNode.cs / 1 / 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.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- JavaScriptString.cs
- OpacityConverter.cs
- ProcessHostMapPath.cs
- CharStorage.cs
- NativeMethodsOther.cs
- ConfigurationSettings.cs
- ProcessExitedException.cs
- wmiprovider.cs
- SetterBaseCollection.cs
- SystemUdpStatistics.cs
- DBSchemaRow.cs
- BaseUriHelper.cs
- TextTreeFixupNode.cs
- WebHeaderCollection.cs
- HTMLTagNameToTypeMapper.cs
- TextBlockAutomationPeer.cs
- VectorCollectionValueSerializer.cs
- ACL.cs
- KeyboardNavigation.cs
- XmlSignificantWhitespace.cs
- InfoCardSymmetricCrypto.cs
- _HTTPDateParse.cs
- StylusEditingBehavior.cs
- ObjectQueryExecutionPlan.cs
- ConnectionPoint.cs
- CryptoProvider.cs
- ParentUndoUnit.cs
- MemberJoinTreeNode.cs
- DesignOnlyAttribute.cs
- EnumerableRowCollectionExtensions.cs
- XmlSchemaObject.cs
- DataGridViewSelectedCellCollection.cs
- SqlDataSourceEnumerator.cs
- IntegerValidatorAttribute.cs
- TextSelection.cs
- CodeDirectiveCollection.cs
- Predicate.cs
- CodeExpressionStatement.cs
- SingleAnimation.cs
- UInt64.cs
- ToggleProviderWrapper.cs
- DropSource.cs
- ToolboxService.cs
- VectorAnimation.cs
- ScrollProperties.cs
- ThrowHelper.cs
- HashStream.cs
- DrawingBrush.cs
- EraserBehavior.cs
- _ShellExpression.cs
- CfgParser.cs
- SafeTokenHandle.cs
- GenerateTemporaryTargetAssembly.cs
- Subtree.cs
- DistributedTransactionPermission.cs
- RoutedEventValueSerializer.cs
- EncoderFallback.cs
- XmlSerializationGeneratedCode.cs
- DBPropSet.cs
- ImportedNamespaceContextItem.cs
- PromptStyle.cs
- SapiAttributeParser.cs
- PointValueSerializer.cs
- ChildrenQuery.cs
- ForceCopyBuildProvider.cs
- ExtensionQuery.cs
- Mapping.cs
- DesignTimeXamlWriter.cs
- PickDesigner.xaml.cs
- XomlCompiler.cs
- GregorianCalendar.cs
- SmiRequestExecutor.cs
- filewebresponse.cs
- HuffmanTree.cs
- Label.cs
- CodeCatchClauseCollection.cs
- KnownTypes.cs
- ProviderBase.cs
- SqlWebEventProvider.cs
- WindowsTab.cs
- DataGridViewColumnDesignTimeVisibleAttribute.cs
- ConfigurationSectionGroup.cs
- RegisteredHiddenField.cs
- ProfileSettingsCollection.cs
- StringDictionaryEditor.cs
- Hashtable.cs
- ExpressionEvaluator.cs
- ColumnHeaderConverter.cs
- SqlNotificationRequest.cs
- HtmlTableRowCollection.cs
- Wildcard.cs
- HttpServerProtocol.cs
- PhonemeEventArgs.cs
- ToolStripMenuItem.cs
- Win32.cs
- Vector3D.cs
- InfiniteTimeSpanConverter.cs
- ResourceReferenceKeyNotFoundException.cs
- ContentPresenter.cs
- GatewayDefinition.cs