IOLink 1.11.0
Loading...
Searching...
No Matches
ParallelAccessExtension.h
1#pragma once
2
3#include <memory>
4#include <string>
5
6#include <iolink/FlagSet.h>
7#include <iolink/view/Extension.h>
8
9namespace iolink
10{
11
16{
27 THREAD_SAFE = 0x1,
28
37
46
54 PARALLEL_READ = 0x8,
55
63 PARALLEL_WRITE = 0x10
64};
65
66extern template class IOLINK_API_IMPORT FlagSet<ParallelAccessCapability>;
67
72
73// Define bitwise operators for ParallelAccessCapability
74IOLINK_DEFINE_ENUM_BITWISE_OPERATORS(ParallelAccessCapability)
75
76
88class IOLINK_API ParallelAccessExtension : public Extension
89{
90public:
94 static constexpr size_t EXTENSION_ID = 0x2;
95
102 inline static std::shared_ptr<ParallelAccessExtension> cast(const std::shared_ptr<Extension>& extension)
103 {
104 return std::dynamic_pointer_cast<ParallelAccessExtension>(extension);
105 }
106
111
115 inline bool support(ParallelAccessCapabilitySet flags) { return this->capabilities().has(flags); }
116
120 std::string toString() const;
121};
122
123} // end namespace iolink