2018-10-06 20:39:24 -07:00
|
|
|
#pragma once
|
2015-06-26 12:30:03 -07:00
|
|
|
|
2019-08-30 00:52:22 -07:00
|
|
|
#include "nod/DiscBase.hpp"
|
2015-06-26 12:30:03 -07:00
|
|
|
|
2018-12-07 21:21:47 -08:00
|
|
|
namespace nod {
|
2017-02-04 22:19:34 -08:00
|
|
|
class DiscBuilderGCN;
|
2015-06-26 12:30:03 -07:00
|
|
|
|
2018-12-07 21:21:47 -08:00
|
|
|
class DiscGCN : public DiscBase {
|
|
|
|
friend class DiscMergerGCN;
|
2021-06-22 12:16:56 -07:00
|
|
|
DiscBuilderGCN makeMergeBuilder(std::string_view outPath, FProgress progressCB);
|
2016-01-20 22:30:37 -08:00
|
|
|
|
|
|
|
public:
|
2021-06-22 12:16:56 -07:00
|
|
|
DiscGCN(std::unique_ptr<IDiscIO>&& dio, bool& err);
|
|
|
|
bool extractDiscHeaderFiles(std::string_view path, const ExtractionContext& ctx) const override;
|
2017-02-04 22:19:34 -08:00
|
|
|
};
|
|
|
|
|
2018-12-07 21:21:47 -08:00
|
|
|
class DiscBuilderGCN : public DiscBuilderBase {
|
|
|
|
friend class DiscMergerGCN;
|
|
|
|
|
2017-02-04 22:19:34 -08:00
|
|
|
public:
|
2021-06-22 12:16:56 -07:00
|
|
|
DiscBuilderGCN(std::string_view outPath, FProgress progressCB);
|
|
|
|
EBuildResult buildFromDirectory(std::string_view dirIn);
|
|
|
|
static std::optional<uint64_t> CalculateTotalSizeRequired(std::string_view dirIn);
|
2015-06-26 12:30:03 -07:00
|
|
|
};
|
|
|
|
|
2018-12-07 21:21:47 -08:00
|
|
|
class DiscMergerGCN {
|
|
|
|
DiscGCN& m_sourceDisc;
|
|
|
|
DiscBuilderGCN m_builder;
|
2015-06-26 12:30:03 -07:00
|
|
|
|
2018-12-07 21:21:47 -08:00
|
|
|
public:
|
2021-06-22 12:16:56 -07:00
|
|
|
DiscMergerGCN(std::string_view outPath, DiscGCN& sourceDisc, FProgress progressCB);
|
|
|
|
EBuildResult mergeFromDirectory(std::string_view dirIn);
|
|
|
|
static std::optional<uint64_t> CalculateTotalSizeRequired(DiscGCN& sourceDisc, std::string_view dirIn);
|
2018-12-07 21:21:47 -08:00
|
|
|
};
|
2015-06-26 12:30:03 -07:00
|
|
|
|
2018-12-07 21:21:47 -08:00
|
|
|
} // namespace nod
|