1/*
2 * Copyright 2003-2006, Haiku Inc.
3 * Distributed under the terms of the MIT License.
4 *
5 * Authors:
6 *		Ingo Weinhold, bonefish@users.sf.net
7 */
8#ifndef _DISK_DEVICE_PRIVATE_H
9#define _DISK_DEVICE_PRIVATE_H
10
11
12#include <DiskDeviceDefs.h>
13#include <DiskDeviceVisitor.h>
14
15class BMessenger;
16class BPath;
17
18
19namespace BPrivate {
20
21// PartitionFilter
22class PartitionFilter {
23public:
24	virtual ~PartitionFilter();
25	virtual bool Filter(BPartition *partition, int32 level) = 0;
26};
27
28// PartitionFilterVisitor
29class PartitionFilterVisitor : public BDiskDeviceVisitor {
30public:
31	PartitionFilterVisitor(BDiskDeviceVisitor *visitor,
32						   PartitionFilter *filter);
33
34	virtual bool Visit(BDiskDevice *device);
35	virtual bool Visit(BPartition *partition, int32 level);
36
37private:
38	BDiskDeviceVisitor	*fVisitor;
39	PartitionFilter		*fFilter;
40};
41
42// IDFinderVisitor
43class IDFinderVisitor : public BDiskDeviceVisitor {
44public:
45	IDFinderVisitor(partition_id id);
46
47	virtual bool Visit(BDiskDevice *device);
48	virtual bool Visit(BPartition *partition, int32 level);
49
50private:
51	partition_id		fID;
52};
53
54}	// namespace BPrivate
55
56using BPrivate::PartitionFilter;
57using BPrivate::PartitionFilterVisitor;
58using BPrivate::IDFinderVisitor;
59
60#endif	// _DISK_DEVICE_PRIVATE_H
61