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