aboutsummaryrefslogtreecommitdiff
path: root/code
diff options
context:
space:
mode:
Diffstat (limited to 'code')
-rw-r--r--code/lib/operator.felan12
-rw-r--r--code/lib/types.felan4
-rw-r--r--code/main.felan17
3 files changed, 19 insertions, 14 deletions
diff --git a/code/lib/operator.felan b/code/lib/operator.felan
index d8121c2..2112c57 100644
--- a/code/lib/operator.felan
+++ b/code/lib/operator.felan
@@ -790,3 +790,15 @@ __shift_right__ :: (left:i64,right:i64) -> i64 {
return @shift_right(left,right);
};
+
+//---------------------- Pointers ------------------------
+
+__sum__ :: (left:*anytype,right:i64) -> (@type_of(left)) {
+ return @add(left,right);
+};
+
+__sub__ :: (left:*anytype,right:i64) -> (@type_of(left)) {
+ return @sub(left,right);
+};
+
+
diff --git a/code/lib/types.felan b/code/lib/types.felan
index 8c0cbf1..df7f5c3 100644
--- a/code/lib/types.felan
+++ b/code/lib/types.felan
@@ -2,7 +2,7 @@ string :: []u8;
array :: (comptime size:u64, comptime t:type) -> type {
return struct {
- ptr : t;
- size : i32 : size;
+ ptr : *t;
+ size : @type_of(size) : size;
};
};
diff --git a/code/main.felan b/code/main.felan
index c17b965..239a201 100644
--- a/code/main.felan
+++ b/code/main.felan
@@ -9,14 +9,6 @@ print :: (value:**anytype)->void{
}
};
-__sum__ :: (left:*anytype,right:i64) -> (@type_of(left)) {
- return @add(left,right);
-};
-
-__sub__ :: (left:*anytype,right:i64) -> (@type_of(left)) {
- return @sub(left,right);
-};
-
__get_item__ :: (left:*anytype,index:i64) -> (@type_of(left.*)) {
return (left + index).*;
};
@@ -30,13 +22,14 @@ __get_item_address__ :: (left:*anytype,index:i64,item:@type_of(left.*)) -> (@typ
};
main :: ()->void{
- p := malloc(10,u64);
+ arr :array(@cast(10,u64),i64) = undefined;
+ arr.ptr = @stack_alloc(10,i64);
i := 0;
while i < 10 {
- __set_item__(p,i,0);
+ __set_item__(arr.ptr,i,0);
i += 1;
}
- print(__get_item__(p,1));
- free(@cast(p,*void));
+ print(__get_item__(arr.ptr,1));
+ free(@cast(arr.ptr,*void));
};