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