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 | |
| download | loader-28f66dee8a9fe49aadb5c1d67de48d9232363963.tar.xz loader-28f66dee8a9fe49aadb5c1d67de48d9232363963.zip | |
Initial commit
Diffstat (limited to 'client/src/util')
| -rw-r--r-- | client/src/util/events.h | 24 | ||||
| -rw-r--r-- | client/src/util/io.cpp | 12 | ||||
| -rw-r--r-- | client/src/util/io.h | 7 |
3 files changed, 43 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 diff --git a/client/src/util/io.cpp b/client/src/util/io.cpp new file mode 100644 index 0000000..06d2b9a --- /dev/null +++ b/client/src/util/io.cpp @@ -0,0 +1,12 @@ +#include "../include.h" +#include "io.h" + +std::shared_ptr<spdlog::logger> io::logger; + +void io::init() { + spdlog::sink_ptr sink = + std::make_shared<spdlog::sinks::stdout_color_sink_mt>(); + sink->set_pattern("%^~>%$ %v"); + + logger = std::make_shared<spdlog::logger>("client", sink); +} diff --git a/client/src/util/io.h b/client/src/util/io.h new file mode 100644 index 0000000..8eae321 --- /dev/null +++ b/client/src/util/io.h @@ -0,0 +1,7 @@ +#pragma once + +namespace io { +extern std::shared_ptr<spdlog::logger> logger; + +void init(); +}; // namespace io |