public static IEnumerable <string> Transform(Type batchType, Expression e) { var me = new Vectorize(batchType); me.Visit(e); if (!string.IsNullOrWhiteSpace(me.resultBV)) { me.vectorStatements.Add("var tmp = batch.bitvector;"); me.vectorStatements.Add("batch.bitvector = " + me.resultBV + ";"); me.vectorStatements.Add("tmp.ReturnClear();"); } return(me.vectorStatements); }
public static MultiStringTransformationResult Transform(Type t, Expression e) { Contract.Requires(Config.MultiStringTransforms != Config.CodegenOptions.MultiStringFlags.None); if (((Config.MultiStringTransforms & Config.CodegenOptions.MultiStringFlags.VectorOperations) != 0) && IsVectorizable(t, e)) { var vectorStatements = Vectorize.Transform(t, e); return(new MultiStringTransformationResult { vectorOperation = string.Join("\n", vectorStatements), wrapperTable = new Dictionary <FieldInfo, ParameterExpression>(), }); } var wrapperVisitor = new WrapperTransformer(t); var res = wrapperVisitor.Visit(e); return(new MultiStringTransformationResult { transformedExpression = res, wrapperTable = wrapperVisitor.multiStringTable }); }