mirror of
https://github.com/AxioDL/metaforce.git
synced 2025-05-13 23:11:20 +00:00
Avoids indirect inclusions where applicable and includes the necessary headers as used by the interface. This way, it prevents code from failing to compile due to changes in other header inclusions.
41 lines
1.3 KiB
C++
41 lines
1.3 KiB
C++
#include "DataSpec/DNACommon/DGRP.hpp"
|
|
|
|
#include <athena/DNAYaml.hpp>
|
|
#include <athena/FileWriter.hpp>
|
|
#include <athena/IStreamWriter.hpp>
|
|
|
|
#include <hecl/hecl.hpp>
|
|
|
|
namespace DataSpec::DNADGRP {
|
|
|
|
template <class IDType>
|
|
bool ExtractDGRP(PAKEntryReadStream& rs, const hecl::ProjectPath& outPath) {
|
|
athena::io::FileWriter writer(outPath.getAbsolutePath());
|
|
if (writer.isOpen()) {
|
|
DGRP<IDType> dgrp;
|
|
dgrp.read(rs);
|
|
athena::io::ToYAMLStream(dgrp, writer);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
template bool ExtractDGRP<UniqueID32>(PAKEntryReadStream& rs, const hecl::ProjectPath& outPath);
|
|
template bool ExtractDGRP<UniqueID64>(PAKEntryReadStream& rs, const hecl::ProjectPath& outPath);
|
|
|
|
template <class IDType>
|
|
bool WriteDGRP(const DGRP<IDType>& dgrp, const hecl::ProjectPath& outPath) {
|
|
athena::io::FileWriter w(outPath.getAbsolutePath(), true, false);
|
|
if (w.hasError())
|
|
return false;
|
|
dgrp.write(w);
|
|
int64_t rem = w.position() % 32;
|
|
if (rem)
|
|
for (int64_t i = 0; i < 32 - rem; ++i)
|
|
w.writeUByte(0xff);
|
|
return true;
|
|
}
|
|
template bool WriteDGRP<UniqueID32>(const DGRP<UniqueID32>& dgrp, const hecl::ProjectPath& outPath);
|
|
template bool WriteDGRP<UniqueID64>(const DGRP<UniqueID64>& dgrp, const hecl::ProjectPath& outPath);
|
|
|
|
} // namespace DataSpec::DNADGRP
|