storage.h 931 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. // SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #pragma once
  4. #include "core/hle/service/service.h"
  5. namespace Service::AM {
  6. class IStorageImpl {
  7. public:
  8. virtual ~IStorageImpl();
  9. virtual std::vector<u8>& GetData() = 0;
  10. virtual const std::vector<u8>& GetData() const = 0;
  11. virtual std::size_t GetSize() const = 0;
  12. };
  13. class IStorage final : public ServiceFramework<IStorage> {
  14. public:
  15. explicit IStorage(Core::System& system_, std::vector<u8>&& buffer);
  16. ~IStorage() override;
  17. std::vector<u8>& GetData() {
  18. return impl->GetData();
  19. }
  20. const std::vector<u8>& GetData() const {
  21. return impl->GetData();
  22. }
  23. std::size_t GetSize() const {
  24. return impl->GetSize();
  25. }
  26. private:
  27. void Register();
  28. void Open(HLERequestContext& ctx);
  29. std::shared_ptr<IStorageImpl> impl;
  30. };
  31. } // namespace Service::AM