#ifndef _H_KCCURSOR_
#define _H_KCCURSOR_
#include <Security/StorageManager.h>
namespace Security
{
namespace KeychainCore
{
class KCCursor;
class KCCursorImpl : public ReferencedObject
{
NOCOPY(KCCursorImpl)
friend class KCCursor;
protected:
KCCursorImpl(const CssmClient::DbCursor &dbCursor, SecItemClass itemClass, const SecKeychainAttributeList *attrList);
KCCursorImpl(const CssmClient::DbCursor &dbCursor, const SecKeychainAttributeList *attrList);
public:
virtual ~KCCursorImpl();
bool next(Item &item);
private:
CssmClient::DbCursor mDbCursor;
};
class KCCursor : public RefPointer<KCCursorImpl>
{
public:
KCCursor() {}
KCCursor(KCCursorImpl *impl) : RefPointer<KCCursorImpl>(impl) {}
KCCursor(const CssmClient::DbCursor &dbCursor, const SecKeychainAttributeList *attrList)
: RefPointer<KCCursorImpl>(new KCCursorImpl(dbCursor, attrList)) {}
KCCursor(const CssmClient::DbCursor &dbCursor, SecItemClass itemClass, const SecKeychainAttributeList *attrList)
: RefPointer<KCCursorImpl>(new KCCursorImpl(dbCursor, itemClass, attrList)) {}
typedef KCCursorImpl Impl;
};
typedef Ref<KCCursor, KCCursorImpl, SecKeychainSearchRef, errSecInvalidSearchRef> KCCursorRef;
}
}
#endif