+#include "SlotIndexer.h"
/**
* Slot indexer allows slots in both the slot buffer and the new
* @version 1.0
*/
-class SlotIndexer {
- Slot[] updates;
- SlotBuffer buffer;
- int64_t firstslotseqnum;
-
- SlotIndexer(Slot[] _updates, SlotBuffer _buffer) {
- buffer = _buffer;
- updates = _updates;
- firstslotseqnum = updates[0].getSequenceNumber();
- }
+SlotIndexer::SlotIndexer(Array<Slot *> *_updates, SlotBuffer *_buffer) :
+ buffer(_buffer),
+ updates(_updates),
+ firstslotseqnum(updates->get(0)->getSequenceNumber()) {
+}
- Slot getSlot(int64_t seqnum) {
- if (seqnum >= firstslotseqnum) {
- int offset = (int) (seqnum - firstslotseqnum);
- if (offset >= updates.length)
- throw new Error("Invalid Slot Sequence Number Reference");
- else
- return updates[offset];
- } else
- return buffer.getSlot(seqnum);
- }
+Slot *SlotIndexer::getSlot(int64_t seqnum) {
+ if (seqnum >= firstslotseqnum) {
+ int32_t offset = (int32_t) (seqnum - firstslotseqnum);
+ if (offset >= updates->length())
+ throw new Error("Invalid Slot Sequence Number Reference");
+ else
+ return updates->get(offset);
+ } else
+ return buffer->getSlot(seqnum);
}