diff options
Diffstat (limited to 'tests/std/mem.toc')
-rw-r--r-- | tests/std/mem.toc | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/std/mem.toc b/tests/std/mem.toc new file mode 100644 index 0000000..6d16895 --- /dev/null +++ b/tests/std/mem.toc @@ -0,0 +1,23 @@ +// TODO: check for failed calloc +calloc ::= #foreign("calloc", "libc.so.6") fn(#C size_t, #C size_t) #C &"void"; +free ::= #foreign("free", "libc.so.6") fn(#C &"void"); + +new ::= fn(t :: Type) &t { + calloc(1, (sizeof t) as #C size_t) +} + +news ::= fn(t :: Type, n : int) []t { + s: []t; + s.data = calloc(n as #C size_t, (sizeof t) as #C size_t); + s.len = n; + s +} + +// TODO(eventually): use type information to make this just one function +del ::= fn(t::=, x: &t) { + free(x); +} + +dels ::= fn(t::=, x: []t) { + free(x.data); +} |