IDS peak genericC++  v1.7.1
peak_event_supporting_module.hpp
Go to the documentation of this file.
1 
11 #pragma once
12 
13 
16 #include <peak/dll_interface/peak_dll_interface_util.hpp>
18 
19 #include <memory>
20 
21 
22 namespace peak
23 {
24 namespace core
25 {
26 
34 {
35 public:
36  EventSupportingModule() = default;
37  ~EventSupportingModule() override = default;
38  EventSupportingModule(const EventSupportingModule& other) = delete;
42 
55  std::unique_ptr<EventController> EnableEvents(EventType type);
56 
57 protected:
59 };
60 
61 } /* namespace core */
62 } /* namespace peak */
63 
64 /* Implementation */
65 namespace peak
66 {
67 namespace core
68 {
69 
70 inline std::unique_ptr<EventController> EventSupportingModule::EnableEvents(EventType type)
71 {
72  auto eventSupportingModuleHandle = EventSupportingModuleHandle();
73 
74  auto eventControllerHandle = QueryNumericFromCInterfaceFunction<PEAK_EVENT_CONTROLLER_HANDLE>(
75  [&](PEAK_EVENT_CONTROLLER_HANDLE* _eventControllerHandle) {
77  eventSupportingModuleHandle, static_cast<PEAK_EVENT_TYPE>(type), _eventControllerHandle);
78  });
79 
80  return std::make_unique<ClassCreator<EventController>>(eventControllerHandle);
81 }
82 
83 } /* namespace core */
84 } /* namespace peak */
virtual PEAK_EVENT_SUPPORTING_MODULE_HANDLE EventSupportingModuleHandle() const =0
EventType
Different types of events.
Definition: peak_event.hpp:34
The "peak" namespace directly contains convenience functionality like the DeviceManager as well as th...
Definition: peak_dynamic_loader.h:32
struct PEAK_EVENT_SUPPORTING_MODULE * PEAK_EVENT_SUPPORTING_MODULE_HANDLE
Definition: peak_backend.h:459
struct PEAK_EVENT_CONTROLLER * PEAK_EVENT_CONTROLLER_HANDLE
Definition: peak_backend.h:463
PEAK_C_API PEAK_EventSupportingModule_EnableEvents(PEAK_EVENT_SUPPORTING_MODULE_HANDLE eventSupportingModuleHandle, PEAK_EVENT_TYPE eventType, PEAK_EVENT_CONTROLLER_HANDLE *eventControllerHandle)
Tells the given event-supporting module to enable events of the given type.
EventSupportingModule & operator=(const EventSupportingModule &other)=delete
~EventSupportingModule() override=default
Represents an extended GenTL port.
Definition: peak_module.hpp:37
#define PEAK_C_ABI_PREFIX
Definition: peak_dll_defines.h:16
std::unique_ptr< EventController > EnableEvents(EventType type)
Enables events of the given event type.
Definition: peak_event_supporting_module.hpp:70
The base class for all modules being able to raise events.
Definition: peak_event_supporting_module.hpp:33