/* * Copyright 2023 jacqueline * * SPDX-License-Identifier: GPL-3.0-only */ #pragma once #include #include #include "lua.hpp" #include "bridge.hpp" #include "lua_thread.hpp" #include "service_locator.hpp" namespace lua { class Registry { public: static auto instance(system_fsm::ServiceLocator&) -> Registry&; auto uiThread() -> std::shared_ptr; auto newThread() -> std::shared_ptr; auto AddPropertyModule( const std::string&, std::vector>>) -> void; Registry(const Registry&) = delete; Registry& operator=(const Registry&) = delete; private: Registry(system_fsm::ServiceLocator&); system_fsm::ServiceLocator& services_; std::unique_ptr bridge_; std::shared_ptr ui_thread_; std::list> threads_; std::vector< std::pair>>>> modules_; }; } // namespace lua