Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Data / System / Data / Filter / ConstNode.cs / 1305376 / ConstNode.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //[....] //----------------------------------------------------------------------------- namespace System.Data { using System; using System.Diagnostics; using System.Collections.Generic; using System.ComponentModel; using System.Globalization; internal sealed class ConstNode : ExpressionNode { internal readonly object val; internal ConstNode(DataTable table, ValueType type, object constant) : this(table, type, constant, true) { } internal ConstNode(DataTable table, ValueType type, object constant, bool fParseQuotes) : base(table) { switch (type) { case ValueType.Null: this.val = DBNull.Value; break; case ValueType.Numeric: this.val = SmallestNumeric(constant); break; case ValueType.Decimal: this.val = SmallestDecimal(constant); break; case ValueType.Float: this.val = Convert.ToDouble(constant, NumberFormatInfo.InvariantInfo); break; case ValueType.Bool: this.val = Convert.ToBoolean(constant, CultureInfo.InvariantCulture); break; case ValueType.Str: if (fParseQuotes) { // replace '' with one ' this.val = ((string)constant).Replace("''", "'"); } else { this.val = (string)constant; } break; case ValueType.Date: this.val = DateTime.Parse((string)constant, CultureInfo.InvariantCulture); break; case ValueType.Object: this.val = constant; break; default: Debug.Assert(false, "NYI"); goto case ValueType.Object; } } internal override void Bind(DataTable table, Listlist) { BindTable(table); } internal override object Eval() { return val; } internal override object Eval(DataRow row, DataRowVersion version) { return Eval(); } internal override object Eval(int[] recordNos) { return Eval(); } internal override bool IsConstant() { return true; } internal override bool IsTableConstant() { return true; } internal override bool HasLocalAggregate() { return false; } internal override bool HasRemoteAggregate() { return false; } internal override ExpressionNode Optimize() { return this; } private object SmallestDecimal(object constant) { if (null == constant) { return 0d; } else { string sval = (constant as string); if (null != sval) { decimal r12; if (Decimal.TryParse(sval, NumberStyles.Number, NumberFormatInfo.InvariantInfo, out r12)) { return r12; } double r8; if (Double.TryParse(sval, NumberStyles.Float| NumberStyles.AllowThousands, NumberFormatInfo.InvariantInfo, out r8)) { return r8; } } else { IConvertible convertible = (constant as IConvertible); if (null != convertible) { try { return convertible.ToDecimal(NumberFormatInfo.InvariantInfo); } catch (System.ArgumentException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } catch (System.FormatException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } catch (System.InvalidCastException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } catch (System.OverflowException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } try { return convertible.ToDouble(NumberFormatInfo.InvariantInfo); } catch (System.ArgumentException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } catch (System.FormatException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } catch (System.InvalidCastException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } catch (System.OverflowException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } } } } return constant; } private object SmallestNumeric(object constant) { if (null == constant) { return (int)0; } else { string sval = (constant as string); if (null != sval) { int i4; if (Int32.TryParse(sval, NumberStyles.Integer, NumberFormatInfo.InvariantInfo, out i4)) { return i4; } long i8; if (Int64.TryParse(sval, NumberStyles.Integer, NumberFormatInfo.InvariantInfo, out i8)) { return i8; } double r8; if (Double.TryParse(sval, NumberStyles.Float| NumberStyles.AllowThousands, NumberFormatInfo.InvariantInfo, out r8)) { return r8; } } else { IConvertible convertible = (constant as IConvertible); if (null != convertible) { try { return convertible.ToInt32(NumberFormatInfo.InvariantInfo); } catch (System.ArgumentException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } catch (System.FormatException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } catch (System.InvalidCastException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } catch (System.OverflowException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } try { return convertible.ToInt64(NumberFormatInfo.InvariantInfo); } catch (System.ArgumentException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } catch (System.FormatException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } catch (System.InvalidCastException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } catch (System.OverflowException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } try { return convertible.ToDouble(NumberFormatInfo.InvariantInfo); } catch (System.ArgumentException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } catch (System.FormatException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } catch (System.InvalidCastException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } catch (System.OverflowException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } } } } return constant; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //[....] //----------------------------------------------------------------------------- namespace System.Data { using System; using System.Diagnostics; using System.Collections.Generic; using System.ComponentModel; using System.Globalization; internal sealed class ConstNode : ExpressionNode { internal readonly object val; internal ConstNode(DataTable table, ValueType type, object constant) : this(table, type, constant, true) { } internal ConstNode(DataTable table, ValueType type, object constant, bool fParseQuotes) : base(table) { switch (type) { case ValueType.Null: this.val = DBNull.Value; break; case ValueType.Numeric: this.val = SmallestNumeric(constant); break; case ValueType.Decimal: this.val = SmallestDecimal(constant); break; case ValueType.Float: this.val = Convert.ToDouble(constant, NumberFormatInfo.InvariantInfo); break; case ValueType.Bool: this.val = Convert.ToBoolean(constant, CultureInfo.InvariantCulture); break; case ValueType.Str: if (fParseQuotes) { // replace '' with one ' this.val = ((string)constant).Replace("''", "'"); } else { this.val = (string)constant; } break; case ValueType.Date: this.val = DateTime.Parse((string)constant, CultureInfo.InvariantCulture); break; case ValueType.Object: this.val = constant; break; default: Debug.Assert(false, "NYI"); goto case ValueType.Object; } } internal override void Bind(DataTable table, Listlist) { BindTable(table); } internal override object Eval() { return val; } internal override object Eval(DataRow row, DataRowVersion version) { return Eval(); } internal override object Eval(int[] recordNos) { return Eval(); } internal override bool IsConstant() { return true; } internal override bool IsTableConstant() { return true; } internal override bool HasLocalAggregate() { return false; } internal override bool HasRemoteAggregate() { return false; } internal override ExpressionNode Optimize() { return this; } private object SmallestDecimal(object constant) { if (null == constant) { return 0d; } else { string sval = (constant as string); if (null != sval) { decimal r12; if (Decimal.TryParse(sval, NumberStyles.Number, NumberFormatInfo.InvariantInfo, out r12)) { return r12; } double r8; if (Double.TryParse(sval, NumberStyles.Float| NumberStyles.AllowThousands, NumberFormatInfo.InvariantInfo, out r8)) { return r8; } } else { IConvertible convertible = (constant as IConvertible); if (null != convertible) { try { return convertible.ToDecimal(NumberFormatInfo.InvariantInfo); } catch (System.ArgumentException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } catch (System.FormatException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } catch (System.InvalidCastException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } catch (System.OverflowException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } try { return convertible.ToDouble(NumberFormatInfo.InvariantInfo); } catch (System.ArgumentException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } catch (System.FormatException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } catch (System.InvalidCastException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } catch (System.OverflowException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } } } } return constant; } private object SmallestNumeric(object constant) { if (null == constant) { return (int)0; } else { string sval = (constant as string); if (null != sval) { int i4; if (Int32.TryParse(sval, NumberStyles.Integer, NumberFormatInfo.InvariantInfo, out i4)) { return i4; } long i8; if (Int64.TryParse(sval, NumberStyles.Integer, NumberFormatInfo.InvariantInfo, out i8)) { return i8; } double r8; if (Double.TryParse(sval, NumberStyles.Float| NumberStyles.AllowThousands, NumberFormatInfo.InvariantInfo, out r8)) { return r8; } } else { IConvertible convertible = (constant as IConvertible); if (null != convertible) { try { return convertible.ToInt32(NumberFormatInfo.InvariantInfo); } catch (System.ArgumentException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } catch (System.FormatException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } catch (System.InvalidCastException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } catch (System.OverflowException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } try { return convertible.ToInt64(NumberFormatInfo.InvariantInfo); } catch (System.ArgumentException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } catch (System.FormatException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } catch (System.InvalidCastException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } catch (System.OverflowException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } try { return convertible.ToDouble(NumberFormatInfo.InvariantInfo); } catch (System.ArgumentException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } catch (System.FormatException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } catch (System.InvalidCastException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } catch (System.OverflowException e) { ExceptionBuilder.TraceExceptionWithoutRethrow(e); } } } } return constant; } } } // 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
- Variant.cs
- WebPartDescription.cs
- OpenTypeLayoutCache.cs
- EventSinkActivity.cs
- XmlDownloadManager.cs
- WindowsTreeView.cs
- ProfileProvider.cs
- AuditLog.cs
- SqlExpressionNullability.cs
- DeflateStream.cs
- EmptyEnumerator.cs
- MultiBinding.cs
- Assert.cs
- MessageLoggingElement.cs
- ContextStack.cs
- TagMapCollection.cs
- AutoGeneratedField.cs
- BindingUtils.cs
- VisualTarget.cs
- DataGridViewRowConverter.cs
- RoutedEventValueSerializer.cs
- UserControl.cs
- CopyOnWriteList.cs
- XmlCountingReader.cs
- VerticalAlignConverter.cs
- IntellisenseTextBox.cs
- RoleManagerEventArgs.cs
- SessionSwitchEventArgs.cs
- DockPanel.cs
- GPPOINT.cs
- ObjectDataSourceWizardForm.cs
- PropertyPushdownHelper.cs
- TextEditorContextMenu.cs
- ItemTypeToolStripMenuItem.cs
- SqlTransaction.cs
- MSG.cs
- GridViewCancelEditEventArgs.cs
- IdentityManager.cs
- SimpleNameService.cs
- DataTablePropertyDescriptor.cs
- SourceSwitch.cs
- EncryptRequest.cs
- TextSpan.cs
- XamlClipboardData.cs
- PropertyEntry.cs
- JobStaple.cs
- SerializationSectionGroup.cs
- DataExchangeServiceBinder.cs
- ISCIIEncoding.cs
- SvcMapFile.cs
- XmlAnyElementAttributes.cs
- VisualBrush.cs
- HttpClientChannel.cs
- DataGridViewTextBoxCell.cs
- ModelService.cs
- DrawingImage.cs
- HttpSessionStateBase.cs
- Frame.cs
- Rect3DValueSerializer.cs
- NavigationExpr.cs
- DetailsViewRowCollection.cs
- ItemsControl.cs
- HttpResponseInternalWrapper.cs
- Misc.cs
- BulletedList.cs
- FlowLayoutPanel.cs
- RegexNode.cs
- ExpressionNode.cs
- IUnknownConstantAttribute.cs
- X509Utils.cs
- StrokeNodeOperations2.cs
- XPathNavigator.cs
- XPathParser.cs
- ClientConfigPaths.cs
- GeometryValueSerializer.cs
- validation.cs
- RangeBaseAutomationPeer.cs
- NavigatorOutput.cs
- ArgumentOutOfRangeException.cs
- CodeTypeReferenceExpression.cs
- MultiBindingExpression.cs
- ColumnMapTranslator.cs
- WebPartActionVerb.cs
- EntityDataSourceSelectedEventArgs.cs
- BigInt.cs
- ApplicationContext.cs
- MachineKeySection.cs
- Pen.cs
- X509Utils.cs
- AppearanceEditorPart.cs
- TemplatePartAttribute.cs
- TreeNodeCollectionEditorDialog.cs
- PriorityQueue.cs
- EntityProxyFactory.cs
- SqlDataRecord.cs
- BinHexDecoder.cs
- ItemsPresenter.cs
- DynamicValidatorEventArgs.cs
- BookmarkWorkItem.cs
- DataRecordInternal.cs