PageRenderTime 45ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/Source/facebook.Linq/Linq/FqlModel/Binary.cs

https://bitbucket.org/assaframan/facebooklinq
C# | 203 lines | 192 code | 7 blank | 4 comment | 6 complexity | cdeea677bb7cf730d02df7994e7aa4a3 MD5 | raw file
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Reflection;
  6. using System.Linq.Expressions;
  7. namespace facebook.Linq
  8. {
  9. internal class SqlBinary : SqlSimpleTypeExpression
  10. {
  11. // Fields
  12. private SqlExpression left;
  13. private MethodInfo method;
  14. private SqlExpression right;
  15. // Methods
  16. internal SqlBinary(SqlNodeType nt, Type clrType, ProviderType sqlType, SqlExpression left, SqlExpression right)
  17. : this(nt, clrType, sqlType, left, right, null)
  18. {
  19. }
  20. internal SqlBinary(SqlNodeType nt, Type clrType, ProviderType sqlType, SqlExpression left, SqlExpression right, MethodInfo method)
  21. : base(nt, clrType, sqlType, right.SourceExpression)
  22. {
  23. switch (nt)
  24. {
  25. case SqlNodeType.BitAnd:
  26. case SqlNodeType.BitOr:
  27. case SqlNodeType.BitXor:
  28. case SqlNodeType.And:
  29. case SqlNodeType.Add:
  30. case SqlNodeType.Coalesce:
  31. case SqlNodeType.Concat:
  32. case SqlNodeType.Div:
  33. case SqlNodeType.EQ:
  34. case SqlNodeType.EQ2V:
  35. case SqlNodeType.LE:
  36. case SqlNodeType.LT:
  37. case SqlNodeType.GE:
  38. case SqlNodeType.GT:
  39. case SqlNodeType.Mod:
  40. case SqlNodeType.Mul:
  41. case SqlNodeType.NE:
  42. case SqlNodeType.NE2V:
  43. case SqlNodeType.Or:
  44. case SqlNodeType.Sub:
  45. this.Left = left;
  46. this.Right = right;
  47. this.method = method;
  48. return;
  49. }
  50. throw new Exception("Unexpected node: "+nt);
  51. }
  52. // Properties
  53. internal SqlExpression Left
  54. {
  55. get
  56. {
  57. return this.left;
  58. }
  59. set
  60. {
  61. if (value == null)
  62. {
  63. throw new ArgumentException("value");
  64. }
  65. this.left = value;
  66. }
  67. }
  68. internal MethodInfo Method
  69. {
  70. get
  71. {
  72. return this.method;
  73. }
  74. }
  75. internal SqlExpression Right
  76. {
  77. get
  78. {
  79. return this.right;
  80. }
  81. set
  82. {
  83. if (value == null)
  84. {
  85. throw new ArgumentException("value");
  86. }
  87. this.right = value;
  88. }
  89. }
  90. }
  91. internal static class SqlBinaryExtensions
  92. {
  93. public static SqlNodeType Convert(this ExpressionType et)
  94. {
  95. switch (et)
  96. {
  97. case ExpressionType.Add:
  98. return SqlNodeType.Add;
  99. case ExpressionType.AddChecked:
  100. break;
  101. case ExpressionType.And:
  102. return SqlNodeType.And;
  103. case ExpressionType.AndAlso:
  104. return SqlNodeType.And;
  105. case ExpressionType.ArrayIndex:
  106. break;
  107. case ExpressionType.ArrayLength:
  108. break;
  109. case ExpressionType.Call:
  110. break;
  111. case ExpressionType.Coalesce:
  112. break;
  113. case ExpressionType.Conditional:
  114. break;
  115. case ExpressionType.Constant:
  116. break;
  117. case ExpressionType.Convert:
  118. break;
  119. case ExpressionType.ConvertChecked:
  120. break;
  121. case ExpressionType.Divide:
  122. break;
  123. case ExpressionType.Equal:
  124. return SqlNodeType.EQ;
  125. //break;
  126. case ExpressionType.ExclusiveOr:
  127. break;
  128. case ExpressionType.GreaterThan:
  129. break;
  130. case ExpressionType.GreaterThanOrEqual:
  131. break;
  132. case ExpressionType.Invoke:
  133. break;
  134. case ExpressionType.Lambda:
  135. break;
  136. case ExpressionType.LeftShift:
  137. break;
  138. case ExpressionType.LessThan:
  139. return SqlNodeType.LT;
  140. case ExpressionType.LessThanOrEqual:
  141. return SqlNodeType.LE;
  142. case ExpressionType.ListInit:
  143. break;
  144. case ExpressionType.MemberAccess:
  145. break;
  146. case ExpressionType.MemberInit:
  147. break;
  148. case ExpressionType.Modulo:
  149. break;
  150. case ExpressionType.Multiply:
  151. break;
  152. case ExpressionType.MultiplyChecked:
  153. break;
  154. case ExpressionType.Negate:
  155. break;
  156. case ExpressionType.NegateChecked:
  157. break;
  158. case ExpressionType.New:
  159. break;
  160. case ExpressionType.NewArrayBounds:
  161. break;
  162. case ExpressionType.NewArrayInit:
  163. break;
  164. case ExpressionType.Not:
  165. break;
  166. case ExpressionType.NotEqual:
  167. break;
  168. case ExpressionType.Or:
  169. return SqlNodeType.Or;
  170. case ExpressionType.OrElse:
  171. break;
  172. case ExpressionType.Parameter:
  173. break;
  174. case ExpressionType.Power:
  175. break;
  176. case ExpressionType.Quote:
  177. break;
  178. case ExpressionType.RightShift:
  179. break;
  180. case ExpressionType.Subtract:
  181. break;
  182. case ExpressionType.SubtractChecked:
  183. break;
  184. case ExpressionType.TypeAs:
  185. break;
  186. case ExpressionType.TypeIs:
  187. break;
  188. case ExpressionType.UnaryPlus:
  189. break;
  190. default:
  191. break;
  192. }
  193. throw new Exception();
  194. }
  195. }
  196. }