Files
ss/include/nw4r/snd/snd_NandSoundArchive.h
T
Elijah Thomas 26af4db82d update from dtk-template - clangd :) (#66)
* update from dtk-template and start work towards using clangd

* include <a> -> "a"

* Update build.yml

* remove/add non-trivial class in union warning
2024-10-16 15:36:02 -04:00

64 lines
1.7 KiB
C++

#ifndef NW4R_SND_NAND_SOUND_ARCHIVE_H
#define NW4R_SND_NAND_SOUND_ARCHIVE_H
#include "nw4r/snd/snd_SoundArchive.h"
#include "nw4r/snd/snd_SoundArchiveFile.h"
#include "nw4r/types_nw4r.h"
#include "nw4r/ut.h" // IWYU pragma: export
#include "rvl/NAND.h" // IWYU pragma: export
namespace nw4r {
namespace snd {
class NandSoundArchive : public SoundArchive {
private:
struct NandFileStream;
public:
NandSoundArchive();
virtual ~NandSoundArchive(); // at 0x8
virtual const void *detail_GetFileAddress(u32 /* id */) const {
return NULL;
} // at 0xC
virtual const void *detail_GetWaveDataFileAddress(u32 /* id */) const {
return NULL;
} // at 0x10
virtual int detail_GetRequiredStreamBufferSize() const; // at 0x14
virtual ut::FileStream *OpenStream(void *pBuffer, int size, u32 offset,
u32 length) const; // at 0x18
virtual ut::FileStream *OpenExtStream(
void *pBuffer, int size, const char *pExtPath, u32 offset,
u32 length
) const; // at 0x1C
bool Open(const char *pPath);
void Close();
bool LoadHeader(void *pBuffer, u32 size);
bool LoadLabelStringData(void *pBuffer, u32 size);
u32 GetHeaderSize() const {
return mFileReader.GetInfoChunkSize();
}
u32 GetLabelStringDataSize() const {
return mFileReader.GetLabelStringChunkSize();
}
private:
bool LoadFileHeader() DONT_INLINE;
private:
detail::SoundArchiveFileReader mFileReader; // at 0x108
NANDFileInfo mFileInfo; // at 0x14C
bool mOpen; // at 0x1D8
};
} // namespace snd
} // namespace nw4r
#endif