1 type Slice<T> @byval = 2 val ptr : Ptr<T> 3 val size : u32 4 5 fun get (i : u32) = ptr[i] 6 fun get (i : i32) = 7 assert i >= 0 8 ptr[i] 9 10 fun get_ptr (i : u32) = ptr + i 11 fun get_ptr (i : i32) = 12 assert i >= 0 13 ptr + i 14 15 def contains (x : T) = 16 for i = 0 until size do 17 if self[i] == x then return true 18 19 false 20 21 type MutSlice<T> @byval @[mut_of Slice] = 22 val ptr : MutPtr<T> @impl 23 24 inherit Slice<T> 25 26 fun set (i : u32) (value : T) = 27 ptr[i] = value 28 29 fun set (i : i32) (value : T) = 30 assert i >= 0 31 ptr[i] = value 32 33 object Slice<T> = 34 val empty = Slice<T> null 0 35