#pragma once #include "cpu_interface.hpp" #include "hook_interface.hpp" #include "memory_interface.hpp" #include "serialization.hpp" class emulator : public cpu_interface, public memory_interface, public hook_interface { public: emulator() = default; ~emulator() override = default; emulator(const emulator&) = delete; emulator& operator=(const emulator&) = delete; emulator(emulator&&) = delete; emulator& operator=(emulator&&) = delete; virtual std::string get_name() const = 0; virtual void serialize_state(utils::buffer_serializer& buffer, bool is_snapshot) const = 0; virtual void deserialize_state(utils::buffer_deserializer& buffer, bool is_snapshot) = 0; };