/* Bip buffer Copyright 2020 Ahmet Inan */ #pragma once namespace DSP { template class BipBuffer { TYPE buf[2*NUM]; int pos0, pos1; public: BipBuffer() : pos0(0), pos1(NUM) { for (int i = 0; i < 2*NUM; ++i) buf[i] = 0; } const TYPE *operator () (TYPE input) { buf[pos0] = buf[pos1] = input; if (++pos0 >= 2*NUM) pos0 = 0; if (++pos1 >= 2*NUM) pos1 = 0; return buf + min(pos0, pos1); } }; }