NANDContentLoader: Add IOFile forward declaration

This would previously fail to compile when included in files that do not
include FileUtil.h due to lack of a type declaration.

This moves the constructor and destructor into the cpp file in order to
satisfy the requirements of unique_ptr construction and deletion. That is,
unique_ptr requires a concrete type at the point of construction and
destruction. If the constructor or destructor is left in the header, then
at the point of construction or destruction, IOFile will still be
considered an incomplete type, as unique_ptr's deleter will still only be
able to see the forward declaration, which it can't use.
This commit is contained in:
Lioncash 2016-10-14 20:12:16 -04:00
parent 183f3c3759
commit d9eb7c4e80
2 changed files with 13 additions and 3 deletions

View file

@ -96,6 +96,12 @@ std::string CSharedContent::AddSharedContent(const u8* hash)
return filename;
}
CNANDContentDataFile::CNANDContentDataFile(const std::string& filename) : m_filename{filename}
{
}
CNANDContentDataFile::~CNANDContentDataFile() = default;
void CNANDContentDataFile::EnsureOpen()
{
if (!m_file)

View file

@ -13,13 +13,15 @@
#include "Common/CommonTypes.h"
#include "Common/NandPaths.h"
namespace DiscIO
namespace File
{
enum class Country;
class IOFile;
}
namespace DiscIO
{
enum class Country;
bool AddTicket(u64 title_id, const std::vector<u8>& ticket);
class CNANDContentData
@ -35,7 +37,9 @@ public:
class CNANDContentDataFile final : public CNANDContentData
{
public:
explicit CNANDContentDataFile(const std::string& filename) : m_filename(filename) {}
explicit CNANDContentDataFile(const std::string& filename);
~CNANDContentDataFile();
void Open() override;
std::vector<u8> Get() override;
bool GetRange(u32 start, u32 size, u8* buffer) override;