@import("basic.felan");

print :: (value:**anytype)->void{
  if comptime @type_of(value.*) == u8 {
    @putc(value.*);
  }else{
    @putc('h');
  }
};

__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).*;
};

__set_item__ :: (left:*anytype,index:i64,item:@type_of(left.*)) -> (@type_of(left.*)) {
  return (left + index).* = item;
};

__get_item_address__ :: (left:*anytype,index:i64,item:@type_of(left.*)) -> (@type_of(left)) {
  return (left + index);
};

main :: ()->void{
  p := @stack_alloc(i64,10);
  i := 0;
  while i < 10 {
    __set_item__(p,i,0);
    i += 1;
  }
  print(__get_item__(p,1));
};