bool SQLiteIDBCursor::advanceUnique() { IDBKeyData currentKey = m_currentKey; while (!m_completed) { if (!advanceOnce()) return false; // If the new current key is different from the old current key, we're done. if (currentKey.compare(m_currentKey)) return true; } return false; }
bool SQLiteIDBCursor::advance(uint64_t count) { bool isUnique = m_cursorDirection == IndexedDB::CursorDirection::NextNoDuplicate || m_cursorDirection == IndexedDB::CursorDirection::PrevNoDuplicate; for (uint64_t i = 0; i < count; ++i) { if (!isUnique) { if (!advanceOnce()) return false; } else { if (!advanceUnique()) return false; } } return true; }
bool SQLiteIDBCursor::advance(uint64_t count) { bool isUnique = m_cursorDirection == IndexedDB::CursorDirection::NextNoDuplicate || m_cursorDirection == IndexedDB::CursorDirection::PrevNoDuplicate; if (m_completed) { LOG_ERROR("Attempt to advance a completed cursor"); return false; } for (uint64_t i = 0; i < count; ++i) { if (!isUnique) { if (!advanceOnce()) return false; } else { if (!advanceUnique()) return false; } if (m_completed) break; } return true; }