1/*
2 * Copyright 2011, Oliver Tappe <zooey@hirschkaefer.de>
3 * Distributed under the terms of the MIT License.
4 */
5
6
7#include <package/hpkg/PackageWriter.h>
8
9#include <new>
10
11#include <package/hpkg/PackageWriterImpl.h>
12
13
14namespace BPackageKit {
15
16namespace BHPKG {
17
18
19// #pragma mark - BPackageWriterParameters
20
21
22BPackageWriterParameters::BPackageWriterParameters()
23	:
24	fFlags(0),
25	fCompression(B_HPKG_COMPRESSION_ZLIB),
26	fCompressionLevel(B_HPKG_COMPRESSION_LEVEL_BEST)
27{
28}
29
30
31BPackageWriterParameters::~BPackageWriterParameters()
32{
33}
34
35
36uint32
37BPackageWriterParameters::Flags() const
38{
39	return fFlags;
40}
41
42
43void
44BPackageWriterParameters::SetFlags(uint32 flags)
45{
46	fFlags = flags;
47}
48
49
50uint32
51BPackageWriterParameters::Compression() const
52{
53	return fCompression;
54}
55
56
57void
58BPackageWriterParameters::SetCompression(uint32 compression)
59{
60	fCompression = compression;
61}
62
63
64int32
65BPackageWriterParameters::CompressionLevel() const
66{
67	return fCompressionLevel;
68}
69
70
71void
72BPackageWriterParameters::SetCompressionLevel(int32 compressionLevel)
73{
74	fCompressionLevel = compressionLevel;
75}
76
77
78// #pragma mark - BPackageWriter
79
80
81BPackageWriter::BPackageWriter(BPackageWriterListener* listener)
82	:
83	fImpl(new (std::nothrow) PackageWriterImpl(listener))
84{
85}
86
87
88BPackageWriter::~BPackageWriter()
89{
90	delete fImpl;
91}
92
93
94status_t
95BPackageWriter::Init(const char* fileName,
96	const BPackageWriterParameters* parameters)
97{
98	if (fImpl == NULL)
99		return B_NO_MEMORY;
100
101	BPackageWriterParameters defaultParameters;
102
103	return fImpl->Init(fileName,
104		parameters != NULL ? *parameters : defaultParameters);
105}
106
107
108status_t
109BPackageWriter::Init(BPositionIO* file, bool keepFile,
110	const BPackageWriterParameters* parameters)
111{
112	if (fImpl == NULL)
113		return B_NO_MEMORY;
114
115	BPackageWriterParameters defaultParameters;
116
117	return fImpl->Init(file, keepFile,
118		parameters != NULL ? *parameters : defaultParameters);
119}
120
121
122status_t
123BPackageWriter::SetInstallPath(const char* installPath)
124{
125	if (fImpl == NULL)
126		return B_NO_INIT;
127
128	return fImpl->SetInstallPath(installPath);
129}
130
131
132void
133BPackageWriter::SetCheckLicenses(bool checkLicenses)
134{
135	if (fImpl != NULL)
136		fImpl->SetCheckLicenses(checkLicenses);
137}
138
139
140status_t
141BPackageWriter::AddEntry(const char* fileName, int fd)
142{
143	if (fImpl == NULL)
144		return B_NO_INIT;
145
146	return fImpl->AddEntry(fileName, fd);
147}
148
149
150status_t
151BPackageWriter::Finish()
152{
153	if (fImpl == NULL)
154		return B_NO_INIT;
155
156	return fImpl->Finish();
157}
158
159
160status_t
161BPackageWriter::Recompress(BPositionIO* inputFile)
162{
163	if (fImpl == NULL)
164		return B_NO_INIT;
165
166	return fImpl->Recompress(inputFile);
167}
168
169
170}	// namespace BHPKG
171
172}	// namespace BPackageKit
173