private static bool TryGetVariableDeclaration(ExpressionStatement statement, VariableReferenceExpression variableReference, ref VariableDefinition variableDefinition, ref IEnumerable <Instruction> instructions) { if (statement != null) { V_0 = statement.get_Expression() as BinaryExpression; if (V_0 != null && V_0.get_IsAssignmentExpression()) { V_1 = V_0.get_Left() as VariableReferenceExpression; V_2 = V_0.get_Right() as VariableReferenceExpression; if (V_1 != null && V_2 != null && V_2.Equals(variableReference)) { variableDefinition = V_1.get_Variable().Resolve(); instructions = V_1.get_MappedInstructions(); return(true); } } } return(false); }
private static bool TryMatchFilterExpression(IfStatement ifStatement, TypeReference variableType, VariableReferenceExpression lastExpression, out Expression filterExpression) { filterExpression = null; if ((ifStatement.get_Condition() as BinaryExpression).get_Operator() != 10) { V_0 = ifStatement.get_Else().get_Statements().get_Item(ifStatement.get_Then().get_Statements().get_Count() - 1) as ExpressionStatement; } else { V_0 = ifStatement.get_Then().get_Statements().get_Item(ifStatement.get_Then().get_Statements().get_Count() - 1) as ExpressionStatement; } if (V_0 == null) { return(false); } V_1 = V_0.get_Expression() as BinaryExpression; if (!V_1.get_IsAssignmentExpression()) { return(false); } if (String.op_Inequality(V_1.get_ExpressionType().get_FullName(), "System.Boolean")) { return(false); } V_2 = V_1.get_Left() as VariableReferenceExpression; if (V_2 == null) { return(false); } if (!V_2.Equals(lastExpression)) { return(false); } filterExpression = V_1.get_Right(); return(true); }
public void Remove(Key key) { this.Delete(key); V_0 = new Queue <Key>(); V_1 = this.keysQueue.GetEnumerator(); try { while (V_1.MoveNext()) { V_2 = V_1.get_Current(); if (V_2.Equals(key)) { continue; } V_0.Enqueue(V_2); } } finally { ((IDisposable)V_1).Dispose(); } this.keysQueue = V_0; return; }
private bool ChangesAssignedExpression(Expression currentExpression, Expression assignedValue, Expression assignmentRecipient) { if (currentExpression as MethodInvocationExpression != null) { V_1 = currentExpression as MethodInvocationExpression; if (assignedValue.get_ExpressionType().get_IsByReference() && V_1.get_MethodExpression().get_Target() != null) { V_2 = V_1.get_MethodExpression().get_Target(); if (V_2.Equals(assignmentRecipient)) { return(false); } if (V_2 as UnaryExpression != null && (V_2 as UnaryExpression).get_Operator() == 8 && (V_2 as UnaryExpression).get_Operand().Equals(assignmentRecipient)) { return(false); } } return(true); } if (currentExpression as BinaryExpression == null) { return(false); } V_0 = currentExpression as BinaryExpression; if (V_0.get_Left().Equals(assignedValue)) { return(true); } if (assignedValue as ArrayIndexerExpression != null) { V_3 = assignedValue as ArrayIndexerExpression; if (V_0.get_Left().Equals(V_3.get_Target())) { return(true); } V_4 = V_3.get_Indices().GetEnumerator(); try { while (V_4.MoveNext()) { V_5 = V_4.get_Current(); if (!V_0.get_Left().Equals(V_5)) { continue; } V_6 = true; goto Label1; } goto Label0; } finally { if (V_4 != null) { V_4.Dispose(); } } Label1: return(V_6); } Label0: if (assignedValue as UnaryExpression != null) { return(this.ChangesAssignedExpression(currentExpression, (assignedValue as UnaryExpression).get_Operand(), assignmentRecipient)); } if (assignedValue as ExplicitCastExpression != null) { return(this.ChangesAssignedExpression(currentExpression, (assignedValue as ExplicitCastExpression).get_Expression(), assignmentRecipient)); } if (assignedValue as CanCastExpression == null) { return(false); } return(this.ChangesAssignedExpression(currentExpression, (assignedValue as CanCastExpression).get_Expression(), assignmentRecipient)); }