aboutsummaryrefslogtreecommitdiff
path: root/code/lib
diff options
context:
space:
mode:
Diffstat (limited to 'code/lib')
-rw-r--r--code/lib/memory.felan2
-rw-r--r--code/lib/vector.felan22
2 files changed, 24 insertions, 0 deletions
diff --git a/code/lib/memory.felan b/code/lib/memory.felan
index f1f9898..7715d0e 100644
--- a/code/lib/memory.felan
+++ b/code/lib/memory.felan
@@ -1,3 +1,5 @@
+@import("operator.felan");
+
libc :: @c_library("/usr/lib/libc.so.6");
malloc :: @c_function(libc,"malloc",(i64)->(*void));
free :: @c_function(libc,"free",(*void)->void);
diff --git a/code/lib/vector.felan b/code/lib/vector.felan
new file mode 100644
index 0000000..6ad1991
--- /dev/null
+++ b/code/lib/vector.felan
@@ -0,0 +1,22 @@
+@import("operator.felan");
+@import("memory.felan");
+
+vector :: (comptime t:type)->type{
+ return struct {
+ ptr : *t;
+ size : u64;
+ capacity : u64;
+ };
+};
+
+vector_new :: (comptime t:type) -> (vector(t)) {
+ v : vector(t) = undefined;
+ v.ptr = malloc(0,@type_of(v.ptr.*));
+ v.size = 0u64;
+ v.capacity = 0u64;
+ return v;
+};
+
+delete :: (vec:vector(anytype)) -> void {
+ free(vec.ptr);
+};