summaryrefslogtreecommitdiff
path: root/src/factories/DisplayListFactory.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/factories/DisplayListFactory.h')
-rw-r--r--src/factories/DisplayListFactory.h21
1 files changed, 19 insertions, 2 deletions
diff --git a/src/factories/DisplayListFactory.h b/src/factories/DisplayListFactory.h
index 71a7e42..fb69e01 100644
--- a/src/factories/DisplayListFactory.h
+++ b/src/factories/DisplayListFactory.h
@@ -8,7 +8,18 @@ class DListData : public IParsedData {
public:
std::vector<uint32_t> mGfxs;
- explicit DListData(std::vector<uint32_t> gfxs) : mGfxs(gfxs) {}
+ DListData() {}
+ DListData(std::vector<uint32_t> gfxs) : mGfxs(gfxs) {}
+
+ std::optional<std::vector<uint8_t>> ToCacheBuffer() override {
+ std::vector<uint8_t> buffer;
+ buffer.insert(buffer.end(), reinterpret_cast<uint8_t *>(mGfxs.data()), reinterpret_cast<uint8_t *>(mGfxs.data()) + mGfxs.size() * sizeof(uint32_t));
+ return buffer;
+ }
+
+ void FromCacheBuffer(std::vector<uint8_t>& buffer) override {
+ mGfxs = std::vector(reinterpret_cast<uint32_t *>(buffer.data()), reinterpret_cast<uint32_t *>(buffer.data()) + buffer.size() / sizeof(uint32_t));
+ }
};
class DListHeaderExporter : public BaseExporter {
@@ -35,5 +46,11 @@ public:
}
uint32_t GetAlignment() override {
return 8;
- };
+ }
+ bool IsCacheable() override {
+ return true;
+ }
+ virtual std::optional<std::shared_ptr<IParsedData>> CreateDataPointer() {
+ return std::make_shared<DListData>();
+ }
};