32#ifndef BERTINI_DETAIL_EVENTS_HPP
33#define BERTINI_DETAIL_EVENTS_HPP
34#include <boost/type_index.hpp>
57 { BOOST_TYPE_INDEX_REGISTER_CLASS
62 template<
class ObsT,
bool IsConst = true>
78 { BOOST_TYPE_INDEX_REGISTER_CLASS
98 ObsT
const&
Get()
const
122 { BOOST_TYPE_INDEX_REGISTER_CLASS
153 template<
typename ObsT>
157 template<
typename ObsT>
166 #define ADD_BERTINI_EVENT_TYPE(event_name,event_parenttype) template<class ObservedT> \
167 class event_name : public event_parenttype<ObservedT> \
168 { BOOST_TYPE_INDEX_REGISTER_CLASS \
170 using HeldT = typename event_parenttype<ObservedT>::HeldT; \
171 event_name(HeldT obs) : event_parenttype<ObservedT>(obs){} \
172 virtual ~event_name() = default; \
173 event_name() = delete; }
Strawman Event type, enabling polymorphism.
Definition events.hpp:57
virtual ~AnyEvent()=default
ObsT & current_observable_
The observable object this event carries.
Definition events.hpp:149
Event(ObsT &obs)
Constructor for an event.
Definition events.hpp:130
ObsT & Get()
Get the emitting object, by const reference.
Definition events.hpp:142
ObsT & HeldT
How the observable is held: by mutable reference.
Definition events.hpp:147
const ObsT & current_observable_
The observable object this event carries.
Definition events.hpp:105
ObsT const & Get() const
Get the emitting object, by const reference.
Definition events.hpp:98
Event(ObsT const &obs)
Constructor for an event.
Definition events.hpp:86
const ObsT & HeldT
How the observable is held: by const reference.
Definition events.hpp:103
Definition algorithm_builder.hpp:36
Event< ObsT, true > ConstEvent
An event holding a const reference to its observable.
Definition events.hpp:154
Event< ObsT, false > MutableEvent
An event holding a mutable reference to its observable.
Definition events.hpp:158