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