IDS peak genericC++ v1.17.0
Loading...
Searching...
No Matches
peak_node_map.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>
15
16#include <type_traits>
17#include <unordered_map>
18#include <algorithm>
19#include <cstdint>
20#include <functional>
21#include <iterator>
22#include <memory>
23#include <mutex>
24#include <string>
25#include <vector>
26
27
28namespace peak
29{
30namespace core
31{
32namespace nodes
33{
34
35class BooleanNode;
36class CategoryNode;
37class CommandNode;
38class EnumerationNode;
40class FloatNode;
41class IntegerNode;
42class Node;
43class RegisterNode;
44class StringNode;
45
46} // namespace nodes
47
48class Buffer;
49
58 : public InitOnce
59 , public std::enable_shared_from_this<NodeMap>
60{
61public:
63 using NodeFilterFunction = std::function<bool(const std::shared_ptr<const nodes::Node>& nodeToFilter)>;
64
65
81 {
82 public:
85 ScopedNodeMapLock(const ScopedNodeMapLock& other) = delete;
89
90 private:
91 friend NodeMap;
92 friend ClassCreator<ScopedNodeMapLock>;
93 explicit ScopedNodeMapLock(const std::shared_ptr<NodeMap>& nodeMap);
94 explicit ScopedNodeMapLock(const std::shared_ptr<NodeMap>& nodeMap, std::adopt_lock_t t);
95 std::shared_ptr<NodeMap> m_nodeMap;
96 };
97
98 NodeMap() = delete;
99 ~NodeMap() = default;
100 NodeMap(const NodeMap& other) = delete;
101 NodeMap& operator=(const NodeMap& other) = delete;
102 NodeMap(NodeMap&& other) = delete;
103 NodeMap& operator=(NodeMap&& other) = delete;
104
117 PEAK_COMMON_NO_DISCARD bool HasNode(const std::string& name) const;
118
131 template <class NodeType, typename std::enable_if<std::is_base_of<nodes::Node, NodeType>::value, int>::type = 0>
132 PEAK_COMMON_NO_DISCARD bool HasNode(const std::string& name)
133 {
134 InitializeIfNecessary();
135 PEAK_NODE_HANDLE nodeHandle{ nullptr };
136 if (PEAK_C_ABI_PREFIX PEAK_NodeMap_FindNode(m_backendHandle, name.c_str(), name.size() + 1, &nodeHandle)
138 {
139 return false;
140 }
141
142 return std::dynamic_pointer_cast<NodeType>(m_nodesByName.at(name)) != nullptr;
143 }
144
158 PEAK_COMMON_NO_DISCARD std::shared_ptr<nodes::Node> FindNode(const std::string& name);
159
174 template <class NodeType, typename std::enable_if<std::is_base_of<nodes::Node, NodeType>::value, int>::type = 0>
175 PEAK_COMMON_NO_DISCARD std::shared_ptr<NodeType> FindNode(const std::string& name)
176 {
177 auto castedNode = std::dynamic_pointer_cast<NodeType>(FindNode(name));
178 if (!castedNode)
179 {
180 throw InvalidCastException("Invalid node cast!");
181 }
182
183 return castedNode;
184 }
185
197 PEAK_COMMON_NO_DISCARD std::shared_ptr<nodes::Node> TryFindNode(const std::string& name);
198
211 template <class NodeType, typename std::enable_if<std::is_base_of<nodes::Node, NodeType>::value, int>::type = 0>
212 PEAK_COMMON_NO_DISCARD std::shared_ptr<NodeType> TryFindNode(const std::string& name)
213 {
214 auto node = TryFindNode(name);
215 if (node == nullptr)
216 {
217 return nullptr;
218 }
219
220 auto castedNode = std::dynamic_pointer_cast<NodeType>(node);
221 if (!castedNode)
222 {
223 throw InvalidCastException("Invalid node cast!");
224 }
225
226 return castedNode;
227 }
228
236 void InvalidateNodes();
237
258 void PollNodes(int64_t elapsedTime_ms);
259
269 PEAK_COMMON_NO_DISCARD std::vector<std::shared_ptr<nodes::Node>> Nodes() const;
270
281 PEAK_COMMON_NO_DISCARD bool HasBufferSupportedChunks(const std::shared_ptr<Buffer>& buffer) const;
282
296 void UpdateChunkNodes(const std::shared_ptr<Buffer>& buffer);
297
308 PEAK_COMMON_NO_DISCARD bool HasEventSupportedData(const std::unique_ptr<Event>& event) const;
309
323 void UpdateEventNodes(const std::unique_ptr<Event>& event);
324
340 void StoreToFile(const std::string& filePath) const;
341
357 void LoadFromFile(const std::string& filePath);
358
375 PEAK_COMMON_NO_DISCARD std::unique_ptr<ScopedNodeMapLock> Lock();
376
398 PEAK_COMMON_NO_DISCARD std::unique_ptr<ScopedNodeMapLock> TryLock();
399
410 {
411 return m_backendHandle;
412 }
413
414private:
415 std::shared_ptr<nodes::Node> NodeFromHandle(PEAK_NODE_HANDLE nodeHandle) const;
416
417 friend ClassCreator<NodeMap>;
418 explicit NodeMap(PEAK_NODE_MAP_HANDLE nodeMapHandle);
419 PEAK_NODE_MAP_HANDLE m_backendHandle;
420
421 void Initialize() const override;
422 mutable std::vector<std::shared_ptr<nodes::Node>> m_nodes;
423 mutable std::unordered_map<std::string, std::shared_ptr<nodes::Node>> m_nodesByName;
424};
425
426} /* namespace core */
427} /* namespace peak */
428
439
440
441/* Implementation */
442namespace peak
443{
444namespace core
445{
446
447inline NodeMap::NodeMap(PEAK_NODE_MAP_HANDLE nodeMapHandle)
448 : m_backendHandle(nodeMapHandle)
449 , m_nodes()
450 , m_nodesByName()
451{}
452
453inline bool NodeMap::HasNode(const std::string& name) const
454{
455 return QueryNumericFromCInterfaceFunction<PEAK_BOOL8>([&](PEAK_BOOL8* hasNode) {
456 return PEAK_C_ABI_PREFIX PEAK_NodeMap_GetHasNode(m_backendHandle, name.c_str(), name.size() + 1, hasNode);
457 }) > 0;
458}
459
460inline std::shared_ptr<nodes::Node> NodeMap::FindNode(const std::string& name)
461{
462 InitializeIfNecessary();
463
464 (void)QueryNumericFromCInterfaceFunction<PEAK_NODE_HANDLE>([&](PEAK_NODE_HANDLE* nodeHandle) {
466 m_backendHandle, name.c_str(), name.size() + 1, nodeHandle);
467 });
468
469 return m_nodesByName.at(name);
470}
471
472inline std::shared_ptr<nodes::Node> NodeMap::TryFindNode(const std::string& name)
473{
474 InitializeIfNecessary();
475
476 const auto cNodeHandle = QueryNumericFromCInterfaceFunction<PEAK_NODE_HANDLE>(
477 [&](PEAK_NODE_HANDLE* nodeHandle) {
479 m_backendHandle, name.c_str(), name.size() + 1, nodeHandle);
480 });
481
482 if (cNodeHandle == nullptr)
483 {
484 return nullptr;
485 }
486
487 return m_nodesByName.at(name);
488}
489
491{
492 CallAndCheckCInterfaceFunction(
493 [&] { return PEAK_C_ABI_PREFIX PEAK_NodeMap_InvalidateNodes(m_backendHandle); });
494}
495
496inline void NodeMap::PollNodes(int64_t elapsedTime_ms)
497{
498 CallAndCheckCInterfaceFunction(
499 [&] { return PEAK_C_ABI_PREFIX PEAK_NodeMap_PollNodes(m_backendHandle, elapsedTime_ms); });
500}
501
502inline std::vector<std::shared_ptr<nodes::Node>> NodeMap::Nodes() const
503{
504 InitializeIfNecessary();
505
506 return m_nodes;
507}
508
509inline bool NodeMap::HasEventSupportedData(const std::unique_ptr<Event>& event) const
510{
511 if (event == nullptr)
512 {
513 throw InvalidArgumentException("The given event is a nullptr!");
514 }
515
516 return QueryNumericFromCInterfaceFunction<PEAK_BOOL8>([&](PEAK_BOOL8* hasSupportedData) {
518 m_backendHandle, event->m_backendHandle, hasSupportedData);
519 }) > 0;
520}
521
522inline void NodeMap::UpdateEventNodes(const std::unique_ptr<Event>& event)
523{
524 if (event == nullptr)
525 {
526 throw InvalidArgumentException("The given event is a nullptr!");
527 }
528
529 CallAndCheckCInterfaceFunction(
530 [&] { return PEAK_C_ABI_PREFIX PEAK_NodeMap_UpdateEventNodes(m_backendHandle, event->m_backendHandle); });
531}
532
533inline void NodeMap::StoreToFile(const std::string& filePath) const
534{
535 CallAndCheckCInterfaceFunction([&] {
536 return PEAK_C_ABI_PREFIX PEAK_NodeMap_StoreToFile(m_backendHandle, filePath.c_str(), filePath.size() + 1);
537 });
538}
539
540inline void NodeMap::LoadFromFile(const std::string& filePath)
541{
542 InitializeIfNecessary();
543
544 CallAndCheckCInterfaceFunction([&] {
546 m_backendHandle, filePath.c_str(), filePath.size() + 1);
547 });
548}
549
550inline NodeMap::ScopedNodeMapLock::ScopedNodeMapLock(const std::shared_ptr<NodeMap>& nodeMap)
551 : m_nodeMap(nodeMap)
552{
553 CallAndCheckCInterfaceFunction(
554 [&] { return PEAK_C_ABI_PREFIX PEAK_NodeMap_Lock(m_nodeMap->m_backendHandle); });
555}
556
557inline NodeMap::ScopedNodeMapLock::ScopedNodeMapLock(const std::shared_ptr<NodeMap>& nodeMap, std::adopt_lock_t)
558 : m_nodeMap(nodeMap)
559{}
560
562{
563 CallAndCheckCInterfaceFunction(
564 [&] { return PEAK_C_ABI_PREFIX PEAK_NodeMap_Unlock(m_nodeMap->m_backendHandle); });
565}
566
567inline std::unique_ptr<NodeMap::ScopedNodeMapLock> NodeMap::Lock()
568{
569 return std::make_unique<ClassCreator<ScopedNodeMapLock>>(shared_from_this());
570}
571
572inline std::unique_ptr<NodeMap::ScopedNodeMapLock> NodeMap::TryLock()
573{
574 PEAK_BOOL8 locked{ false };
575 CallAndCheckCInterfaceFunction(
576 [&] { return PEAK_C_ABI_PREFIX PEAK_NodeMap_TryLock(m_backendHandle, &locked); });
577
578 if (!locked)
579 {
580 return {};
581 }
582
583 return std::make_unique<ClassCreator<ScopedNodeMapLock>>(shared_from_this(), std::adopt_lock);
584}
585
586inline std::shared_ptr<nodes::Node> NodeMap::NodeFromHandle(PEAK_NODE_HANDLE nodeHandle) const
587{
588 auto nodeType = QueryNumericFromCInterfaceFunction<PEAK_NODE_TYPE>(
589 [&](PEAK_NODE_TYPE* _nodeType) { return PEAK_C_ABI_PREFIX PEAK_Node_GetType(nodeHandle, _nodeType); });
590
591 switch (nodeType)
592 {
594 auto integerNodeHandle = QueryNumericFromCInterfaceFunction<PEAK_INTEGER_NODE_HANDLE>(
595 [&](PEAK_INTEGER_NODE_HANDLE* _integerNodeHandle) {
596 return PEAK_C_ABI_PREFIX PEAK_Node_ToIntegerNode(nodeHandle, _integerNodeHandle);
597 });
598
599 return std::make_shared<ClassCreator<nodes::IntegerNode>>(
600 integerNodeHandle, std::const_pointer_cast<core::NodeMap>(shared_from_this()));
601 }
603 auto booleanNodeHandle = QueryNumericFromCInterfaceFunction<PEAK_BOOLEAN_NODE_HANDLE>(
604 [&](PEAK_BOOLEAN_NODE_HANDLE* _booleanNodeHandle) {
605 return PEAK_C_ABI_PREFIX PEAK_Node_ToBooleanNode(nodeHandle, _booleanNodeHandle);
606 });
607
608 return std::make_shared<ClassCreator<nodes::BooleanNode>>(
609 booleanNodeHandle, std::const_pointer_cast<core::NodeMap>(shared_from_this()));
610 }
612 auto commandNodeHandle = QueryNumericFromCInterfaceFunction<PEAK_COMMAND_NODE_HANDLE>(
613 [&](PEAK_COMMAND_NODE_HANDLE* _commandNodeHandle) {
614 return PEAK_C_ABI_PREFIX PEAK_Node_ToCommandNode(nodeHandle, _commandNodeHandle);
615 });
616
617 return std::make_shared<ClassCreator<nodes::CommandNode>>(
618 commandNodeHandle, std::const_pointer_cast<core::NodeMap>(shared_from_this()));
619 }
621 auto floatNodeHandle = QueryNumericFromCInterfaceFunction<PEAK_FLOAT_NODE_HANDLE>(
622 [&](PEAK_FLOAT_NODE_HANDLE* _floatNodeHandle) {
623 return PEAK_C_ABI_PREFIX PEAK_Node_ToFloatNode(nodeHandle, _floatNodeHandle);
624 });
625
626 return std::make_shared<ClassCreator<nodes::FloatNode>>(
627 floatNodeHandle, std::const_pointer_cast<core::NodeMap>(shared_from_this()));
628 }
630 auto stringNodeHandle = QueryNumericFromCInterfaceFunction<PEAK_STRING_NODE_HANDLE>(
631 [&](PEAK_STRING_NODE_HANDLE* _stringNodeHandle) {
632 return PEAK_C_ABI_PREFIX PEAK_Node_ToStringNode(nodeHandle, _stringNodeHandle);
633 });
634
635 return std::make_shared<ClassCreator<nodes::StringNode>>(
636 stringNodeHandle, std::const_pointer_cast<core::NodeMap>(shared_from_this()));
637 }
639 auto registerNodeHandle = QueryNumericFromCInterfaceFunction<PEAK_REGISTER_NODE_HANDLE>(
640 [&](PEAK_REGISTER_NODE_HANDLE* _registerNodeHandle) {
641 return PEAK_C_ABI_PREFIX PEAK_Node_ToRegisterNode(nodeHandle, _registerNodeHandle);
642 });
643
644 return std::make_shared<ClassCreator<nodes::RegisterNode>>(
645 registerNodeHandle, std::const_pointer_cast<core::NodeMap>(shared_from_this()));
646 }
648 auto categoryNodeHandle = QueryNumericFromCInterfaceFunction<PEAK_CATEGORY_NODE_HANDLE>(
649 [&](PEAK_CATEGORY_NODE_HANDLE* _categoryNodeHandle) {
650 return PEAK_C_ABI_PREFIX PEAK_Node_ToCategoryNode(nodeHandle, _categoryNodeHandle);
651 });
652
653 return std::make_shared<ClassCreator<nodes::CategoryNode>>(
654 categoryNodeHandle, std::const_pointer_cast<core::NodeMap>(shared_from_this()));
655 }
657 auto enumerationNodeHandle = QueryNumericFromCInterfaceFunction<PEAK_ENUMERATION_NODE_HANDLE>(
658 [&](PEAK_ENUMERATION_NODE_HANDLE* _enumerationNodeHandle) {
659 return PEAK_C_ABI_PREFIX PEAK_Node_ToEnumerationNode(nodeHandle, _enumerationNodeHandle);
660 });
661
662 return std::make_shared<ClassCreator<nodes::EnumerationNode>>(
663 enumerationNodeHandle, std::const_pointer_cast<core::NodeMap>(shared_from_this()));
664 }
666 auto enumerationEntryNodeHandle = QueryNumericFromCInterfaceFunction<PEAK_ENUMERATION_ENTRY_NODE_HANDLE>(
667 [&](PEAK_ENUMERATION_ENTRY_NODE_HANDLE* _enumerationEntryNodeHandle) {
669 nodeHandle, _enumerationEntryNodeHandle);
670 });
671
672 return std::make_shared<ClassCreator<nodes::EnumerationEntryNode>>(
673 enumerationEntryNodeHandle, std::const_pointer_cast<core::NodeMap>(shared_from_this()));
674 }
675 default: {
676 return std::make_shared<ClassCreator<nodes::Node>>(
677 nodeHandle, std::const_pointer_cast<core::NodeMap>(shared_from_this()));
678 }
679 }
680}
681
682inline void NodeMap::Initialize() const
683{
684 auto numNodes = QueryNumericFromCInterfaceFunction<size_t>([&](size_t* _numNodes) {
685 return PEAK_C_ABI_PREFIX PEAK_NodeMap_GetNumNodes(m_backendHandle, _numNodes);
686 });
687
688 for (size_t x = 0; x < numNodes; ++x)
689 {
690 auto nodeHandle = QueryNumericFromCInterfaceFunction<PEAK_NODE_HANDLE>(
691 [&](PEAK_NODE_HANDLE* _nodeHandle) {
692 return PEAK_C_ABI_PREFIX PEAK_NodeMap_GetNode(m_backendHandle, x, _nodeHandle);
693 });
694
695 auto node = NodeFromHandle(nodeHandle);
696
697 m_nodes.emplace_back(node);
698 m_nodesByName.emplace(node->Name(), node);
699 }
700}
701
702} /* namespace core */
703} /* namespace peak */
Represents a GenTL buffer module.
Definition peak_buffer.hpp:85
The exception thrown for passing an invalid argument to a function.
Definition peak_exception.hpp:118
The exception thrown for trying to apply an invalid cast.
Definition peak_exception.hpp:146
ScopedNodeMapLock(ScopedNodeMapLock &&other)=delete
ScopedNodeMapLock & operator=(ScopedNodeMapLock &&other)=delete
ScopedNodeMapLock & operator=(const ScopedNodeMapLock &other)=delete
ScopedNodeMapLock(const ScopedNodeMapLock &other)=delete
~ScopedNodeMapLock()
Definition peak_node_map.hpp:561
PEAK_COMMON_NO_DISCARD std::shared_ptr< nodes::Node > FindNode(const std::string &name)
Find a node with the given name.
Definition peak_node_map.hpp:460
PEAK_COMMON_NO_DISCARD bool HasNode(const std::string &name) const
Checks whether the node map contains a node with the given name.
Definition peak_node_map.hpp:453
PEAK_COMMON_NO_DISCARD bool HasEventSupportedData(const std::unique_ptr< Event > &event) const
Checks if the Event contains data corresponding to the NodeMap.
Definition peak_node_map.hpp:509
void StoreToFile(const std::string &filePath) const
Stores the values of streamable nodes to the file at the given file path.
Definition peak_node_map.hpp:533
NodeMap & operator=(const NodeMap &other)=delete
PEAK_COMMON_NO_DISCARD std::unique_ptr< ScopedNodeMapLock > Lock()
Acquires the NodeMap lock. Use this function to synchronize sequences of dependent NodeMap operations...
Definition peak_node_map.hpp:567
PEAK_COMMON_NO_DISCARD std::shared_ptr< NodeType > TryFindNode(const std::string &name)
Tries to find a node with the given name and type.
Definition peak_node_map.hpp:212
NodeMap(const NodeMap &other)=delete
void PollNodes(int64_t elapsedTime_ms)
Polls all nodes having a polling time.
Definition peak_node_map.hpp:496
PEAK_COMMON_NO_DISCARD std::vector< std::shared_ptr< nodes::Node > > Nodes() const
Returns the nodes.
Definition peak_node_map.hpp:502
std::function< bool(const std::shared_ptr< const nodes::Node > &nodeToFilter)> NodeFilterFunction
Definition peak_node_map.hpp:63
void UpdateChunkNodes(const std::shared_ptr< Buffer > &buffer)
Updates chunk information in the NodeMap.
Definition peak_buffer.hpp:1059
void InvalidateNodes()
Invalidates all nodes.
Definition peak_node_map.hpp:490
PEAK_COMMON_NO_DISCARD PEAK_NODE_MAP_HANDLE Handle() const
Get the backend handle.
Definition peak_node_map.hpp:409
NodeMap(NodeMap &&other)=delete
PEAK_COMMON_NO_DISCARD bool HasNode(const std::string &name)
Checks whether the node map contains a node with the given name and type.
Definition peak_node_map.hpp:132
void LoadFromFile(const std::string &filePath)
Loads the values of streamable nodes from the file at the given file path.
Definition peak_node_map.hpp:540
PEAK_COMMON_NO_DISCARD bool HasBufferSupportedChunks(const std::shared_ptr< Buffer > &buffer) const
Checks if the Buffer contains chunks corresponding to the NodeMap.
Definition peak_buffer.hpp:1046
PEAK_COMMON_NO_DISCARD std::unique_ptr< ScopedNodeMapLock > TryLock()
Attempts to acquire the NodeMap lock without blocking. Use this function to synchronize sequences of ...
Definition peak_node_map.hpp:572
PEAK_COMMON_NO_DISCARD std::shared_ptr< NodeType > FindNode(const std::string &name)
Find a node with the given name and type.
Definition peak_node_map.hpp:175
NodeMap & operator=(NodeMap &&other)=delete
void UpdateEventNodes(const std::unique_ptr< Event > &event)
Updates event information in the NodeMap.
Definition peak_node_map.hpp:522
PEAK_COMMON_NO_DISCARD std::shared_ptr< nodes::Node > TryFindNode(const std::string &name)
Tries to find a node with the given name.
Definition peak_node_map.hpp:472
Represents a GenAPI boolean node.
Definition peak_boolean_node.hpp:31
Represents a GenAPI category node.
Definition peak_category_node.hpp:34
Represents a GenAPI command node.
Definition peak_command_node.hpp:31
Represents a GenAPI enumeration entry node.
Definition peak_enumeration_entry_node.hpp:34
Represents a GenAPI enumeration node.
Definition peak_enumeration_node.hpp:37
Represents a GenAPI float node.
Definition peak_float_node.hpp:48
Represents a GenAPI integer node.
Definition peak_integer_node.hpp:38
Represents a GenAPI node.
Definition peak_node.hpp:125
Represents a GenAPI register node.
Definition peak_register_node.hpp:36
Represents a GenAPI string node.
Definition peak_string_node.hpp:33
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_Node_ToEnumerationEntryNode(PEAK_NODE_HANDLE nodeHandle, PEAK_ENUMERATION_ENTRY_NODE_HANDLE *enumerationEntryNodeHandle)
Casts the given node to an enumeration entry node.
@ PEAK_NODE_TYPE_BOOLEAN
Definition peak_backend.h:285
@ PEAK_NODE_TYPE_FLOAT
Definition peak_backend.h:287
@ PEAK_NODE_TYPE_COMMAND
Definition peak_backend.h:286
@ PEAK_NODE_TYPE_CATEGORY
Definition peak_backend.h:290
@ PEAK_NODE_TYPE_ENUMERATION_ENTRY
Definition peak_backend.h:292
@ PEAK_NODE_TYPE_ENUMERATION
Definition peak_backend.h:291
@ PEAK_NODE_TYPE_STRING
Definition peak_backend.h:288
@ PEAK_NODE_TYPE_INTEGER
Definition peak_backend.h:284
@ PEAK_NODE_TYPE_REGISTER
Definition peak_backend.h:289
PEAK_C_API PEAK_NodeMap_GetNode(PEAK_NODE_MAP_HANDLE nodeMapHandle, size_t index, PEAK_NODE_HANDLE *nodeHandle)
Asks the given node map for the node with the given index.
PEAK_C_API PEAK_Node_ToRegisterNode(PEAK_NODE_HANDLE nodeHandle, PEAK_REGISTER_NODE_HANDLE *registerNodeHandle)
Casts the given node to a register node.
PEAK_C_API PEAK_NodeMap_UpdateEventNodes(PEAK_NODE_MAP_HANDLE nodeMapHandle, PEAK_EVENT_HANDLE eventHandle)
Updates event information in the node map.
PEAK_C_API PEAK_NodeMap_Lock(PEAK_NODE_MAP_HANDLE nodeMapHandle)
Locks a recursive mutex on the NodeMap.
struct PEAK_ENUMERATION_NODE * PEAK_ENUMERATION_NODE_HANDLE
Definition peak_backend.h:459
PEAK_C_API PEAK_NodeMap_GetHasEventSupportedData(PEAK_NODE_MAP_HANDLE nodeMapHandle, PEAK_EVENT_HANDLE eventHandle, PEAK_BOOL8 *hasSupportedData)
Checks if the event contains data corresponding to the node map.
struct PEAK_COMMAND_NODE * PEAK_COMMAND_NODE_HANDLE
Definition peak_backend.h:439
struct PEAK_STRING_NODE * PEAK_STRING_NODE_HANDLE
Definition peak_backend.h:447
PEAK_C_API PEAK_Node_ToBooleanNode(PEAK_NODE_HANDLE nodeHandle, PEAK_BOOLEAN_NODE_HANDLE *booleanNodeHandle)
Casts the given node to a boolean node.
struct PEAK_NODE * PEAK_NODE_HANDLE
Definition peak_backend.h:427
PEAK_C_API PEAK_NodeMap_TryLock(PEAK_NODE_MAP_HANDLE nodeMapHandle, PEAK_BOOL8 *locked)
Tries to Lock a recursive mutex on the NodeMap. Use this to synchronize NodeMap access from multiple ...
PEAK_C_API PEAK_Node_GetType(PEAK_NODE_HANDLE nodeHandle, PEAK_NODE_TYPE *type)
Asks the given node for its type.
int32_t PEAK_NODE_TYPE
Definition peak_backend.h:294
PEAK_C_API PEAK_Node_ToFloatNode(PEAK_NODE_HANDLE nodeHandle, PEAK_FLOAT_NODE_HANDLE *floatNodeHandle)
Casts the given node to a float node.
PEAK_C_API PEAK_NodeMap_GetHasNode(PEAK_NODE_MAP_HANDLE nodeMapHandle, const char *nodeName, size_t nodeNameSize, PEAK_BOOL8 *hasNode)
Checks whether the given node map contains a node with the given name.
PEAK_C_API PEAK_Node_ToIntegerNode(PEAK_NODE_HANDLE nodeHandle, PEAK_INTEGER_NODE_HANDLE *integerNodeHandle)
Casts the given node to an integer node.
PEAK_C_API PEAK_NodeMap_PollNodes(PEAK_NODE_MAP_HANDLE nodeMapHandle, int64_t elapsedTime_ms)
Tells the given node map to poll its nodes.
PEAK_C_API PEAK_NodeMap_StoreToFile(PEAK_NODE_MAP_HANDLE nodeMapHandle, const char *filePath, size_t filePathSize)
Tells the given node map to store the values of its streamable nodes to a file at the given file path...
struct PEAK_FLOAT_NODE * PEAK_FLOAT_NODE_HANDLE
Definition peak_backend.h:443
PEAK_C_API PEAK_Node_ToEnumerationNode(PEAK_NODE_HANDLE nodeHandle, PEAK_ENUMERATION_NODE_HANDLE *enumerationNodeHandle)
Casts the given node to an enumeration node.
PEAK_C_API PEAK_NodeMap_GetNumNodes(PEAK_NODE_MAP_HANDLE nodeMapHandle, size_t *numNodes)
Asks the given node map for its number of nodes.
PEAK_C_API PEAK_NodeMap_FindNode(PEAK_NODE_MAP_HANDLE nodeMapHandle, const char *nodeName, size_t nodeNameSize, PEAK_NODE_HANDLE *nodeHandle)
Tells the given node map to find a node with the given name.
PEAK_C_API PEAK_Node_ToCategoryNode(PEAK_NODE_HANDLE nodeHandle, PEAK_CATEGORY_NODE_HANDLE *categoryNodeHandle)
Casts the given node to a category node.
int8_t PEAK_BOOL8
Definition peak_backend.h:41
struct PEAK_NODE_MAP * PEAK_NODE_MAP_HANDLE
Definition peak_backend.h:423
struct PEAK_ENUMERATION_ENTRY_NODE * PEAK_ENUMERATION_ENTRY_NODE_HANDLE
Definition peak_backend.h:463
struct PEAK_CATEGORY_NODE * PEAK_CATEGORY_NODE_HANDLE
Definition peak_backend.h:455
struct PEAK_REGISTER_NODE * PEAK_REGISTER_NODE_HANDLE
Definition peak_backend.h:451
PEAK_C_API PEAK_Node_ToStringNode(PEAK_NODE_HANDLE nodeHandle, PEAK_STRING_NODE_HANDLE *stringNodeHandle)
Casts the given node to a string node.
PEAK_C_API PEAK_Node_ToCommandNode(PEAK_NODE_HANDLE nodeHandle, PEAK_COMMAND_NODE_HANDLE *commandNodeHandle)
Casts the given node to a command node.
@ PEAK_RETURN_CODE_SUCCESS
Definition peak_backend.h:332
PEAK_C_API PEAK_NodeMap_Unlock(PEAK_NODE_MAP_HANDLE nodeMapHandle)
Unlocks the recursive mutex on the NodeMap.
PEAK_C_API PEAK_NodeMap_InvalidateNodes(PEAK_NODE_MAP_HANDLE nodeMapHandle)
Tells the given node map to invalidate its nodes.
struct PEAK_BOOLEAN_NODE * PEAK_BOOLEAN_NODE_HANDLE
Definition peak_backend.h:435
struct PEAK_INTEGER_NODE * PEAK_INTEGER_NODE_HANDLE
Definition peak_backend.h:431
PEAK_C_API PEAK_NodeMap_LoadFromFile(PEAK_NODE_MAP_HANDLE nodeMapHandle, const char *filePath, size_t filePathSize)
Tells the given node map to load the values of its streamable nodes from a file at the given file pat...
PEAK_C_API PEAK_NodeMap_TryFindNode(PEAK_NODE_MAP_HANDLE nodeMapHandle, const char *nodeName, size_t nodeNameSize, PEAK_NODE_HANDLE *nodeHandle)
Tells the given node map to try to find a node with the given name.
#define PEAK_COMMON_NO_DISCARD
Definition peak_common_defines.h:89
#define PEAK_C_ABI_PREFIX
Definition peak_dll_defines.h:13