IDS peak genericC++ v1.17.0
Loading...
Searching...
No Matches
peak_boolean_node.hpp
Go to the documentation of this file.
1
6
7#pragma once
8
10
11#include <type_traits>
13#include <peak/dll_interface/peak_dll_interface_util.hpp>
16
17
18namespace peak
19{
20namespace core
21{
22namespace nodes
23{
24
30class BooleanNode : public Node
31{
32public:
33 static constexpr auto NodeType = nodes::NodeType::Boolean;
34 using NodeDataType = bool;
35 using NodeHasRange = std::false_type;
36
37 BooleanNode() = delete;
38 ~BooleanNode() override = default;
39 BooleanNode(const BooleanNode& other) = delete;
40 BooleanNode& operator=(const BooleanNode& other) = delete;
41 BooleanNode(BooleanNode&& other) = delete;
42 BooleanNode& operator=(BooleanNode&& other) = delete;
43
58
69 void SetValue(bool value);
70
71private:
72 friend ClassCreator<BooleanNode>;
73 BooleanNode(PEAK_BOOLEAN_NODE_HANDLE booleanNodeHandle, const std::weak_ptr<NodeMap>& parentNodeMap);
74 PEAK_BOOLEAN_NODE_HANDLE m_backendHandle;
75};
76
77} /* namespace nodes */
78} /* namespace core */
79} /* namespace peak */
80
81/* Implementation */
82namespace peak
83{
84namespace core
85{
86namespace nodes
87{
88
90 PEAK_BOOLEAN_NODE_HANDLE booleanNodeHandle, const std::weak_ptr<NodeMap>& parentNodeMap)
91 : Node(QueryNumericFromCInterfaceFunction<PEAK_NODE_HANDLE>([&](PEAK_NODE_HANDLE* nodeHandle) {
92 return PEAK_C_ABI_PREFIX PEAK_BooleanNode_ToNode(booleanNodeHandle, nodeHandle);
93 }),
94 parentNodeMap)
95 , m_backendHandle(booleanNodeHandle)
96{}
97
98inline bool BooleanNode::Value(NodeCacheUsePolicy cacheUsePolicy /* = NodeCacheUsePolicy::UseCache */) const
99{
100 return QueryNumericFromCInterfaceFunction<PEAK_BOOL8>([&](PEAK_BOOL8* value) {
102 m_backendHandle, static_cast<PEAK_NODE_CACHE_USE_POLICY>(cacheUsePolicy), value);
103 }) > 0;
104}
105
106inline void BooleanNode::SetValue(bool value)
107{
108 CallAndCheckCInterfaceFunction(
109 [&] { return PEAK_C_ABI_PREFIX PEAK_BooleanNode_SetValue(m_backendHandle, value); });
110}
111
112} /* namespace nodes */
113} /* namespace core */
114} /* namespace peak */
BooleanNode(const BooleanNode &other)=delete
PEAK_COMMON_NO_DISCARD bool Value(NodeCacheUsePolicy cacheUsePolicy=NodeCacheUsePolicy::UseCache) const
Returns the value.
Definition peak_boolean_node.hpp:98
BooleanNode & operator=(BooleanNode &&other)=delete
bool NodeDataType
Definition peak_boolean_node.hpp:34
BooleanNode(BooleanNode &&other)=delete
void SetValue(bool value)
Sets the given value.
Definition peak_boolean_node.hpp:106
static constexpr auto NodeType
Definition peak_boolean_node.hpp:33
BooleanNode & operator=(const BooleanNode &other)=delete
std::false_type NodeHasRange
Definition peak_boolean_node.hpp:35
~BooleanNode() override=default
NodeCacheUsePolicy
Defines how node value access should interact with the internal cache.
Definition peak_common_node_enums.hpp:36
@ Boolean
Definition peak_node.hpp:90
@ UseCache
Definition peak_common_node_enums.hpp:38
The "nodes" namespace contains all GenAPI node types.
Definition peak_utils.hpp:31
The "core" namespace contains the direct GenAPI and GenTL wrapper.
Definition peak_buffer.hpp:32
The "peak" namespace directly contains convenience functionality like the DeviceManager as well as th...
Definition peak_buffer.hpp:29
PEAK_C_API PEAK_BooleanNode_ToNode(PEAK_BOOLEAN_NODE_HANDLE booleanNodeHandle, PEAK_NODE_HANDLE *nodeHandle)
Casts the given boolean node to a node.
PEAK_C_API PEAK_BooleanNode_SetValue(PEAK_BOOLEAN_NODE_HANDLE booleanNodeHandle, PEAK_BOOL8 value)
Tells the given boolean node to set the given value.
PEAK_C_API PEAK_BooleanNode_GetValue(PEAK_BOOLEAN_NODE_HANDLE booleanNodeHandle, PEAK_NODE_CACHE_USE_POLICY cacheUsePolicy, PEAK_BOOL8 *value)
Asks the given boolean node for its value.
struct PEAK_NODE * PEAK_NODE_HANDLE
Definition peak_backend.h:427
int32_t PEAK_NODE_CACHE_USE_POLICY
Definition peak_backend.h:240
int8_t PEAK_BOOL8
Definition peak_backend.h:41
struct PEAK_BOOLEAN_NODE * PEAK_BOOLEAN_NODE_HANDLE
Definition peak_backend.h:435
#define PEAK_COMMON_NO_DISCARD
Definition peak_common_defines.h:89
#define PEAK_C_ABI_PREFIX
Definition peak_dll_defines.h:13