ThreeLevelCountReadBuffers::ThreeLevelCountReadBuffers(DC &ssd, DC &spd, DC &pd)
    : _ssd(ssd),
      _spd(spd),
      _pd(pd),
      _rcssd(ssd),
      _rcspd(spd),
      _rcpd(pd),
      _ssHeaderLen(0u),
      _spHeaderLen(0u),
      _pHeaderLen(0u),
      _ssFileBitSize(0u),
      _spFileBitSize(0u),
      _pFileBitSize(0u)
{
    ssd.setReadContext(&_rcssd);
    spd.setReadContext(&_rcspd);
    pd.setReadContext(&_rcpd);
}
ThreeLevelCountReadBuffers::ThreeLevelCountReadBuffers(DC &ssd, DC &spd, DC &pd, ThreeLevelCountWriteBuffers &wb)
    : _ssd(ssd),
      _spd(spd),
      _pd(pd),
      _rcssd(ssd),
      _rcspd(spd),
      _rcpd(pd),
      _ssHeaderLen(wb._ssHeaderLen),
      _spHeaderLen(wb._spHeaderLen),
      _pHeaderLen(wb._pHeaderLen),
      _ssFileBitSize(wb._ssFileBitSize),
      _spFileBitSize(wb._spFileBitSize),
      _pFileBitSize(wb._pFileBitSize)
{
    ssd.setReadContext(&_rcssd);
    spd.setReadContext(&_rcspd);
    pd.setReadContext(&_rcpd);
    _rcssd.referenceWriteContext(wb._wcsse);
    _rcspd.referenceWriteContext(wb._wcspe);
    _rcpd.referenceWriteContext(wb._wcpe);
    ssd.skipBits(_ssHeaderLen * 8);
    spd.skipBits(_spHeaderLen * 8);
    pd.skipBits(_pHeaderLen * 8);
}