1/* 2 * Copyright 2007, Ingo Weinhold, ingo_weinhold@gmx.de. 3 * All rights reserved. Distributed under the terms of the MIT license. 4 */ 5#ifndef ENTRY_ITERATOR_H 6#define ENTRY_ITERATOR_H 7 8#include <SupportDefs.h> 9 10#include <util/DoublyLinkedList.h> 11 12class Directory; 13class Entry; 14 15class EntryIterator : public DoublyLinkedListLinkImpl<EntryIterator> { 16public: 17 EntryIterator(Directory *directory = NULL); 18 ~EntryIterator(); 19 20 status_t SetTo(Directory *directory); 21 void Unset(); 22 23 Directory *GetDirectory() const { return fDirectory; } 24 25 status_t Suspend(); 26 status_t Resume(); 27 bool IsSuspended() const { return fSuspended; } 28 29 status_t GetNext(Entry **entry); 30 Entry *GetCurrent() const { return fEntry; } 31 32 status_t Rewind(); 33 34private: 35 void SetCurrent(Entry *entry, bool isNext); 36 37private: 38 friend class Directory; 39 40private: 41 Directory *fDirectory; 42 Entry *fEntry; 43 bool fSuspended; 44 bool fIsNext; 45 bool fDone; 46}; 47 48#endif // ENTRY_ITERATOR_H 49