CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
Event.hpp File Reference
#include "CeresEngine/Foundation/Coroutine.hpp"
#include "CeresEngine/Foundation/SmartPtr.hpp"
#include "CeresEngine/Foundation/Container/Tuple.hpp"
#include "CeresEngine/Foundation/Container/Vector.hpp"
#include "CeresEngine/Foundation/Threading/Threading.hpp"
#include <algorithm>
#include <cassert>
#include <functional>
#include <iterator>
#include <mutex>
#include <thread>
#include <type_traits>
#include <utility>

Go to the source code of this file.

Classes

struct  CeresEngine::EventDisconnector
 Interface for type erasure when disconnecting slots. More...
 
class  CeresEngine::WeakEventConnection
 Connection class. More...
 
class  CeresEngine::EventConnection
 Scoped connection class. More...
 
struct  CeresEngine::MultithreadPolicy
 Policy for multi threaded use of events. More...
 
struct  CeresEngine::SinglethreadPolicy
 Policy for single threaded use of events. More...
 
struct  CeresEngine::SinglethreadPolicy::MutexType
 Dummy mutex type that doesn't do anything. More...
 
struct  CeresEngine::SinglethreadPolicy::MutexLockType
 Dummy lock type, that doesn't do any locking. More...
 
class  CeresEngine::EventAccumulator< S, T, F, A >
 Event accumulator class template. More...
 
class  CeresEngine::TEvent< P, R(A...), F >
 Event template specialization. More...
 
struct  CeresEngine::TEvent< P, R(A...), F >::Disconnector
 Implementation of the shared disconnection state used by all connection created by event instances. More...
 

Namespaces

namespace  CeresEngine
 

Typedefs

template<typename T , template< typename > typename F = std::function>
using CeresEngine::Event = TEvent< MultithreadPolicy, T, F >
 Event type that is safe to use in multithreaded environments, where the event and slots exists in different threads.
 
template<typename T , template< typename > typename F = std::function>
using CeresEngine::UnsafeEvent = TEvent< SinglethreadPolicy, T, F >
 Event type that is unsafe in multithreaded environments.
 

Functions

template<typename P , template< typename > typename F>
auto CeresEngine::operator co_await (TEvent< P, void(), F > &event) noexcept
 Creates a new awaitable object for a event.
 
template<typename P , template< typename > typename F, typename... A>
auto CeresEngine::operator co_await (TEvent< P, void(A...), F > &event) noexcept
 Creates a new awaitable object for a event.