lxgui
utils_observer.hpp
1 #ifndef LXGUI_UTILS_OBSERVER_HPP
2 #define LXGUI_UTILS_OBSERVER_HPP
3 
4 #include "lxgui/lxgui.hpp"
5 
6 #include <oup/observable_unique_ptr.hpp>
7 
8 namespace lxgui::utils {
9 
10 template<typename T>
11 using owner_ptr = oup::observable_sealed_ptr<T>;
12 
13 using oup::control_block;
14 using oup::observer_ptr;
15 
16 using oup::const_pointer_cast;
17 using oup::dynamic_pointer_cast;
18 using oup::static_pointer_cast;
19 
20 template<typename T>
21 using enable_observer_from_this = oup::enable_observer_from_this_sealed<T>;
22 
23 template<typename T, typename... Args>
24 owner_ptr<T> make_owned(Args&&... args) {
25  return oup::make_observable_sealed<T>(std::forward<Args>(args)...);
26 }
27 
28 } // namespace lxgui::utils
29 
30 #endif
owner_ptr< T > make_owned(Args &&... args)
oup::enable_observer_from_this_sealed< T > enable_observer_from_this
oup::observable_sealed_ptr< T > owner_ptr