1/*
2 * Copyright 2009,2011, Haiku, Inc.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef _PACKAGE__HPKG__PACKAGE_DATA_H_
6#define _PACKAGE__HPKG__PACKAGE_DATA_H_
7
8
9#include <package/hpkg/HPKGDefs.h>
10
11
12namespace BPackageKit {
13
14namespace BHPKG {
15
16
17class BPackageData {
18public:
19								BPackageData();
20
21			uint64				CompressedSize() const
22									{ return fCompressedSize; }
23			uint64				UncompressedSize() const
24									{ return fUncompressedSize; }
25			uint64				Offset() const
26									{ return fEncodedInline ? 0 : fOffset; }
27			uint32				Compression() const		{ return fCompression; }
28			uint32				ChunkSize() const		{ return fChunkSize; }
29
30			bool				IsEncodedInline() const
31									{ return fEncodedInline; }
32			const uint8*		InlineData() const		{ return fInlineData; }
33
34			void				SetData(uint64 size, uint64 offset);
35			void				SetData(uint8 size, const void* data);
36
37			void				SetCompression(uint32 compression)
38									{ fCompression = compression; }
39			void				SetUncompressedSize(uint64 size)
40									{ fUncompressedSize = size; }
41			void				SetChunkSize(uint32 size)
42									{ fChunkSize = size; }
43
44private:
45			uint64				fCompressedSize;
46			uint64				fUncompressedSize;
47			union {
48				uint64			fOffset;
49				uint8			fInlineData[B_HPKG_MAX_INLINE_DATA_SIZE];
50			};
51			uint32				fChunkSize;
52			uint32				fCompression;
53			bool				fEncodedInline;
54};
55
56
57}	// namespace BHPKG
58
59}	// namespace BPackageKit
60
61
62#endif	// _PACKAGE__HPKG__PACKAGE_DATA_H_
63