1/*
2 * Copyright 2009,2011, Haiku, Inc.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef _PACKAGE__HPKG__PACKAGE_CONTENT_HANDLER_H_
6#define _PACKAGE__HPKG__PACKAGE_CONTENT_HANDLER_H_
7
8
9#include <SupportDefs.h>
10
11#include <package/hpkg/HPKGDefs.h>
12
13
14namespace BPackageKit {
15
16namespace BHPKG {
17
18
19struct BPackageAttributeValue;
20class BPackageEntry;
21class BPackageEntryAttribute;
22struct BPackageInfoAttributeValue;
23
24
25class BLowLevelPackageContentHandler {
26public:
27	virtual						~BLowLevelPackageContentHandler();
28
29	virtual	status_t			HandleSectionStart(
30									BHPKGPackageSectionID sectionID,
31									bool& _handleSection) = 0;
32	virtual	status_t			HandleSectionEnd(
33									BHPKGPackageSectionID sectionID) = 0;
34
35	virtual	status_t			HandleAttribute(BHPKGAttributeID attributeID,
36									const BPackageAttributeValue& value,
37									void* parentToken, void*& _token) = 0;
38	virtual	status_t			HandleAttributeDone(
39									BHPKGAttributeID attributeID,
40									const BPackageAttributeValue& value,
41									void* parentToken, void* token) = 0;
42
43	virtual	void				HandleErrorOccurred() = 0;
44
45protected:
46	static	const char*			AttributeNameForID(uint8 id);
47};
48
49
50class BPackageContentHandler {
51public:
52	virtual						~BPackageContentHandler();
53
54	virtual	status_t			HandleEntry(BPackageEntry* entry) = 0;
55	virtual	status_t			HandleEntryAttribute(BPackageEntry* entry,
56									BPackageEntryAttribute* attribute) = 0;
57	virtual	status_t			HandleEntryDone(BPackageEntry* entry) = 0;
58
59	virtual	status_t			HandlePackageAttribute(
60									const BPackageInfoAttributeValue& value
61									) = 0;
62
63	virtual	void				HandleErrorOccurred() = 0;
64};
65
66
67}	// namespace BHPKG
68
69}	// namespace BPackageKit
70
71
72#endif	// _PACKAGE__HPKG__PACKAGE_CONTENT_HANDLER_H_
73