#pragma once
#include <memory>
#include <string>
#include <vector>
#include "../../compatibility.h"
#include "structures.h"
#include "types.h"
namespace whiteout {
namespace common {
class BinaryReader;
}
namespace mdx {
using common::BinaryReader;
enum class MDLXFormat {
MDX, MDL };
class Parser {
public:
enum class UpgradeMode {
UpgradeOldVersions, PreserveOriginal };
explicit Parser(UpgradeMode upgradeMode = UpgradeMode::UpgradeOldVersions);
~Parser();
Model parse(const std::string& filePath);
Model parse(std::span<const u8> buffer, MDLXFormat format = MDLXFormat::MDX);
bool hasIssues() const;
const std::vector<std::string>& getIssues() const;
private:
class Impl;
std::unique_ptr<Impl> pImpl;
};
} }