Ejemplo n.º 1
0
        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
            });
        }