1/*
2 * Copyright 2017, Ch��� V�� Gia Hy, cvghy116@gmail.com.
3 * Copyright 2011, J��r��me Duval, korli@users.berlios.de.
4 * This file may be used under the terms of the MIT License.
5 */
6#ifndef DIRECTORYITERATOR_H
7#define DIRECTORYITERATOR_H
8
9
10#include "BTree.h"
11#include "Inode.h"
12
13
14//! Class used to iterate through entries in a directory
15class DirectoryIterator {
16public:
17								DirectoryIterator(Inode* inode);
18								~DirectoryIterator();
19
20			status_t			InitCheck();
21
22			/*! Get details of next entry
23			 * \param name Location to copy name of next entry
24			 * \param _nameLength Location to copy length of next entry's name
25			 * \param _id Location to copy inode number of next entry
26			 */
27			status_t			GetNext(char* name, size_t* _nameLength, ino_t* _id);
28			/*! Search for item in current directory
29			 * \param name Name of entry to lookup
30			 * \param nameLength Length of name being searched
31			 * \param _id inode value of entry if found, ??? otherwise
32			 */
33			status_t			Lookup(const char* name, size_t nameLength, ino_t* _id);
34			//! Reset iterator to beginning
35			status_t			Rewind();
36private:
37			uint64				fOffset;
38			Inode* 				fInode;
39			TreeIterator*		fIterator;
40};
41
42
43#endif	// DIRECTORYITERATOR_H
44