private MethodDeclaration MakePermutation(MethodDeclaration right, IEnumerable <PrimExpSet> prim_groups) { ResetNameCount(); right = right.DeepCopy(); var rights_primitives = right.AllPrimitiveExpressions(); foreach (var prim_grp in prim_groups) { var param_name = NextName(); var typeRef = new TypeReference(prim_grp.ValueType.FullName); right.Parameters.Add(new ParameterDeclarationExpression(typeRef, param_name)); var replacer = new PrimitiveReplacer(); foreach (var pos in prim_grp.Positions) { replacer.AddReplacement(rights_primitives[pos], new IdentifierExpression(param_name)); } right.AcceptVisitor(replacer, null); } return(right); }
private MethodDeclaration MakePermutation(MethodDeclaration right, IEnumerable<PrimExpSet> prim_groups) { ResetNameCount(); right = right.DeepCopy(); var rights_primitives = right.AllPrimitiveExpressions(); foreach (var prim_grp in prim_groups) { var param_name = NextName(); var typeRef = new TypeReference(prim_grp.ValueType.FullName); right.Parameters.Add(new ParameterDeclarationExpression(typeRef, param_name)); var replacer = new PrimitiveReplacer(); foreach (var pos in prim_grp.Positions) { replacer.AddReplacement(rights_primitives[pos], new IdentifierExpression(param_name)); } right.AcceptVisitor(replacer, null); } return right; }