1: #line 1735 "./lpsrc/flx_regress.pak"
2:
3:
4: open C_hack;
5: header '#include <iostream>';
6: proc pr[t]:t="std::cout<<$1<<std::endl;";
7: fun f: !fast_ints * !fast_ints -> int = "$1+$2";
8:
9: print$ f$ 1,2L; endl;
10:
11: var x = 1;
12: var px:ptr[int] = addr x;
13:
14: module X {
15: proc h[t,u=ptr[t]]: u * t = '*$1=$2; std::cout <<*$1<<","<<$2<<std::endl;';
16: h(px,1);
17:
18: fun adr[t,u=ptr[t]]: lvalue[t]->u = "&$1";
19: fun drf[t,u=ptr[t]]: u -> t = "*$1";
20:
21: }
22:
23: open X[int];
24: h(px,1);
25:
26: pr$ drf px;
27: pr$ drf$ adr x;
28: pr$ X::drf px;
29: pr$ X::drf$ X::adr x;
30:
31: proc h2[t,u=ptr[t]]: u * t = "*$1=$2;";
32: h2(px,1);
33:
34: proc k[t,u=ptr[t]]: u = "std::cout << *$1 <<std::endl;";
35: k px;
36:
37: fun ff[t,k where t==k ]: t * k -> t = "$1+$2";
38:
39:
40: pr$ ff$ 1,2;
41:
42: