예제 #1
0
            public override string Output(LinqParser parser)
            {
                var result = string.Format("{0}{1} {2}", parser.MapType(Type),
                                           Kind == KernelArgumentKind.Buffer ? "*" : "",
                                           Name);

                switch (Access)
                {
                case KernelArgumentAccess.Read:
                    result = "read_only " + result;
                    break;

                case KernelArgumentAccess.Write:
                    result = "write_only " + result;
                    break;

                default:
                    break;
                }
                switch (Memory)
                {
                case KernelArgumentMemory.Global:
                    result = "global " + result;
                    break;

                case KernelArgumentMemory.Local:
                    result = "local " + result;
                    break;

                default:
                    break;
                }
                return(result);
            }
예제 #2
0
        public RuleCollection(ILinqMethodScope linqMethods = null)
        {
            linqParser = new LinqParser(linqMethods);
            parser     = new Parser();

            rules = new List <Rule>();
        }
예제 #3
0
 public override string Output(LinqParser parser)
 {
     return(string.Format("typedef {0} __attribute__ ((aligned (4))) tag_{1}\n{{\n{2}\n}} {1};\n",
                          IsUnion ? "union" : "struct",
                          Name,
                          Fields.Select(f => string.Format("    {0};", f.Output(parser)))
                          .SeparateWith("\n")));
 }
예제 #4
0
            public override string Output(LinqParser parser)
            {
                var kindDecl = Kind == VaryingKind.In ? "in" : "out";

                return(string.IsNullOrEmpty(Qualifiers) ?
                       string.Format("{0} {1};", kindDecl, Definition.Output(parser)) :
                       string.Format("{0} {1} {2};", Qualifiers, kindDecl, Definition.Output(parser)));
            }
예제 #5
0
 public override string Output(LinqParser parser)
 {
     return(string.Format("({0}) {{ {1} }}",
                          parser.MapType(StructType),
                          InitFields.Select(t => (StructType.IsCLUnion() ?
                                                  string.Format(".{0} = {1}", t.Item1.Output(parser), t.Item2.Output(parser)) :
                                                  t.Item2.Output(parser)))
                          .SeparateWith(", ")));
 }
예제 #6
0
 public override string Output(LinqParser parser)
 {
     return(string.Format("kernel void {0} ({1})\n{2}", Name,
                          Arguments.Select(v => v.Output(parser)).SeparateWith(", "),
                          Body.Output(parser)));
 }
예제 #7
0
 public override string Output(LinqParser parser)
 {
     return("constant " + Definition.Output(parser) + ";\n");
 }
예제 #8
0
 public override string Output(LinqParser parser)
 {
     return(string.Format("{{ {0} }}",
                          Items.Select(e => e.Output(parser)).SeparateWith(", ")));
 }
예제 #9
0
 public override string Output(LinqParser parser)
 {
     return(string.Format("{0}[{1}] ( {2} )", parser.MapType(ItemType), ItemCount,
                          Items.Select(e => e.Output(parser)).SeparateWith(",\n\t")));
 }
예제 #10
0
 public override string Output(LinqParser parser)
 {
     return(string.Format("struct {0}\n{{\n{1}\n}};", Name,
                          Fields.Select(f => string.Format("    {0};", f.Output(parser)))
                          .SeparateWith("\n")));
 }
예제 #11
0
 public override string Output(LinqParser parser)
 {
     return(string.Format("uniform {0};", Definition.Output(parser)));
 }
예제 #12
0
 public override string Output(LinqParser parser)
 {
     return(string.Format("{0} ({1})", InitFields.Select(t => t.Item2.Output(parser))
                          .SeparateWith(", ")));
 }
예제 #13
0
        public static Expression FromLinq(Linq.Expression linqExpression)
        {
            LinqParser parser = new LinqParser(linqExpression);

            return(parser.Result);
        }
예제 #14
0
 public static Entity FromLinq(Expression expr)
 => LinqParser.FromLinq(expr);