#ifndef GET4_ITERATOR_H #define GET4_ITERATOR_H #include "base/Iterator.h" #include "get4/Message.h" #include "base/TimeStamp.h" namespace get4 { class Iterator : public base::Iterator { protected: enum { MaxGet4=16 }; uint32_t fEpoch; ///= fBufferLen)) return false; if (fMsg.assign((uint8_t*) fBuffer + fBufferPos, fFormat)) { fBufferPos += fMsgSize; switch (fMsg.getMessageType()) { case base::MSG_EPOCH: fEpoch = fMsg.getEpochNumber(); fConvRoc.MoveRef(((uint64_t) fEpoch) << 14); break; case base::MSG_EPOCH2: fEpoch2[fMsg.getEpoch2ChipNumber() & 0xf] = fMsg.getEpoch2Number(); fConvGet4.MoveRef(((uint64_t) fMsg.getEpoch2Number()) << 19); break; case base::MSG_SYS: if (fMsg.is32bitEpoch2()) { fEpoch2[fMsg.getGet4V10R32ChipId() & 0xf] = fMsg.getGet4V10R32EpochNumber(); fConvGet4.MoveRef(((uint64_t) fMsg.getGet4V10R32EpochNumber()) << 19); } break; } return true; } fBufferPos = fBufferLen; return false; } // can be used only inside buffer, not with board source inline bool last() { if (!fBuffer || (fBufferLen < fMsgSize)) return false; fBufferPos = (fBufferLen - fMsgSize) / fMsgSize * fMsgSize; return next(); } // can be used only inside buffer, not with board source inline bool prev() { if (!fBuffer || (fBufferPos