I was playing around with use of the dual WITH statement. I like the idea, since it makes the code within the with cleaner. Also, I got the impression from one of the conference presentations ... maybe the one on the ARM debug ... that there are some additional optimizations available that the compiler processes the WITH statement block.

Anyway, a problem I ran into was if two structures had the same member names, for example struct ar.r and ar.psm in this case below. In this case, there was no way for the compiler to determine from which structure to get the member.

void calc_per_sec_met(ref All ar){

       with (ar.r) with(ar.psm) {
              double per_sec = proc_cyc/ref_clock;
              d = (a+c)*per_sec;
              e = (c==0)?0:(a+b)/c;
       }
}

ok, so I guess I could make all the member names unique in the different structures, but that's kind of ugly.

Also, what happens if using two structs of the same type in a WITH statement. Seems like something like this would help, which I believe I've seen used in database queries ...

 with (ar.r1 as r1) with (ar.r2 as r2){
   auto sum = r1.a + r2.a;
 }


Reply via email to