mirror of
https://github.com/KevinMidboe/linguist.git
synced 2026-01-21 00:35:34 +00:00
samples: add Terra samples
source: https://github.com/zdevito/terra/tree/master/tests
This commit is contained in:
54
samples/Terra/class5.t
Normal file
54
samples/Terra/class5.t
Normal file
@@ -0,0 +1,54 @@
|
||||
|
||||
IO = terralib.includec("stdio.h")
|
||||
local Class = require("lib/javalike")
|
||||
|
||||
struct A {
|
||||
a : int;
|
||||
bb : &B
|
||||
} and struct B {
|
||||
b : int;
|
||||
aa : &A
|
||||
}
|
||||
Class.extends(B,A)
|
||||
|
||||
|
||||
terra A:times2() : int
|
||||
return self.a*2
|
||||
end
|
||||
|
||||
terra B:combine(a : int) : int
|
||||
return self.b + self.a + a
|
||||
end
|
||||
|
||||
|
||||
struct C {
|
||||
c : double
|
||||
}
|
||||
Class.extends(C,B)
|
||||
|
||||
terra C:combine(a : int) : int
|
||||
return self.c + self.a + self.b + a
|
||||
end
|
||||
terra C:times2() : double
|
||||
return self.a * 4
|
||||
end
|
||||
|
||||
terra doubleAnA(a : &A)
|
||||
return a:times2()
|
||||
end
|
||||
|
||||
terra combineAB(b : &B)
|
||||
return b:combine(3)
|
||||
end
|
||||
|
||||
terra returnA(a : A)
|
||||
return a
|
||||
end
|
||||
terra foobar1()
|
||||
var c = C.alloc()
|
||||
c.a,c.b,c.c = 1,2,3.5
|
||||
return c:times2()
|
||||
end
|
||||
|
||||
assert(foobar1() == 4)
|
||||
|
||||
Reference in New Issue
Block a user