aboutsummaryrefslogtreecommitdiff
path: root/libs/bsapacker/src/qlibbsarch/BSArchive.h
blob: a159ffda49cca0490d2bcdc327a5f2e84eae7a8f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#pragma once

#include <qlibbsarch/QLibbsarch.h>
#include "BSArchiveEntries.h"
#include <QDataStream>

class BSArchive
{
public:
	BSArchive();
	virtual ~BSArchive();

	void open(const QString& archivePath);
	void close();
	void create(const QString &archiveName, const bsa_archive_type_e &type, const BSArchiveEntries &entries);
	void save();
	void addFileFromDiskRoot(const QString &rootDir, const QString &filename);
	void addFileFromDiskRoot(const QString &rootDir, const QStringList &files);
	void addFileFromDisk(const QString& pathInArchive, const QString& filePath);
	void addFileFromMemory(const QString& filename, const QByteArray& data);
	void setCompressed(bool value);
	void setShareData(bool value);
	bsa_file_record_t findFileRecord (const QString& filename);
	QByteArray extractFileDataByRecord(bsa_file_record_t record);
	QByteArray extractFileDataByFilename(const QString& filename);
	void extract(const QString& filename, const QString& saveAs);
	QStringList listFiles();
	void free();
	void reset();

	void setDDSCallback(bsa_file_dds_info_proc_t fileDDSInfoProc, void *context);

	bsa_archive_t getArchive() const;

private:
	bool _openedArchive = false;
	bsa_archive_t _archive;
};