2 // Copyright (c) 2020 Fraunhofer Institute for Applied Information Technology (FIT)
3 // Network Research Group (NET)
4 // Schloss Birlinghoven, 53754 Sankt Augustin, GERMANY
5 // Contact: support@wiback.org
7 // This file is part of the SENF code tree.
8 // It is licensed under the 3-clause BSD License (aka New BSD License).
9 // See LICENSE.txt in the top level directory for details or visit
10 // https://opensource.org/licenses/BSD-3-Clause
15 \brief Events inline template implementation */
20 #include <senf/Utils/senfassert.hh>
21 #include "detail/EventBinding.hh"
23 #define prefix_ inline
24 //-/////////////////////////////////////////////////////////////////////////////////////////////////
26 //-/////////////////////////////////////////////////////////////////////////////////////////////////
27 // senf::ppi::EventImplementationHelper<EventType,Self>
29 //-/////////////////////////////////////////////////////////////////////////////////////////////////
32 template <class EventType, class Self>
34 senf::ppi::EventImplementationHelper<EventType,Self>::callback(EventArg event,
35 ClockService::clock_type time)
37 binding().callback(event,time);
40 template <class EventType, class Self>
41 prefix_ void senf::ppi::EventImplementationHelper<EventType,Self>::callback(EventArg event)
43 binding().callback(event);
46 //-/////////////////////////////////////////////////////////////////////////////////////////////////
49 template <class EventType, class Self>
50 prefix_ senf::ppi::detail::EventBinding<EventType> &
51 senf::ppi::EventImplementationHelper<EventType,Self>::binding()
53 SENF_ASSERT( static_cast<Self*>(this)->binding_,
54 "senf::ppi::EventImplementationHelper::binding(): Missing registerEvent()" );
55 return * static_cast<Self*>(this)->binding_;
58 //-/////////////////////////////////////////////////////////////////////////////////////////////////
59 // senf::ppi::EventImplementationHelper<void,Self>
61 //-/////////////////////////////////////////////////////////////////////////////////////////////////
66 senf::ppi::EventImplementationHelper<void,Self>::callback(ClockService::clock_type time)
68 binding().callback(time);
72 prefix_ void senf::ppi::EventImplementationHelper<void,Self>::callback()
77 //-/////////////////////////////////////////////////////////////////////////////////////////////////
81 prefix_ senf::ppi::detail::EventBinding<void> &
82 senf::ppi::EventImplementationHelper<void,Self>::binding()
84 SENF_ASSERT( static_cast<Self*>(this)->binding_,
85 "senf::ppi::EventImplementationHelper::binding(): Missing registerEvent()" );
86 return * static_cast<Self*>(this)->binding_;
89 //-/////////////////////////////////////////////////////////////////////////////////////////////////
90 // senf::ppi::EventImplementation<EventType>
92 template <class EventType>
93 prefix_ senf::ppi::module::Module & senf::ppi::EventImplementation<EventType>::module()
96 return binding_->module();
99 template <class EventType>
100 prefix_ senf::ppi::EventManager & senf::ppi::EventImplementation<EventType>::manager()
103 return binding_->manager();
106 //-/////////////////////////////////////////////////////////////////////////////////////////////////
109 template <class EventType>
110 prefix_ senf::ppi::EventImplementation<EventType>::EventImplementation()
114 //-/////////////////////////////////////////////////////////////////////////////////////////////////
117 template <class EventType>
118 prefix_ bool senf::ppi::EventImplementation<EventType>::v_isRegistered()
123 template <class EventType>
125 senf::ppi::EventImplementation<EventType>::setBinding(detail::EventBinding<Event> & binding)
130 //-/////////////////////////////////////////////////////////////////////////////////////////////////
137 // comment-column: 40
138 // c-file-style: "senf"
139 // indent-tabs-mode: nil
140 // ispell-local-dictionary: "american"
141 // compile-command: "scons -u test"