1/*
2 * Copyright 2013, Haiku, Inc.
3 * Distributed under the terms of the MIT License.
4 *
5 * Authors:
6 *		Ingo Weinhold, ingo_weinhold@gmx.de
7 */
8#ifndef _VIRTUAL_DIRECTORY_ENTRY_LIST_H
9#define _VIRTUAL_DIRECTORY_ENTRY_LIST_H
10
11
12#include <StringList.h>
13
14#include <MergedDirectory.h>
15
16#include "EntryIterator.h"
17
18
19namespace BPrivate {
20
21class Model;
22
23class VirtualDirectoryEntryList : public EntryListBase {
24public:
25								VirtualDirectoryEntryList(Model* model);
26								VirtualDirectoryEntryList(
27									const node_ref& definitionFileRef,
28									const BStringList& directoryPaths);
29	virtual						~VirtualDirectoryEntryList();
30
31	virtual	status_t			InitCheck() const;
32
33	virtual	status_t			GetNextEntry(BEntry* entry,
34									bool traverse = false);
35	virtual	status_t			GetNextRef(entry_ref* ref);
36	virtual	int32				GetNextDirents(struct dirent* buffer,
37									size_t length, int32 count = INT_MAX);
38
39	virtual	status_t			Rewind();
40	virtual	int32				CountEntries();
41
42private:
43
44			status_t			_InitMergedDirectory(
45									const BStringList& directoryPaths);
46private:
47			node_ref			fDefinitionFileRef;
48			BMergedDirectory	fMergedDirectory;
49};
50
51} // namespace BPrivate
52
53
54#endif	// _VIRTUAL_DIRECTORY_ENTRY_LIST_H
55