xref: /haiku/src/system/boot/loader/file_systems/amiga_ffs/Directory.h (revision b6f76ebe7153b94820cf35f8db4facc158841abb)
15af32e75SAxel Dörfler /*
25af32e75SAxel Dörfler ** Copyright 2003, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
3*b6f76ebeSAugustin Cavalier ** Distributed under the terms of the MIT License.
45af32e75SAxel Dörfler */
55af32e75SAxel Dörfler #ifndef DIRECTORY_H
65af32e75SAxel Dörfler #define DIRECTORY_H
75af32e75SAxel Dörfler 
85af32e75SAxel Dörfler 
95af32e75SAxel Dörfler #include "amiga_ffs.h"
105af32e75SAxel Dörfler 
115af32e75SAxel Dörfler #include <boot/vfs.h>
125af32e75SAxel Dörfler 
135af32e75SAxel Dörfler 
145af32e75SAxel Dörfler namespace FFS {
155af32e75SAxel Dörfler 
165af32e75SAxel Dörfler class Volume;
175af32e75SAxel Dörfler 
185af32e75SAxel Dörfler class Directory : public ::Directory {
195af32e75SAxel Dörfler 	public:
200dc4d1e5SIngo Weinhold 		Directory();
210dc4d1e5SIngo Weinhold 		Directory(Volume &volume, RootBlock &root);
220dc4d1e5SIngo Weinhold 		Directory(Volume &volume, int32 block);
235af32e75SAxel Dörfler 		virtual ~Directory();
245af32e75SAxel Dörfler 
255af32e75SAxel Dörfler 		status_t InitCheck();
265af32e75SAxel Dörfler 
275af32e75SAxel Dörfler 		virtual status_t Open(void **_cookie, int mode);
285af32e75SAxel Dörfler 		virtual status_t Close(void *cookie);
295af32e75SAxel Dörfler 
30cbc85916SIngo Weinhold 		virtual Node* LookupDontTraverse(const char* name);
315af32e75SAxel Dörfler 
325af32e75SAxel Dörfler 		virtual status_t GetNextEntry(void *cookie, char *nameBuffer, size_t bufferSize);
335af32e75SAxel Dörfler 		virtual status_t GetNextNode(void *cookie, Node **_node);
345af32e75SAxel Dörfler 		virtual status_t Rewind(void *cookie);
355af32e75SAxel Dörfler 		virtual bool IsEmpty();
365af32e75SAxel Dörfler 
375af32e75SAxel Dörfler 		virtual status_t GetName(char *name, size_t size) const;
385af32e75SAxel Dörfler 		virtual ino_t Inode() const;
395af32e75SAxel Dörfler 
405af32e75SAxel Dörfler 	private:
415af32e75SAxel Dörfler 		Volume			&fVolume;
425af32e75SAxel Dörfler 		DirectoryBlock	fNode;
435af32e75SAxel Dörfler 
445af32e75SAxel Dörfler 		typedef ::Directory _inherited;
455af32e75SAxel Dörfler };
465af32e75SAxel Dörfler 
475af32e75SAxel Dörfler }	// namespace FFS
485af32e75SAxel Dörfler 
495af32e75SAxel Dörfler #endif	/* DIRECTORY_H */
50