1/*
2** Copyright 2003, Axel D��rfler, axeld@pinc-software.de. All rights reserved.
3** Distributed under the terms of the MIT License.
4*/
5#ifndef DIRECTORY_H
6#define DIRECTORY_H
7
8
9#include "amiga_ffs.h"
10
11#include <boot/vfs.h>
12
13
14namespace FFS {
15
16class Volume;
17
18class Directory : public ::Directory {
19	public:
20		Directory();
21		Directory(Volume &volume, RootBlock &root);
22		Directory(Volume &volume, int32 block);
23		virtual ~Directory();
24
25		status_t InitCheck();
26
27		virtual status_t Open(void **_cookie, int mode);
28		virtual status_t Close(void *cookie);
29
30		virtual Node* LookupDontTraverse(const char* name);
31
32		virtual status_t GetNextEntry(void *cookie, char *nameBuffer, size_t bufferSize);
33		virtual status_t GetNextNode(void *cookie, Node **_node);
34		virtual status_t Rewind(void *cookie);
35		virtual bool IsEmpty();
36
37		virtual status_t GetName(char *name, size_t size) const;
38		virtual ino_t Inode() const;
39
40	private:
41		Volume			&fVolume;
42		DirectoryBlock	fNode;
43
44		typedef ::Directory _inherited;
45};
46
47}	// namespace FFS
48
49#endif	/* DIRECTORY_H */
50