CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
Event.hpp File Reference
#include "Forward.hpp"
#include "CeresEngine/Macros.hpp"
#include "CeresEngine/Foundation/Event.hpp"
#include <type_traits>

Go to the source code of this file.

Classes

struct  CeresEngine::AbstractEntityEvent
 A abstract class that provides a trait that allows checking for event implementations. More...
 
struct  CeresEngine::EntityEvent< T >
 A template class that wraps a event. More...
 
struct  CeresEngine::EntityEventSet< Es >
 
struct  CeresEngine::EntityEventSet<>
 
class  CeresEngine::EntityEventType
 A type that describes and provides type-erased operations on a entity event. More...
 
class  CeresEngine::TEntityEventType< E >
 An implementation of the EntityEventType interface that implements type-erased operations for events. More...
 

Namespaces

namespace  CeresEngine
 

Concepts

concept  CeresEngine::CEntityEvent
 

Macros

#define CE_EXTERN_ENTITY_EVENT_BASE(T, EXTERN)
 
#define CE_EXTERN_ENTITY_EVENT(T)   CE_EXTERN_ENTITY_EVENT_BASE(T, extern)
 
#define CE_EXTERN_ENTITY_EVENT_IMPL(T)   CE_EXTERN_ENTITY_EVENT_BASE(T, )
 

Typedefs

using CeresEngine::EntityEventID = unsigned int
 A numeric type that represents a event.
 
template<typename T , typename E >
using CeresEngine::ifEntityEvent = typename std::enable_if< isEntityEvent< E >, T >::type
 If the type E is a event (as defined by isEntityEvent<E>), this type is aliased to T.
 

Functions

template<CEntityEvent E>
constexpr void CeresEngine::checkEvent ()
 A trait that checks if the type E is a valid event type.
 

Variables

template<typename E >
constexpr bool CeresEngine::isEntityEvent = std::is_base_of<AbstractEntityEvent, E>::value
 A trait that checks if the type E is a event.
 
template<typename... Es>
constexpr bool CeresEngine::areEntityEvents = (isEntityEvent<Es> && ...)
 A trait that checks if the types Es are all events.
 

Macro Definition Documentation

◆ CE_EXTERN_ENTITY_EVENT

#define CE_EXTERN_ENTITY_EVENT (   T)    CE_EXTERN_ENTITY_EVENT_BASE(T, extern)

◆ CE_EXTERN_ENTITY_EVENT_BASE

#define CE_EXTERN_ENTITY_EVENT_BASE (   T,
  EXTERN 
)
Value:
EXTERN template struct ::CeresEngine::EntityEvent<T>; \
EXTERN template class ::CeresEngine::TEntityEventType<T>; \
EXTERN template const ::CeresEngine::EntityEventType& ::CeresEngine::EntityEventType::get<T>() noexcept;

◆ CE_EXTERN_ENTITY_EVENT_IMPL

#define CE_EXTERN_ENTITY_EVENT_IMPL (   T)    CE_EXTERN_ENTITY_EVENT_BASE(T, )