1/*
2 * Copyright 2011, Haiku, Inc.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef _PACKAGE_PACKAGE_INFO_SET_H_
6#define _PACKAGE_PACKAGE_INFO_SET_H_
7
8
9#include <SupportDefs.h>
10
11
12namespace BPackageKit {
13
14
15class BPackageInfo;
16
17
18class BPackageInfoSet {
19public:
20			class Iterator;
21
22public:
23								BPackageInfoSet();
24	virtual						~BPackageInfoSet();
25
26			status_t			Init();
27
28			status_t			AddInfo(const BPackageInfo& info);
29			void				MakeEmpty();
30
31			uint32				CountInfos() const;
32			Iterator			GetIterator() const;
33
34private:
35			struct PackageInfo;
36			struct PackageInfoHashDefinition;
37			struct PackageMap;
38
39			friend class Iterator;
40
41private:
42			PackageMap*			fPackageMap;
43};
44
45
46class BPackageInfoSet::Iterator {
47public:
48								Iterator();
49								Iterator(const BPackageInfoSet* set);
50
51			bool				HasNext() const;
52			const BPackageInfo*	Next();
53
54private:
55			friend class BRepositoryCache;
56
57private:
58			const BPackageInfoSet* fSet;
59			PackageInfo*		fNextInfo;
60};
61
62
63}	// namespace BPackageKit
64
65
66#endif // _PACKAGE_PACKAGE_INFO_SET_H_
67