public void PreEmitExpImpl(
     MidMethodApp app,
     Span span)
 {
     foreach (var a in app.Args)
         PreEmitExp(a, span);
 }
        private EmitValHLSL EmitExpImpl(MidMethodApp app, Span span)
        {
            // Make sure we've emitted the method.
            var method = GetMethod(app.MethodDecl);

            Span builder = new Span();
            builder.Write("{0}(", method);

            var resultType = EmitType(app.MethodDecl.ResultType);
            var resultVar = resultType.CreateVal(
                _shared.GenerateName(app.MethodDecl.Name.ToString()));

            DeclareLocal(resultVar, span);

            bool first = true;
            AddArgs(
                resultVar,
                ref first,
                builder);

            foreach (var a in app.Args)
            {
                var argVal = EmitVal(a, span);
                AddArgs(
                    argVal,
                    ref first,
                    builder);
            }
            builder.WriteLine(");");

            span.Add(builder);
            return resultVar;
        }
 private void TransformChildrenImpl(
     MidMethodApp app)
 {
     app.Args = (from a in app.Args
                 select Transform(a)).ToArray();
 }