15#include <peak/dll_interface/peak_dll_interface_util.hpp>
78 void SetCurrentEntry(
const std::shared_ptr<EnumerationEntryNode>& entry);
115 bool HasEntry(
const std::string& symbolicValue)
const;
141 std::shared_ptr<EnumerationEntryNode>
FindEntry(
const std::string& symbolicValue)
const;
156 std::shared_ptr<EnumerationEntryNode>
FindEntry(int64_t value)
const;
169 std::shared_ptr<EnumerationEntryNode>
TryFindEntry(
const std::string& symbolicValue)
const;
182 std::shared_ptr<EnumerationEntryNode>
TryFindEntry(
const int64_t value)
const;
193 std::vector<std::shared_ptr<EnumerationEntryNode>>
Entries()
const;
204 std::vector<std::shared_ptr<EnumerationEntryNode>>
AvailableEntries()
const;
207 friend ClassCreator<EnumerationNode>;
230 , m_backendHandle(enumerationNodeHandle)
236 auto enumerationEntryNodeHandle = QueryNumericFromCInterfaceFunction<PEAK_ENUMERATION_ENTRY_NODE_HANDLE>(
242 auto nodeHandle = QueryNumericFromCInterfaceFunction<PEAK_NODE_HANDLE>([&](
PEAK_NODE_HANDLE* _nodeHandle) {
248 return std::dynamic_pointer_cast<EnumerationEntryNode>(
ParentNodeMap()->FindNode(nodeName));
253 if (entry ==
nullptr)
258 CallAndCheckCInterfaceFunction([&] {
265 CallAndCheckCInterfaceFunction([&] {
267 m_backendHandle, symbolicValue.c_str(), symbolicValue.size() + 1);
273 CallAndCheckCInterfaceFunction(
279 return QueryNumericFromCInterfaceFunction<PEAK_BOOL8>([&](
PEAK_BOOL8* hasEntry) {
281 m_backendHandle, symbolicValue.c_str(), symbolicValue.size() + 1, hasEntry);
287 return QueryNumericFromCInterfaceFunction<PEAK_BOOL8>([&](
PEAK_BOOL8* hasEntry) {
294 auto enumerationEntryNodeHandle = QueryNumericFromCInterfaceFunction<PEAK_ENUMERATION_ENTRY_NODE_HANDLE>(
297 m_backendHandle, symbolicValue.c_str(), symbolicValue.size() + 1, _enumerationEntryNodeHandle);
300 auto nodeHandle = QueryNumericFromCInterfaceFunction<PEAK_NODE_HANDLE>([&](
PEAK_NODE_HANDLE* _nodeHandle) {
306 return std::dynamic_pointer_cast<EnumerationEntryNode>(
ParentNodeMap()->FindNode(nodeName));
311 auto enumerationEntryNodeHandle = QueryNumericFromCInterfaceFunction<PEAK_ENUMERATION_ENTRY_NODE_HANDLE>(
314 m_backendHandle, value, _enumerationEntryNodeHandle);
317 auto nodeHandle = QueryNumericFromCInterfaceFunction<PEAK_NODE_HANDLE>([&](
PEAK_NODE_HANDLE* _nodeHandle) {
323 return std::dynamic_pointer_cast<EnumerationEntryNode>(
ParentNodeMap()->FindNode(nodeName));
329 auto enumerationEntryNodeHandle = QueryNumericFromCInterfaceFunction<PEAK_ENUMERATION_ENTRY_NODE_HANDLE>(
332 m_backendHandle, symbolicValue.c_str(), symbolicValue.size() + 1, _enumerationEntryNodeHandle);
335 if(enumerationEntryNodeHandle ==
nullptr)
340 auto nodeHandle = QueryNumericFromCInterfaceFunction<PEAK_NODE_HANDLE>([&](
PEAK_NODE_HANDLE* _nodeHandle) {
346 return std::dynamic_pointer_cast<EnumerationEntryNode>(
ParentNodeMap()->FindNode(nodeName));
351 auto enumerationEntryNodeHandle = QueryNumericFromCInterfaceFunction<PEAK_ENUMERATION_ENTRY_NODE_HANDLE>(
354 m_backendHandle, value, _enumerationEntryNodeHandle);
357 if(enumerationEntryNodeHandle ==
nullptr)
362 auto nodeHandle = QueryNumericFromCInterfaceFunction<PEAK_NODE_HANDLE>([&](
PEAK_NODE_HANDLE* _nodeHandle) {
368 return std::dynamic_pointer_cast<EnumerationEntryNode>(
ParentNodeMap()->FindNode(nodeName));
373 auto numEntries = QueryNumericFromCInterfaceFunction<size_t>([&](
size_t* _numEntries) {
377 std::vector<std::shared_ptr<EnumerationEntryNode>> entries;
378 for (
size_t x = 0; x < numEntries; ++x)
380 auto enumerationEntryNodeHandle = QueryNumericFromCInterfaceFunction<PEAK_ENUMERATION_ENTRY_NODE_HANDLE>(
383 m_backendHandle, x, _enumerationEntryNodeHandle);
386 auto nodeHandle = QueryNumericFromCInterfaceFunction<PEAK_NODE_HANDLE>(
389 enumerationEntryNodeHandle, _nodeHandle);
394 entries.emplace_back(std::dynamic_pointer_cast<EnumerationEntryNode>(
ParentNodeMap()->FindNode(nodeName)));
402 const auto& entries =
Entries();
403 std::vector<std::shared_ptr<EnumerationEntryNode>> availableEntries{};
404 std::copy_if(entries.begin(), entries.end(), std::back_inserter(availableEntries),
405 [](
const std::shared_ptr<EnumerationEntryNode>& entry) { return entry->IsAvailable(); });
406 return availableEntries;
The exception thrown for passing an invalid argument to a function.
Definition peak_exception.hpp:109
EnumerationNode & operator=(const EnumerationNode &other)=delete
std::vector< std::shared_ptr< EnumerationEntryNode > > AvailableEntries() const
Returns the currently selectable entries.
Definition peak_enumeration_node.hpp:400
std::vector< std::shared_ptr< EnumerationEntryNode > > Entries() const
Returns the entries.
Definition peak_enumeration_node.hpp:371
void SetCurrentEntry(const std::shared_ptr< EnumerationEntryNode > &entry)
Sets the current entry.
Definition peak_enumeration_node.hpp:251
std::shared_ptr< EnumerationEntryNode > CurrentEntry(NodeCacheUsePolicy cacheUsePolicy=NodeCacheUsePolicy::UseCache) const
Returns the current entry.
Definition peak_enumeration_node.hpp:233
~EnumerationNode() override=default
EnumerationNode & operator=(EnumerationNode &&other)=delete
std::shared_ptr< EnumerationEntryNode > FindEntry(const std::string &symbolicValue) const
Finds an entry with the given symbolic value.
Definition peak_enumeration_node.hpp:292
bool HasEntry(const std::string &symbolicValue) const
Checks whether the enumeration node contains an entry with the given symbolic value.
Definition peak_enumeration_node.hpp:277
static constexpr auto NodeType
Definition peak_enumeration_node.hpp:41
EnumerationNode(EnumerationNode &&other)=delete
std::string NodeDataType
Definition peak_enumeration_node.hpp:42
EnumerationNode(const EnumerationNode &other)=delete
std::shared_ptr< EnumerationEntryNode > TryFindEntry(const std::string &symbolicValue) const
Tries to find an entry with the given symbolic value.
Definition peak_enumeration_node.hpp:327
std::false_type NodeHasRange
Definition peak_enumeration_node.hpp:43
std::shared_ptr< NodeMap > ParentNodeMap() const
Returns the parent node map.
Definition peak_node.hpp:933
The "nodes" namespace contains all GenAPI node types.
Definition peak_boolean_node.hpp:26
@ Enumeration
Definition peak_node.hpp:95
NodeCacheUsePolicy
Definition peak_common_node_enums.hpp:25
@ UseCache
Definition peak_common_node_enums.hpp:26
std::string GetNodeName(PEAK_NODE_HANDLE nodeHandle)
Definition peak_node.hpp:620
The "core" namespace contains the direct GenAPI and GenTL wrapper.
Definition peak_buffer.hpp:34
The "peak" namespace directly contains convenience functionality like the DeviceManager as well as th...
Definition peak_dynamic_loader.h:33
PEAK_C_API PEAK_EnumerationNode_FindEntryByValue(PEAK_ENUMERATION_NODE_HANDLE enumerationNodeHandle, int64_t value, PEAK_ENUMERATION_ENTRY_NODE_HANDLE *enumerationEntryNodeHandle)
Tells the given enumeration node to find an entry with the given value.
PEAK_C_API PEAK_EnumerationNode_GetHasEntryByValue(PEAK_ENUMERATION_NODE_HANDLE enumerationNodeHandle, int64_t value, PEAK_BOOL8 *hasEntry)
Asks the given enumeration node whether it has an entry with the given value.
PEAK_C_API PEAK_EnumerationNode_SetCurrentEntryByValue(PEAK_ENUMERATION_NODE_HANDLE enumerationNodeHandle, int64_t value)
Tells the given enumeration node to set its current entry by the given value.
PEAK_C_API PEAK_EnumerationNode_ToNode(PEAK_ENUMERATION_NODE_HANDLE enumerationNodeHandle, PEAK_NODE_HANDLE *nodeHandle)
Casts the given enumeration node to a node.
struct PEAK_ENUMERATION_NODE * PEAK_ENUMERATION_NODE_HANDLE
Definition peak_backend.h:461
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:429
PEAK_C_API PEAK_EnumerationNode_GetCurrentEntry(PEAK_ENUMERATION_NODE_HANDLE enumerationNodeHandle, PEAK_NODE_CACHE_USE_POLICY cacheUsePolicy, PEAK_ENUMERATION_ENTRY_NODE_HANDLE *enumerationEntryNodeHandle)
Asks the given enumeration node for its current entry.
int32_t PEAK_NODE_CACHE_USE_POLICY
Definition peak_backend.h:242
PEAK_C_API PEAK_EnumerationNode_TryFindEntryByValue(PEAK_ENUMERATION_NODE_HANDLE enumerationNodeHandle, int64_t value, PEAK_ENUMERATION_ENTRY_NODE_HANDLE *enumerationEntryNodeHandle)
Tells the given enumeration node to try to find an entry with the given value.
PEAK_C_API PEAK_EnumerationNode_GetHasEntryBySymbolicValue(PEAK_ENUMERATION_NODE_HANDLE enumerationNodeHandle, const char *symbolicValue, size_t symbolicValueSize, PEAK_BOOL8 *hasEntry)
Asks the given enumeration node whether it has an entry with the given symbolic value.
PEAK_C_API PEAK_EnumerationNode_SetCurrentEntry(PEAK_ENUMERATION_NODE_HANDLE enumerationNodeHandle, PEAK_ENUMERATION_ENTRY_NODE_HANDLE enumerationEntryNodeHandle)
Tells the given enumeration node to set its current entry to the given entry.
int8_t PEAK_BOOL8
Definition peak_backend.h:43
PEAK_C_API PEAK_EnumerationNode_GetEntry(PEAK_ENUMERATION_NODE_HANDLE enumerationNodeHandle, size_t index, PEAK_ENUMERATION_ENTRY_NODE_HANDLE *enumerationEntryNodeHandle)
Asks the given enumeration node for the entry with the given index.
struct PEAK_ENUMERATION_ENTRY_NODE * PEAK_ENUMERATION_ENTRY_NODE_HANDLE
Definition peak_backend.h:465
PEAK_C_API PEAK_EnumerationNode_FindEntryBySymbolicValue(PEAK_ENUMERATION_NODE_HANDLE enumerationNodeHandle, const char *symbolicValue, size_t symbolicValueSize, PEAK_ENUMERATION_ENTRY_NODE_HANDLE *enumerationEntryNodeHandle)
Tells the given enumeration node to find an entry with the given symbolic value.
PEAK_C_API PEAK_EnumerationNode_GetNumEntries(PEAK_ENUMERATION_NODE_HANDLE enumerationNodeHandle, size_t *numEntries)
Asks the given enumeration node for its number of entries.
PEAK_C_API PEAK_EnumerationNode_TryFindEntryBySymbolicValue(PEAK_ENUMERATION_NODE_HANDLE enumerationNodeHandle, const char *symbolicValue, size_t symbolicValueSize, PEAK_ENUMERATION_ENTRY_NODE_HANDLE *enumerationEntryNodeHandle)
Tells the given enumeration node to try to find an entry with the given symbolic value.
PEAK_C_API PEAK_EnumerationNode_SetCurrentEntryBySymbolicValue(PEAK_ENUMERATION_NODE_HANDLE enumerationNodeHandle, const char *symbolicValue, size_t symbolicValueSize)
Tells the given enumeration node to set its current entry by the given symbolic value.
#define PEAK_C_ABI_PREFIX
Definition peak_dll_defines.h:16