opynsim
Unofficial C++ Documentation
Loading...
Searching...
No Matches
popup_manager.h
Go to the documentation of this file.
1#pragma once
2
3#include <concepts>
4#include <memory>
5#include <utility>
6#include <vector>
7
8namespace osc { class Popup; }
9
10namespace osc
11{
12 // generic storage for a drawable popup stack
14 public:
16 PopupManager(const PopupManager&) = delete;
21
23 {
24 popups_.push_back(std::move(ptr));
25 }
26
27 template<std::derived_from<Popup> T, typename... Args>
28 requires std::constructible_from<T, Args&&...>
30 {
31 auto ptr = std::make_shared<T>(std::forward<Args>(args)...);
32 T& ref = *ptr;
33 popups_.push_back(std::move(ptr));
34 return ref;
35 }
36
37 void on_mount() { open_all(); }
38 void open_all();
39 void on_draw();
40 [[nodiscard]] bool empty();
41 void clear();
42 private:
43 std::vector<std::shared_ptr<Popup>> popups_;
44 };
45}
Definition popup_manager.h:13
PopupManager(const PopupManager &)=delete
PopupManager(PopupManager &&) noexcept
void on_mount()
Definition popup_manager.h:37
void push_back(std::shared_ptr< Popup > ptr)
Definition popup_manager.h:22
T & emplace_back(Args &&... args)
Definition popup_manager.h:29
Definition popup.h:17
Definition custom_decoration_generator.h:5
constexpr U to(T &&value)
Definition conversion.h:56