le2d v0.4.7
2D game engine framework
 
Loading...
Searching...
No Matches
scoped_mapping.hpp
Go to the documentation of this file.
1#pragma once
4
5namespace le::input {
7template <std::derived_from<IMapping> Type>
8class ScopedMapping : public Type {
9 public:
10 ScopedMapping(ScopedMapping const&) = delete;
12 auto operator=(ScopedMapping const&) = delete;
13 auto operator=(ScopedMapping&&) = delete;
14
15 explicit ScopedMapping(gsl::not_null<Router*> router) : m_router(router) { router->push_mapping(this); }
16
17 ~ScopedMapping() { m_router->remove_mapping(this); }
18
19 private:
20 gsl::not_null<Router*> m_router;
21};
22
24} // namespace le::input
RAII wrapper for associating a mapping with a router.
Definition scoped_mapping.hpp:8
auto operator=(ScopedMapping const &)=delete
ScopedMapping(ScopedMapping const &)=delete
ScopedMapping(gsl::not_null< Router * > router)
Definition scoped_mapping.hpp:15
~ScopedMapping()
Definition scoped_mapping.hpp:17
auto operator=(ScopedMapping &&)=delete
ScopedMapping(ScopedMapping &&)=delete
Definition action.hpp:4