summaryrefslogtreecommitdiff
path: root/test.toc
blob: 05f94ec57d3b7b5965460957d1d5e37383eab096 (plain)
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
import ::= fn(x :: []char) &Package {
	p ::= pkg x;
	p_ptr ::= new(Package);
	*p_ptr = p;
	p_ptr
};

cputs :: fn(&char) i32 = #foreign "puts", "libc.so.6";

puts ::= fn(s: []char) i32 {
	 cstr := new(char, s.len + 1);
	 each i := 0..s.len-1 {
	 	 cstr[i] = s[i];
	 }
	 cstr[s.len] = '\0';
	 ret := cputs(&cstr[0]);
	 del(cstr);
	 ret
};

foo ::= fn() i32 {
	puts("Hi");
	puts("Hello");
	puts("Hey")
};

malloc :: fn(u64) &u8 = #foreign "malloc", "libc.so.6";

sqrt :: fn(f64) f64 = #foreign "sqrt", "libm.so.6";
cos :: fn(f64) f64 = #foreign "cos", "libm.so.6";
sin :: fn(f64) f64 = #foreign "sin", "libm.so.6";

main ::= fn() {
	 x ::= foo();
	 // y ::= malloc(10);
	 sq2 ::= sqrt(2);
	 cospi ::= cos(3.14159);
	 sinpi ::= sin(3.14159);
};