# test passing addresses to viper @micropython.viper def get_addr(x: ptr) -> ptr: return x @micropython.viper def memset(dest: ptr8, c: int, n: int): for i in range(n): dest[i] = c # create array and get its address ar = bytearray("0000") addr = get_addr(ar) print(type(ar)) print(type(addr)) print(ar) # pass array as an object memset(ar, ord("1"), len(ar)) print(ar) # pass direct pointer to array buffer memset(addr, ord("2"), len(ar)) print(ar) # pass direct pointer to array buffer, with offset memset(addr + 2, ord("3"), len(ar) - 2) print(ar)