#pragma once #include "BaseFactory.h" #include #include #include typedef std::variant ArrayDatum; enum class ArrayType { u8, s8, u16, s16, u32, s32, u64, f32, f64, Vec2f, Vec3f, Vec3s, Vec3i, Vec4f, Vec4s, }; class GenericArray : public IParsedData { public: uint32_t mMaxWidth; uint32_t mMaxPrec; std::vector mData; explicit GenericArray(std::vector data); }; class ArrayCodeExporter : public BaseExporter { ExportResult Export(std::ostream& write, std::shared_ptr data, std::string& entryName, YAML::Node& node, std::string* replacement) override; }; class ArrayHeaderExporter : public BaseExporter { ExportResult Export(std::ostream& write, std::shared_ptr data, std::string& entryName, YAML::Node& node, std::string* replacement) override; }; class ArrayBinaryExporter : public BaseExporter { ExportResult Export(std::ostream& write, std::shared_ptr data, std::string& entryName, YAML::Node& node, std::string* replacement) override; }; class GenericArrayFactory : public BaseFactory { public: std::optional> parse(std::vector& buffer, YAML::Node& data) override; std::unordered_map> GetExporters() override { return { REGISTER(Header, ArrayHeaderExporter) REGISTER(Binary, ArrayBinaryExporter) REGISTER(Code, ArrayCodeExporter) }; } };