2009-06-12 Bill Holmes <billholmes54@gmail.com>
[mono.git] / mcs / class / System.Data.Linq / src / DbLinq / Data / Linq / Sugar / Expressions / StartIndexOffsetExpression.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Linq;\r
4 using System.Text;\r
5 using System.Linq.Expressions;\r
6 \r
7 #if MONO_STRICT\r
8 namespace System.Data.Linq.Sugar.Expressions\r
9 #else\r
10 namespace DbLinq.Data.Linq.Sugar.Expressions\r
11 #endif\r
12 {\r
13 #if !MONO_STRICT\r
14     public\r
15 #endif\r
16     class StartIndexOffsetExpression : MutableExpression\r
17     {\r
18         public const ExpressionType ExpressionType = (ExpressionType)CustomExpressionType.StartIndexOffset;\r
19         public bool StartsAtOne{get; private set;}\r
20         public Expression InnerExpression { get; private set; }\r
21 \r
22         public StartIndexOffsetExpression(bool startsAtOne, Expression startExpression)\r
23             : base(ExpressionType, typeof(int))\r
24         {\r
25             this.InnerExpression = startExpression;\r
26             this.StartsAtOne = startsAtOne;\r
27         }\r
28         public override IEnumerable<Expression> Operands\r
29         {\r
30             get\r
31             {\r
32                 return new Expression[] { this.InnerExpression };\r
33             }\r
34         }\r
35 \r
36         public override Expression Mutate(IList<Expression> newOperands)\r
37         {\r
38             this.InnerExpression = newOperands.First();\r
39             return InnerExpression;\r
40         }\r
41     }\r
42 }\r