IDS peak genericC++  v1.7.2
peak_boolean_node.hpp
Go to the documentation of this file.
1 
11 #pragma once
12 
13 
15 #include <peak/dll_interface/peak_dll_interface_util.hpp>
18 
19 
20 namespace peak
21 {
22 namespace core
23 {
24 namespace nodes
25 {
26 
31 class BooleanNode : public Node
32 {
33 public:
34  BooleanNode() = delete;
35  ~BooleanNode() override = default;
36  BooleanNode(const BooleanNode& other) = delete;
37  BooleanNode& operator=(const BooleanNode& other) = delete;
38  BooleanNode(BooleanNode&& other) = delete;
39  BooleanNode& operator=(BooleanNode&& other) = delete;
40 
53  bool Value(NodeCacheUsePolicy cacheUsePolicy = NodeCacheUsePolicy::UseCache) const;
54 
65  void SetValue(bool value);
66 
67 private:
68  friend ClassCreator<BooleanNode>;
69  BooleanNode(PEAK_BOOLEAN_NODE_HANDLE booleanNodeHandle, const std::weak_ptr<NodeMap>& parentNodeMap);
70  PEAK_BOOLEAN_NODE_HANDLE m_backendHandle;
71 };
72 
73 } /* namespace nodes */
74 } /* namespace core */
75 } /* namespace peak */
76 
77 /* Implementation */
78 namespace peak
79 {
80 namespace core
81 {
82 namespace nodes
83 {
84 
86  PEAK_BOOLEAN_NODE_HANDLE booleanNodeHandle, const std::weak_ptr<NodeMap>& parentNodeMap)
87  : Node(QueryNumericFromCInterfaceFunction<PEAK_NODE_HANDLE>([&](PEAK_NODE_HANDLE* nodeHandle) {
88  return PEAK_C_ABI_PREFIX PEAK_BooleanNode_ToNode(booleanNodeHandle, nodeHandle);
89  }),
90  parentNodeMap)
91  , m_backendHandle(booleanNodeHandle)
92 {}
93 
94 inline bool BooleanNode::Value(NodeCacheUsePolicy cacheUsePolicy /* = NodeCacheUsePolicy::UseCache */) const
95 {
96  return QueryNumericFromCInterfaceFunction<PEAK_BOOL8>([&](PEAK_BOOL8* value) {
98  m_backendHandle, static_cast<PEAK_NODE_CACHE_USE_POLICY>(cacheUsePolicy), value);
99  }) > 0;
100 }
101 
102 inline void BooleanNode::SetValue(bool value)
103 {
104  CallAndCheckCInterfaceFunction(
105  [&] { return PEAK_C_ABI_PREFIX PEAK_BooleanNode_SetValue(m_backendHandle, value); });
106 }
107 
108 } /* namespace nodes */
109 } /* namespace core */
110 } /* namespace peak */
Represents a GenAPI boolean node.
Definition: peak_boolean_node.hpp:31
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.
int8_t PEAK_BOOL8
Definition: peak_backend.h:26
The "peak" namespace directly contains convenience functionality like the DeviceManager as well as th...
Definition: peak_dynamic_loader.h:32
NodeCacheUsePolicy
Definition: peak_common_node_enums.hpp:24
struct PEAK_NODE * PEAK_NODE_HANDLE
Definition: peak_backend.h:411
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_ToNode(PEAK_BOOLEAN_NODE_HANDLE booleanNodeHandle, PEAK_NODE_HANDLE *nodeHandle)
Casts the given boolean node to a node.
struct PEAK_BOOLEAN_NODE * PEAK_BOOLEAN_NODE_HANDLE
Definition: peak_backend.h:419
bool Value(NodeCacheUsePolicy cacheUsePolicy=NodeCacheUsePolicy::UseCache) const
Returns the value.
Definition: peak_boolean_node.hpp:94
~BooleanNode() override=default
BooleanNode & operator=(const BooleanNode &other)=delete
#define PEAK_C_ABI_PREFIX
Definition: peak_dll_defines.h:16
void SetValue(bool value)
Sets the given value.
Definition: peak_boolean_node.hpp:102
Represents a GenAPI node.
Definition: peak_node.hpp:121