diff options
Diffstat (limited to 'code/lib/vector.felan')
-rw-r--r-- | code/lib/vector.felan | 15 |
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'); } }; |