Plasma Engine  2.0
Loading...
Searching...
No Matches
ArchiveBuilder.h
1#pragma once
2
3#include <Foundation/IO/Archive/Archive.h>
4
5#include <Foundation/Containers/Deque.h>
6#include <Foundation/Types/Delegate.h>
7
11class PL_FOUNDATION_DLL plArchiveBuilder
12{
13public:
15 {
18 plArchiveCompressionMode m_CompressionMode = plArchiveCompressionMode::Uncompressed;
19 plInt32 m_iCompressionLevel = 0;
20 };
21
22 // all the source files from disk that should be put into the plArchive
23 plDeque<SourceEntry> m_Entries;
24
25 enum class InclusionMode
26 {
27 Exclude,
28 Uncompressed,
29 Compress_zstd_fastest,
30 Compress_zstd_fast,
31 Compress_zstd_average,
32 Compress_zstd_high,
33 Compress_zstd_highest,
34 };
35
38
43 void AddFolder(plStringView sAbsFolderPath, plArchiveCompressionMode defaultMode = plArchiveCompressionMode::Uncompressed, InclusionCallback callback = InclusionCallback());
44
46 plResult WriteArchive(plStringView sFile) const;
47
49 plResult WriteArchive(plStreamWriter& inout_stream) const;
50
51protected:
53 virtual bool WriteNextFileCallback(plUInt32 uiCurEntry, plUInt32 uiMaxEntries, plStringView sSourceFile) const;
55 virtual bool WriteFileProgressCallback(plUInt64 bytesWritten, plUInt64 bytesTotal) const;
57 virtual void WriteFileResultCallback(plUInt32 uiCurEntry, plUInt32 uiMaxEntries, plStringView sSourceFile, plUInt64 uiSourceSize, plUInt64 uiStoredSize, plTime duration) const {}
58};
Utility class to build an plArchive file from files/folders on disk.
Definition ArchiveBuilder.h:12
InclusionMode
Definition ArchiveBuilder.h:26
virtual void WriteFileResultCallback(plUInt32 uiCurEntry, plUInt32 uiMaxEntries, plStringView sSourceFile, plUInt64 uiSourceSize, plUInt64 uiStoredSize, plTime duration) const
Override this to get a callback after a file has been processed. Gets additional information about th...
Definition ArchiveBuilder.h:57
Definition Deque.h:270
Interface for binary out (write) streams.
Definition Stream.h:107
plStringView represent a read-only sub-string of a larger string, as it can store a dedicated string ...
Definition StringView.h:34
Definition ArchiveBuilder.h:15
plString m_sRelTargetPath
Under which relative path to store it in the plArchive.
Definition ArchiveBuilder.h:17
plString m_sAbsSourcePath
The source file to read.
Definition ArchiveBuilder.h:16
A generic delegate class which supports static functions and member functions.
Definition Delegate.h:76
Default enum for returning failure or success, instead of using a bool.
Definition Types.h:54
The time class encapsulates a double value storing the time in seconds.
Definition Time.h:12