MemoryObjectStoreCursor.h [plain text]
#ifndef MemoryObjectStoreCursor_h
#define MemoryObjectStoreCursor_h
#if ENABLE(INDEXED_DATABASE)
#include "IDBCursorInfo.h"
#include "IDBKeyData.h"
#include "MemoryCursor.h"
#include <set>
#include <wtf/Optional.h>
namespace WebCore {
namespace IDBServer {
class MemoryObjectStore;
class MemoryObjectStoreCursor : public MemoryCursor {
public:
MemoryObjectStoreCursor(MemoryObjectStore&, const IDBCursorInfo&);
void objectStoreCleared();
void keyDeleted(const IDBKeyData&);
void keyAdded(std::set<IDBKeyData>::iterator);
private:
void currentData(IDBGetResult&) final;
void iterate(const IDBKeyData&, uint32_t count, IDBGetResult&) final;
void setFirstInRemainingRange(std::set<IDBKeyData>&);
void setForwardIteratorFromRemainingRange(std::set<IDBKeyData>&);
void setReverseIteratorFromRemainingRange(std::set<IDBKeyData>&);
void incrementForwardIterator(std::set<IDBKeyData>&, const IDBKeyData&, uint32_t count);
void incrementReverseIterator(std::set<IDBKeyData>&, const IDBKeyData&, uint32_t count);
bool hasValidPosition() const;
MemoryObjectStore& m_objectStore;
IDBKeyRangeData m_remainingRange;
WTF::Optional<std::set<IDBKeyData>::iterator> m_iterator;
IDBKeyData m_currentPositionKey;
};
} }
#endif // ENABLE(INDEXED_DATABASE)
#endif // MemoryObjectStoreCursor_h