summaryrefslogtreecommitdiff
path: root/src/factories/BlobFactory.cpp
diff options
context:
space:
mode:
authorKiritoDv <kiritodev01@gmail.com>2024-01-30 23:03:23 -0600
committerLywx <kiritodev01@gmail.com>2024-01-31 12:05:40 -0600
commit4668cf08fb240da4abaafc073ba08d9d13ac0fa5 (patch)
tree8ef2781da88920eeb1267225e73406e25a3c17b6 /src/factories/BlobFactory.cpp
parent242f8acf212d143443dc2ce846507bdb82571902 (diff)
Refactored code and added per file config
Diffstat (limited to 'src/factories/BlobFactory.cpp')
-rw-r--r--src/factories/BlobFactory.cpp20
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