packages feed

csound-expression-typed-0.0.9.2: data/opcodes/tabQueue.udo

opcode TabQueue_Append, 0, ii
itab, ival xin
ind = 0
ik tab_i ind, itab
tabw_i ival, (ik + 1), itab
tabw_i (ik + 1), ind, itab
endop

opcode TabQueue_Delete, 0,ii
itab, ival xin
ind = 0
iLast tab_i ind, itab
iCount = 1
iFound = 0
until iCount > iLast do
    iCur tab_i iCount, itab
    if (iCur == ival) then
        iFound = 1
        tabw_i (iLast - 1), ind, itab
    endif

    if (iFound == 1) then
        iNext tab_i (iCount + 1), itab
        tabw_i iNext, iCount, itab
    endif

    iCount = iCount + 1
od
endop

opcode TabQueue_HasElement, k, i
itab xin
knd = 0
kk tab knd, itab
kres = (kk == 0) ? 0 : 1
xout kres
endop

opcode TabQueue_ReadLastElement, k, i
itab xin
knd = 0
kk tab knd, itab
kres tab kk, itab
xout kres
endop