1/*
2 * Copyright 2013, Ingo Weinhold, ingo_weinhold@gmx.de.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef PACKAGE_DATA_H
6#define PACKAGE_DATA_H
7
8
9#include <package/hpkg/PackageData.h>
10
11#include <string.h>
12
13
14typedef BPackageKit::BHPKG::BPackageData PackageDataV2;
15
16
17class PackageData {
18public:
19	explicit					PackageData(const PackageDataV2& data);
20
21			uint8				Version() const	{ return fVersion; }
22			const PackageDataV2& DataV2() const;
23
24			uint64				UncompressedSize() const;
25
26			bool				IsEncodedInline() const;
27			const uint8*		InlineData() const;
28
29private:
30	static	const size_t		kDataSize = sizeof(PackageDataV2);
31
32private:
33			union {
34				char			fData[kDataSize];
35				uint64			fAlignmentDummy;
36			};
37			uint8				fVersion;
38};
39
40
41inline
42PackageData::PackageData(const PackageDataV2& data)
43	:
44	fVersion(2)
45{
46	memcpy(&fData, &data, sizeof(data));
47}
48
49
50inline const PackageDataV2&
51PackageData::DataV2() const
52{
53	return *(PackageDataV2*)&fData;
54}
55
56
57inline uint64
58PackageData::UncompressedSize() const
59{
60	return DataV2().Size();
61}
62
63
64inline bool
65PackageData::IsEncodedInline() const
66{
67	return DataV2().IsEncodedInline();
68}
69
70
71inline const uint8*
72PackageData::InlineData() const
73{
74	return DataV2().InlineData();
75}
76
77
78#endif	// PACKAGE_DATA_H
79