diff options
| author | KiritoDv <kiritodev01@gmail.com> | 2024-01-30 23:03:23 -0600 |
|---|---|---|
| committer | Lywx <kiritodev01@gmail.com> | 2024-01-31 12:05:40 -0600 |
| commit | 4668cf08fb240da4abaafc073ba08d9d13ac0fa5 (patch) | |
| tree | 8ef2781da88920eeb1267225e73406e25a3c17b6 /src/factories/BlobFactory.cpp | |
| parent | 242f8acf212d143443dc2ce846507bdb82571902 (diff) | |
Refactored code and added per file config
Diffstat (limited to 'src/factories/BlobFactory.cpp')
| -rw-r--r-- | src/factories/BlobFactory.cpp | 20 |
1 files changed, 5 insertions, 15 deletions
diff --git a/src/factories/BlobFactory.cpp b/src/factories/BlobFactory.cpp index 886a206..cd644bf 100644 --- a/src/factories/BlobFactory.cpp +++ b/src/factories/BlobFactory.cpp @@ -1,5 +1,5 @@ #include "BlobFactory.h" -#include "utils/MIODecoder.h" +#include "utils/Decompressor.h" #include <iomanip> void BlobCodeExporter::Export(std::ostream &write, std::shared_ptr<IParsedData> raw, std::string& entryName, YAML::Node &node, std::string* replacement ) { @@ -26,18 +26,8 @@ void BlobBinaryExporter::Export(std::ostream &write, std::shared_ptr<IParsedData writer.Finish(write); } -std::optional<std::shared_ptr<IParsedData>> BlobFactory::parse(std::vector<uint8_t>& buffer, YAML::Node& data) { - auto size = data["size"].as<uint32_t>(); - auto offset = data["offset"].as<uint32_t>(); - std::shared_ptr<RawBuffer> result; - - if(data["mio0"]){ - auto decoded = MIO0Decoder::Decode(buffer, offset); - auto cursor = data["mio0"].as<uint32_t>(); - result = std::make_shared<RawBuffer>(decoded.data() + cursor, size); - } else { - result = std::make_shared<RawBuffer>(buffer.data() + offset, size); - } - - return result; +std::optional<std::shared_ptr<IParsedData>> BlobFactory::parse(std::vector<uint8_t>& buffer, YAML::Node& node) { + auto size = GetSafeNode<size_t>(node, "size"); + auto [_, segment] = Decompressor::AutoDecode(node, buffer); + return std::make_shared<RawBuffer>(segment.data, segment.size); }
\ No newline at end of file |
