diff options
Diffstat (limited to 'src/factories/BaseFactory.h')
| -rw-r--r-- | src/factories/BaseFactory.h | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/src/factories/BaseFactory.h b/src/factories/BaseFactory.h index 05d3d77..ae8c9a1 100644 --- a/src/factories/BaseFactory.h +++ b/src/factories/BaseFactory.h @@ -4,6 +4,7 @@ #include "n64/Cartridge.h" #include <cstdint> #include <iostream> +#include <any> #include <memory> #include <vector> #include <string> @@ -23,6 +24,13 @@ #define tab "\t" #define fourSpaceTab " " +struct OffsetEntry { + uint32_t start; + uint32_t end; +}; + +typedef std::optional<std::variant<size_t, OffsetEntry>> ExportResult; + enum class ExportType { Header, Code, @@ -67,14 +75,16 @@ public: class BaseExporter { public: - virtual void Export(std::ostream& write, std::shared_ptr<IParsedData> data, std::string& entryName, YAML::Node& node, std::string* replacement) = 0; + virtual ExportResult Export(std::ostream& write, std::shared_ptr<IParsedData> data, std::string& entryName, YAML::Node& node, std::string* replacement) = 0; static void WriteHeader(LUS::BinaryWriter& write, LUS::ResourceType resType, int32_t version); }; class BaseFactory { public: virtual std::optional<std::shared_ptr<IParsedData>> parse(std::vector<uint8_t>& buffer, YAML::Node& data) = 0; - virtual std::optional<std::shared_ptr<IParsedData>> parse_modding(std::vector<uint8_t>& buffer, YAML::Node& data) = 0; + virtual std::optional<std::shared_ptr<IParsedData>> parse_modding(std::vector<uint8_t>& buffer, YAML::Node& data) { + return std::nullopt; + } std::optional<std::shared_ptr<BaseExporter>> GetExporter(ExportType type) { auto exporters = this->GetExporters(); if (exporters.find(type) != exporters.end()) { @@ -82,7 +92,12 @@ public: } return std::nullopt; } - virtual bool SupportModdedAssets() = 0; + virtual bool SupportModdedAssets() { + return false; + } + virtual uint32_t GetAlignment() { + return 4; + }; private: virtual std::unordered_map<ExportType, std::shared_ptr<BaseExporter>> GetExporters() = 0; };
\ No newline at end of file |
