SLICE
Pushes a subset of a byte array onto the stack
Input stack: data start end
Output stack: new_data
SLICE pushes a subset from include start
to exclusive end
to the top of the stack.
PumpkinDB> 0x102030 1 3 SLICE
0x2030
Allocation
Allocated in runtime to parse start/end numbers. Sliced array is zero-copy.
Errors
EmptyStack error if there are less than three items on the stack
InvalidValue error if start
is larger than data length.
InvalidValue error if start
is larger than end
.
InvalidValue error if end
is larger than data length.
Tests
works : 0x102030 1 3 SLICE 0x2030 EQUAL?.
start_larger : ["help" 20 100 SLICE] TRY UNWRAP 0x03 EQUAL?.
start_larger_end : ["help" 3 2 SLICE] TRY UNWRAP 0x03 EQUAL?.
end_larger : ["help" 0 20 SLICE] TRY UNWRAP 0x03 EQUAL?.
empty_stack : [SLICE] TRY UNWRAP 0x04 EQUAL?.
empty_stack_1 : [1 SLICE] TRY UNWRAP 0x04 EQUAL?.
empty_stack_2 : [0 1 SLICE] TRY UNWRAP 0x04 EQUAL?.