IDS peak genericC++ v1.17.0
Loading...
Searching...
No Matches
peak_enumeration_entry_node.hpp
Go to the documentation of this file.
1
6
7#pragma once
8
10
12#include <peak/dll_interface/peak_dll_interface_util.hpp>
14
15#include <type_traits>
16#include <cstddef>
17#include <cstdint>
18#include <string>
19
20
21namespace peak
22{
23namespace core
24{
25namespace nodes
26{
27
34{
35public:
37 using NodeDataType = std::string;
38 using NodeHasRange = std::false_type;
39
41 ~EnumerationEntryNode() override = default;
46
58
68 PEAK_COMMON_NO_DISCARD std::string SymbolicValue() const;
69
72 {
73 return SymbolicValue();
74 }
75
85 PEAK_COMMON_NO_DISCARD int64_t Value() const;
86
89 {
90 return Value();
91 }
92
93private:
94 friend ClassCreator<EnumerationEntryNode>;
95 friend EnumerationNode;
97 PEAK_ENUMERATION_ENTRY_NODE_HANDLE enumerationEntryNodeHandle, const std::weak_ptr<NodeMap>& parentNodeMap);
99};
100
101} /* namespace nodes */
102} /* namespace core */
103} /* namespace peak */
104
105/* Implementation */
106namespace peak
107{
108namespace core
109{
110namespace nodes
111{
112
114 PEAK_ENUMERATION_ENTRY_NODE_HANDLE enumerationEntryNodeHandle, const std::weak_ptr<NodeMap>& parentNodeMap)
115 : Node(QueryNumericFromCInterfaceFunction<PEAK_NODE_HANDLE>([&](PEAK_NODE_HANDLE* nodeHandle) {
116 return PEAK_C_ABI_PREFIX PEAK_EnumerationEntryNode_ToNode(enumerationEntryNodeHandle, nodeHandle);
117 }),
118 parentNodeMap)
119 , m_backendHandle(enumerationEntryNodeHandle)
120{}
121
123{
124 return QueryNumericFromCInterfaceFunction<PEAK_BOOL8>([&](PEAK_BOOL8* isSelfClearing) {
125 return PEAK_C_ABI_PREFIX PEAK_EnumerationEntryNode_GetIsSelfClearing(m_backendHandle, isSelfClearing);
126 }) > 0;
127}
128
129inline std::string EnumerationEntryNode::SymbolicValue() const
130{
131 return QueryStringFromCInterfaceFunction([&](char* symbolicValue, size_t* symbolicValueSize) {
133 m_backendHandle, symbolicValue, symbolicValueSize);
134 });
135}
136
137inline int64_t EnumerationEntryNode::Value() const
138{
139 return QueryNumericFromCInterfaceFunction<int64_t>([&](int64_t* value) {
140 return PEAK_C_ABI_PREFIX PEAK_EnumerationEntryNode_GetValue(m_backendHandle, value);
141 });
142}
143
144} /* namespace nodes */
145} /* namespace core */
146} /* namespace peak */
EnumerationEntryNode()=delete
EnumerationEntryNode & operator=(const EnumerationEntryNode &other)=delete
EnumerationEntryNode(EnumerationEntryNode &&other)=delete
static constexpr auto NodeType
Definition peak_enumeration_entry_node.hpp:36
PEAK_COMMON_NO_DISCARD bool IsSelfClearing() const
Checks whether the node is self clearing.
Definition peak_enumeration_entry_node.hpp:122
~EnumerationEntryNode() override=default
EnumerationEntryNode(const EnumerationEntryNode &other)=delete
EnumerationEntryNode & operator=(EnumerationEntryNode &&other)=delete
std::false_type NodeHasRange
Definition peak_enumeration_entry_node.hpp:38
PEAK_COMMON_NO_DISCARD std::string SymbolicValue() const
Returns the symbolic value (i.e. name/string value) of the enum entry.
Definition peak_enumeration_entry_node.hpp:129
std::string NodeDataType
Definition peak_enumeration_entry_node.hpp:37
PEAK_COMMON_NO_DISCARD int64_t NumericValue() const
Returns the numeric value of the enum entry.
Definition peak_enumeration_entry_node.hpp:88
PEAK_COMMON_NO_DISCARD std::string StringValue() const
Returns the symbolic value (i.e. name/string value) of the enum entry.
Definition peak_enumeration_entry_node.hpp:71
PEAK_COMMON_NO_DISCARD int64_t Value() const
Returns the numeric value of the enum entry.
Definition peak_enumeration_entry_node.hpp:137
Represents a GenAPI enumeration node.
Definition peak_enumeration_node.hpp:37
Represents a GenAPI node.
Definition peak_node.hpp:125
@ EnumerationEntry
Definition peak_node.hpp:97
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_EnumerationEntryNode_ToNode(PEAK_ENUMERATION_ENTRY_NODE_HANDLE enumerationEntryNodeHandle, PEAK_NODE_HANDLE *nodeHandle)
Casts the given enumeration entry node to a node.
struct PEAK_NODE * PEAK_NODE_HANDLE
Definition peak_backend.h:427
PEAK_C_API PEAK_EnumerationEntryNode_GetValue(PEAK_ENUMERATION_ENTRY_NODE_HANDLE enumerationEntryNodeHandle, int64_t *value)
Asks the given enumeration entry node for its value.
int8_t PEAK_BOOL8
Definition peak_backend.h:41
PEAK_C_API PEAK_EnumerationEntryNode_GetSymbolicValue(PEAK_ENUMERATION_ENTRY_NODE_HANDLE enumerationEntryNodeHandle, char *symbolicValue, size_t *symbolicValueSize)
Asks the given enumeration entry node for its symbolic value.
struct PEAK_ENUMERATION_ENTRY_NODE * PEAK_ENUMERATION_ENTRY_NODE_HANDLE
Definition peak_backend.h:463
PEAK_C_API PEAK_EnumerationEntryNode_GetIsSelfClearing(PEAK_ENUMERATION_ENTRY_NODE_HANDLE enumerationEntryNodeHandle, PEAK_BOOL8 *isSelfClearing)
Asks the given enumeration entry node whether it is self clearing.
#define PEAK_COMMON_NO_DISCARD
Definition peak_common_defines.h:89
#define PEAK_C_ABI_PREFIX
Definition peak_dll_defines.h:13