diff options
| author | alpine <[email protected]> | 2020-06-04 16:13:19 +0200 |
|---|---|---|
| committer | alpine <[email protected]> | 2020-06-04 16:13:19 +0200 |
| commit | 28f66dee8a9fe49aadb5c1d67de48d9232363963 (patch) | |
| tree | 00f6bfd0c2120d005c833301830d167b0753feb3 /client/src/util/events.h | |
| download | loader-28f66dee8a9fe49aadb5c1d67de48d9232363963.tar.xz loader-28f66dee8a9fe49aadb5c1d67de48d9232363963.zip | |
Initial commit
Diffstat (limited to 'client/src/util/events.h')
| -rw-r--r-- | client/src/util/events.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/client/src/util/events.h b/client/src/util/events.h new file mode 100644 index 0000000..b8d7781 --- /dev/null +++ b/client/src/util/events.h @@ -0,0 +1,24 @@ +#pragma once + +template <typename... Args> +class event { + using func_type = std::function<void(Args...)>; + + std::mutex event_lock; + std::list<func_type> m_funcs; + + public: + void add(const func_type& func) { + std::lock_guard<std::mutex> lock(event_lock); + + m_funcs.push_back(std::move(func)); + } + + void call(Args... params) { + std::lock_guard<std::mutex> lock(event_lock); + + for (auto& func : m_funcs) { + if (func) func(std::forward<Args>(params)...); + } + } +};
\ No newline at end of file |