#ifndef NET_FS_DIRECTORY_H
#define NET_FS_DIRECTORY_H
#include <util/DoublyLinkedList.h>
#include "Node.h"
#include "NodeHandle.h"
class Directory : public Node {
public:
Directory(Volume* volume,
const struct stat& st);
virtual ~Directory();
virtual Entry* GetActualReferringEntry() const;
void AddEntry(Entry* entry);
void RemoveEntry(Entry* entry);
Entry* GetFirstEntry() const;
Entry* GetNextEntry(Entry* entry) const;
int32 CountEntries() const;
status_t OpenDir(DirIterator** iterator);
bool HasDirIterators() const;
void RemoveDirIterator(DirIterator* iterator);
void SetComplete(bool complete);
bool IsComplete() const;
private:
typedef DoublyLinkedList<Entry, Entry::GetDirEntryLink> EntryList;
typedef DoublyLinkedList<DirIterator> IteratorList;
EntryList fEntries;
IteratorList fIterators;
bool fIsComplete;
};
#endif