xref: /haiku/src/system/boot/loader/file_systems/bfs/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 <boot/vfs.h>
105af32e75SAxel Dörfler 
115af32e75SAxel Dörfler #include "Volume.h"
125af32e75SAxel Dörfler #include "Stream.h"
135af32e75SAxel Dörfler #include "BPlusTree.h"
145af32e75SAxel Dörfler 
155af32e75SAxel Dörfler 
165af32e75SAxel Dörfler namespace BFS {
175af32e75SAxel Dörfler 
185af32e75SAxel Dörfler class Directory : public ::Directory {
195af32e75SAxel Dörfler 	public:
200dc4d1e5SIngo Weinhold 		Directory(Volume &volume, block_run run);
210dc4d1e5SIngo Weinhold 		Directory(Volume &volume, off_t id);
220dc4d1e5SIngo Weinhold 		Directory(const Stream &stream);
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 		Stream		fStream;
425af32e75SAxel Dörfler 		BPlusTree	fTree;
435af32e75SAxel Dörfler 
445af32e75SAxel Dörfler 		typedef ::Directory _inherited;
455af32e75SAxel Dörfler };
465af32e75SAxel Dörfler 
475af32e75SAxel Dörfler }	// namespace BFS
485af32e75SAxel Dörfler 
495af32e75SAxel Dörfler #endif	/* DIRECTORY_H */
50