/
op2.gw
48 lines (42 loc) · 1.71 KB
/
op2.gw
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
class C
{
float f;
}
operator => float (C c, C d){ <<<"float => C: ", c.f => d.f>>>; return 2.0;}
operator => int (int i, C d){ <<<"int => C: ", i => d.f>>>; return 2;}
operator => float (float f, C d){ <<<"float => C: ", f => d.f>>>; return 2.0;}
operator => complex (complex c, C d){ <<<"complex => C: ", c.re => d.f>>>; return #(1.2, 6.1);}
operator => polar (polar c, C d){ <<<"complex => C: ", c.mod => d.f>>>; return %(2.3, 4.1);}
operator => Vec3 (Vec3 c, C d){ <<<c.z => d.f>>>; return @(1.2, 6.1, 2.3);}
operator => Vec4 (Vec4 c, C d){ <<<"Vec4 => C: ", c.w => d.f>>>; return @(1.2, 6.1, 2.3, 9.3);}
operator => float (C d, int c){ <<<"int => C: ", c => d.f>>>; return 2.0;}
operator => float (C d, float f){ <<<"C => float: ", f => d.f>>>; return 2.0;}
operator => float (Vec3 v, float f){ <<<"vec3 => C: ", f, " ", v.x => f>>>; return 2.0;}
operator => complex (C d, complex c){ <<<"complex => C: ", c.re => d.f>>>; return #(1.2, 6.1);}
operator => polar (C d, polar c){ <<<"complex => C: ", c.mod => d.f>>>; return %(2.3, 4.1);}
operator => Vec3 (C d, Vec3 c){ <<<c.z => d.f>>>; return @(1.2, 6.1, 2.3);}
operator => Vec4 (C d, Vec4 c){ <<<"Vec4 => C: ", c.w => d.f>>>; return @(1.2, 6.1, 2.3, 9.3);}
C c, d;
12.3 => c.f;
<<< c => d >>>;
<<< 2 => d >>>;
<<< 2.3 => d >>>;
<<< #(7.2, 1.4) => d >>>;
<<< %(7.2, 1.4) => d >>>;
<<< @(7.2, 1.4, 8.3)>>>;
<<< @(7.2, 1.4, 8.3) => d >>>;
<<< @(7.2, 1.4, 8.3, 2.3) => d >>>;
int i;
2 => float f;
complex cmp;
Vec3 v;
<<<f>>>;
v => f;
Vec4 w;
c => i;
<<<c.f>>>;
<<<f>>>;
c => f;
c => cmp;
c => v;
c => w;