#pragma once
#include "BuildSettings.h"
OPENMPT_NAMESPACE_BEGIN
struct UMXFileHeader
{
char magic[4]; uint16le packageVersion;
uint16le licenseMode;
uint32le flags;
uint32le nameCount;
uint32le nameOffset;
uint32le exportCount;
uint32le exportOffset;
uint32le importCount;
uint32le importOffset;
bool IsValid() const;
};
MPT_BINARY_STRUCT(UMXFileHeader, 36)
int32 ReadUMXIndex(FileReader &chunk);
bool FindUMXNameTableEntry(FileReader &file, const UMXFileHeader &fileHeader, const char *name);
bool FindUMXNameTableEntryMemory(MemoryFileReader &file, const UMXFileHeader &fileHeader, const char *name);
std::string ReadUMXNameTableEntry(FileReader &chunk, uint16 packageVersion);
std::vector<std::string> ReadUMXNameTable(FileReader &file, const UMXFileHeader &fileHeader);
int32 ReadUMXImportTableEntry(FileReader &chunk, uint16 packageVersion);
void ReadUMXExportTableEntry(FileReader &chunk, int32 &objClass, int32 &objOffset, int32 &objSize, int32 &objName, uint16 packageVersion);
OPENMPT_NAMESPACE_END