#include "IncludeFactory.h" #include "spdlog/spdlog.h" #include "Companion.h" #include "utils/Decompressor.h" #define NUM(x) std::dec << std::setfill(' ') << std::setw(6) << x #define COL(c) std::dec << std::setfill(' ') << std::setw(3) << c ExportResult IncludeHeaderExporter::Export(std::ostream &write, std::shared_ptr raw, std::string& entryName, YAML::Node &node, std::string* replacement) { const auto symbol = GetSafeNode(node, "symbol", entryName); auto ctype = GetSafeNode(node, "ctype"); if(Companion::Instance->IsOTRMode()){ write << "static const char " << symbol << "[] = \"__OTR__" << (*replacement) << "\";\n\n"; return std::nullopt; } write << "extern " << ctype << " " << symbol << "[];\n"; return std::nullopt; } ExportResult IncludeCodeExporter::Export(std::ostream &write, std::shared_ptr raw, std::string& entryName, YAML::Node &node, std::string* replacement ) { const auto symbol = GetSafeNode(node, "symbol", entryName); const auto file = GetSafeNode(node, "file_path"); const auto ctype = GetSafeNode(node, "ctype"); SPDLOG_INFO("writing INC"); write << ctype << " " << symbol << "[] = {\n"; write << fourSpaceTab << "#include \"" << file << "\"\n"; write << "};\n\n"; return std::nullopt; } ExportResult IncludeBinaryExporter::Export(std::ostream &write, std::shared_ptr raw, std::string& entryName, YAML::Node &node, std::string* replacement ) { throw std::runtime_error("Include factory should not be used for otr/o2r mode."); return std::nullopt; } std::optional> IncludeFactory::parse(std::vector& buffer, YAML::Node& node) { SPDLOG_INFO("parsing INC"); const uint32_t blank = 1; return std::make_shared(blank); }