1/*
2 * Copyright 2009,2011, Haiku, Inc.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef _PACKAGE__HPKG__PACKAGE_READER_H_
6#define _PACKAGE__HPKG__PACKAGE_READER_H_
7
8
9#include <SupportDefs.h>
10
11
12class BPositionIO;
13
14
15namespace BPackageKit {
16
17namespace BHPKG {
18
19
20namespace BPrivate {
21	class PackageReaderImpl;
22}
23using BPrivate::PackageReaderImpl;
24
25
26class BAbstractBufferedDataReader;
27class BErrorOutput;
28class BLowLevelPackageContentHandler;
29class BPackageContentHandler;
30class BPackageWriter;
31
32
33class BPackageReader {
34public:
35								BPackageReader(BErrorOutput* errorOutput);
36								~BPackageReader();
37
38			status_t			Init(const char* fileName, uint32 flags = 0);
39			status_t			Init(int fd, bool keepFD, uint32 flags = 0);
40			status_t			Init(BPositionIO* file, bool keepFile,
41									uint32 flags = 0);
42			status_t			ParseContent(
43									BPackageContentHandler* contentHandler);
44			status_t			ParseContent(BLowLevelPackageContentHandler*
45										contentHandler);
46
47			BPositionIO*		PackageFile() const;
48
49			BAbstractBufferedDataReader* HeapReader() const;
50									// Only valid as long as the reader lives.
51
52private:
53			friend class BPackageWriter;
54
55private:
56			PackageReaderImpl*	fImpl;
57};
58
59
60}	// namespace BHPKG
61
62}	// namespace BPackageKit
63
64
65#endif	// _PACKAGE__HPKG__PACKAGE_READER_H_
66