diff options
Diffstat (limited to 'src/factories/DisplayListFactory.h')
| -rw-r--r-- | src/factories/DisplayListFactory.h | 21 |
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>(); + } }; |
