aboutsummaryrefslogtreecommitdiff
path: root/code/lib/vector.felan
diff options
context:
space:
mode:
Diffstat (limited to 'code/lib/vector.felan')
-rw-r--r--code/lib/vector.felan15
1 files changed, 7 insertions, 8 deletions
diff --git a/code/lib/vector.felan b/code/lib/vector.felan
index d6faece..c4f2698 100644
--- a/code/lib/vector.felan
+++ b/code/lib/vector.felan
@@ -17,29 +17,28 @@ vector_new :: (comptime t:type) -> (vector(t)) {
return v;
};
-__get_item__ :: (left:vector(anytype),index:i64) -> (@type_of(left.ptr.*)) {
- return (left.ptr + index).*;
+__get_item__ :: (left:*vector(anytype),index:i64) -> (@type_of(left.*.ptr.*)) {
+ return (left.*.ptr + index).*;
};
-__set_item__ :: (left:*vector(anytype),index:i64,item:@type_of(left.*.ptr.*)) -> (@type_of(left.ptr.*)) {
- return (left.ptr + index).* = item;
+__set_item__ :: (left:*vector(anytype),index:i64,item:@type_of(left.*.ptr.*)) -> (@type_of(left.*.ptr.*)) {
+ return (left.*.ptr + index).* = item;
};
__get_item_address__ :: (left:*vector(anytype),index:i64) -> (@type_of(left.*.ptr)) {
- return (left.ptr + index);
+ return (left.*.ptr + index);
};
push_back :: (vec:*vector(anytype),value:@type_of(vec.*[0])) -> void {
_grow_if_needed(vec);
+ vec.*[@cast(vec.*.size,i64)] = value;
+ vec.*.size += 1u64;
};
_grow_if_needed :: (vec:*vector(anytype)) -> void {
if vec.*.size == vec.*.capacity {
- @putc('a');
vec.*.capacity = vec.*.capacity + vec.*.capacity/2u64 + 1u64;
vec.*.ptr = realloc(vec.*.ptr,vec.*.capacity);
- }else{
- @putc('b');
}
};