xref: /haiku/src/system/boot/loader/file_systems/amiga_ffs/Directory.h (revision 893988af824e65e49e55f517b157db8386e8002b)
1 /*
2 ** Copyright 2003, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
3 ** Distributed under the terms of the OpenBeOS 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 
14 namespace FFS {
15 
16 class Volume;
17 
18 class 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 *Lookup(const char *name, bool traverseLinks);
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