diff options
Diffstat (limited to 'bindings/cpp/include/pugl/pugl.hpp')
-rw-r--r-- | bindings/cpp/include/pugl/pugl.hpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/bindings/cpp/include/pugl/pugl.hpp b/bindings/cpp/include/pugl/pugl.hpp index 51cfdb8..4eebdac 100644 --- a/bindings/cpp/include/pugl/pugl.hpp +++ b/bindings/cpp/include/pugl/pugl.hpp @@ -102,6 +102,11 @@ struct Event final : Base { /// The `type` field of the corresponding C event structure static constexpr const PuglEventType type = t; + + template<class... Args> + explicit Event(const PuglEventFlags f, Args... args) + : Base{t, f, args...} + {} }; using Mod = PuglMod; ///< @copydoc PuglMod @@ -622,6 +627,16 @@ public: return static_cast<Status>(puglStopTimer(cobj(), id)); } + template<PuglEventType t, class Base> + Status sendEvent(const Event<t, Base>& event) noexcept + { + PuglEvent cEvent{{t, 0}}; + + *reinterpret_cast<Base*>(&cEvent) = event; + + return static_cast<Status>(puglSendEvent(cobj(), &cEvent)); + } + /** @} */ |