// Copyright 2018 Dolphin Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include #include #include #include "Common/CommonTypes.h" namespace Common::Debug { struct MemoryPatch { enum class State { Enabled, Disabled }; MemoryPatch(u32 address_, std::vector value_); MemoryPatch(u32 address_, u32 value_); u32 address; std::vector value; State is_enabled = State::Enabled; }; class MemoryPatches { public: MemoryPatches(); virtual ~MemoryPatches(); void SetPatch(u32 address, u32 value); void SetPatch(u32 address, std::vector value); const std::vector& GetPatches() const; void UnsetPatch(u32 address); void EnablePatch(std::size_t index); void DisablePatch(std::size_t index); bool HasEnabledPatch(u32 address) const; void RemovePatch(std::size_t index); void ClearPatches(); protected: virtual void Patch(std::size_t index) = 0; std::vector m_patches; }; } // namespace Common::Debug