aboutsummaryrefslogtreecommitdiff
path: root/tests/programs/arena.zc
blob: 4ca7e7c72745f09eb39aace7ebacb6d80cac1e56 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
namespace;
include rt;

// the bump arena: interior pointers, a rewind, and a full bump.
fn main() {
	let a = rt.arena_new(32), p, q, r;
	p = rt.arena_alloc(a, 4);
	p[0] = 7;
	q = rt.arena_alloc(a, 4);
	rt.put_n(q - p); rt.put_c(' ');
	rt.put_n(p[0]); rt.put_c(' ');
	rt.put_n(q[0]); rt.put_c(' ');
	rt.arena_reset(a);
	r = rt.arena_alloc(a, 4);
	rt.put_n(r == p); rt.put_c(' ');
	rt.put_n(rt.arena_alloc(a, 100) == 0); rt.put_c(10);
	rt.free(d*a);
	return 0;
}