Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ AnalyzeExpression()

void System.Data.Select.AnalyzeExpression ( BinaryNode expr)
inlineprivate

Definition at line 67 of file Select.cs.

68 {
70 {
71 return;
72 }
73 if (expr._op == 27)
74 {
76 return;
77 }
78 if (expr._op == 26)
79 {
80 bool flag = false;
81 bool flag2 = false;
82 if (expr._left is BinaryNode)
83 {
84 AnalyzeExpression((BinaryNode)expr._left);
86 {
87 return;
88 }
89 flag = true;
90 }
91 else
92 {
93 UnaryNode unaryNode = expr._left as UnaryNode;
94 if (unaryNode != null)
95 {
96 while (unaryNode._op == 0 && unaryNode._right is UnaryNode && ((UnaryNode)unaryNode._right)._op == 0)
97 {
98 unaryNode = (UnaryNode)unaryNode._right;
99 }
100 if (unaryNode._op == 0 && unaryNode._right is BinaryNode)
101 {
102 AnalyzeExpression((BinaryNode)unaryNode._right);
104 {
105 return;
106 }
107 flag = true;
108 }
109 }
110 }
111 if (expr._right is BinaryNode)
112 {
113 AnalyzeExpression((BinaryNode)expr._right);
115 {
116 return;
117 }
118 flag2 = true;
119 }
120 else
121 {
122 UnaryNode unaryNode2 = expr._right as UnaryNode;
123 if (unaryNode2 != null)
124 {
125 while (unaryNode2._op == 0 && unaryNode2._right is UnaryNode && ((UnaryNode)unaryNode2._right)._op == 0)
126 {
127 unaryNode2 = (UnaryNode)unaryNode2._right;
128 }
129 if (unaryNode2._op == 0 && unaryNode2._right is BinaryNode)
130 {
131 AnalyzeExpression((BinaryNode)unaryNode2._right);
133 {
134 return;
135 }
136 flag2 = true;
137 }
138 }
139 }
140 if (!(flag && flag2))
141 {
142 ExpressionNode expressionNode = (flag ? expr._right : expr._left);
144 }
145 return;
146 }
147 if (IsSupportedOperator(expr._op))
148 {
149 if (expr._left is NameNode && expr._right is ConstNode)
150 {
151 ColumnInfo columnInfo = _candidateColumns[((NameNode)expr._left)._column.Ordinal];
152 columnInfo.expr = ((columnInfo.expr == null) ? expr : new BinaryNode(_table, 26, expr, columnInfo.expr));
153 if (expr._op == 7)
154 {
155 columnInfo.equalsOperator = true;
156 }
158 return;
159 }
160 if (expr._right is NameNode && expr._left is ConstNode)
161 {
162 ExpressionNode left = expr._left;
163 expr._left = expr._right;
164 expr._right = left;
165 switch (expr._op)
166 {
167 case 8:
168 expr._op = 9;
169 break;
170 case 9:
171 expr._op = 8;
172 break;
173 case 10:
174 expr._op = 11;
175 break;
176 case 11:
177 expr._op = 10;
178 break;
179 }
180 ColumnInfo columnInfo2 = _candidateColumns[((NameNode)expr._left)._column.Ordinal];
181 columnInfo2.expr = ((columnInfo2.expr == null) ? expr : new BinaryNode(_table, 26, expr, columnInfo2.expr));
182 if (expr._op == 7)
183 {
184 columnInfo2.equalsOperator = true;
185 }
187 return;
188 }
189 }
190 _linearExpression = ((_linearExpression == null) ? expr : new BinaryNode(_table, 26, expr, _linearExpression));
191 }
bool _candidatesForBinarySearch
Definition Select.cs:37
ColumnInfo[] _candidateColumns
Definition Select.cs:39
void AnalyzeExpression(BinaryNode expr)
Definition Select.cs:67
ExpressionNode _linearExpression
Definition Select.cs:35
readonly DataTable _table
Definition Select.cs:19
bool IsSupportedOperator(int op)
Definition Select.cs:58
readonly ExpressionNode _expression
Definition Select.cs:27

References System.Data.Select._candidateColumns, System.Data.Select._candidatesForBinarySearch, System.Data.Select._expression, System.Data.BinaryNode._left, System.Data.Select._linearExpression, System.Data.BinaryNode._op, System.Data.UnaryNode._op, System.Data.BinaryNode._right, System.Data.Select._table, System.Data.Select.AnalyzeExpression(), and System.Data.Select.IsSupportedOperator().

Referenced by System.Data.Select.AnalyzeExpression(), and System.Data.Select.SelectRows().