IDS peak genericC++ v1.9.0
Loading...
Searching...
No Matches
peak_node_map.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#include <type_traits>
20#include <unordered_map>
21#include <algorithm>
22#include <cstdint>
23#include <functional>
24#include <iterator>
25#include <memory>
26#include <mutex>
27#include <string>
28#include <vector>
29
30
31namespace peak
32{
33namespace core
34{
35namespace nodes
36{
37
38class BooleanNode;
39class CategoryNode;
40class CommandNode;
41class EnumerationNode;
42class EnumerationEntryNode;
43class FloatNode;
44class IntegerNode;
45class Node;
46class RegisterNode;
47class StringNode;
48
49} // namespace nodes
50
51class Buffer;
52
60 : public InitOnce
61 , public std::enable_shared_from_this<NodeMap>
62{
63public:
65 using NodeFilterFunction = std::function<bool(const std::shared_ptr<const nodes::Node>& nodeToFilter)>;
66
73 {
74 public:
77 ScopedNodeMapLock(const ScopedNodeMapLock& other) = delete;
81
82 private:
83 friend NodeMap;
84 friend ClassCreator<ScopedNodeMapLock>;
85 explicit ScopedNodeMapLock(const std::shared_ptr<NodeMap>& nodeMap);
86 std::shared_ptr<NodeMap> m_nodeMap;
87 };
88
89 NodeMap() = delete;
90 ~NodeMap() = default;
91 NodeMap(const NodeMap& other) = delete;
92 NodeMap& operator=(const NodeMap& other) = delete;
93 NodeMap(NodeMap&& other) = delete;
94 NodeMap& operator=(NodeMap&& other) = delete;
95
105 bool HasNode(const std::string& name) const;
106
116 template <class NodeType, typename std::enable_if<std::is_base_of<nodes::Node, NodeType>::value, int>::type = 0>
117 bool HasNode(const std::string& name)
118 {
119 PEAK_NODE_HANDLE nodeHandle{ nullptr };
120 if (PEAK_C_ABI_PREFIX PEAK_NodeMap_FindNode(m_backendHandle, name.c_str(), name.size() + 1, &nodeHandle)
122 {
123 return false;
124 }
125
126 return std::dynamic_pointer_cast<NodeType>(FindNode(name)) != nullptr;
127 }
128
142 std::shared_ptr<nodes::Node> FindNode(const std::string& name);
143
158 template <class NodeType, typename std::enable_if<std::is_base_of<nodes::Node, NodeType>::value, int>::type = 0>
159 std::shared_ptr<NodeType> FindNode(const std::string& name)
160 {
161 auto castedNode = std::dynamic_pointer_cast<NodeType>(FindNode(name));
162 if (!castedNode)
163 {
164 throw InvalidCastException("Invalid node cast!");
165 }
166
167 return castedNode;
168 }
169
177 void InvalidateNodes();
178
188 void PollNodes(int64_t elapsedTime_ms);
189
199 std::vector<std::shared_ptr<nodes::Node>> Nodes() const;
200
211 bool HasBufferSupportedChunks(const std::shared_ptr<Buffer>& buffer) const;
212
226 void UpdateChunkNodes(const std::shared_ptr<Buffer>& buffer);
227
238 bool HasEventSupportedData(const std::unique_ptr<Event>& event) const;
239
253 void UpdateEventNodes(const std::unique_ptr<Event>& event);
254
268 void StoreToFile(const std::string& filePath) const;
269
283 void LoadFromFile(const std::string& filePath);
284
303 std::unique_ptr<ScopedNodeMapLock> Lock();
304
315 {
316 return m_backendHandle;
317 }
318
319private:
320 std::shared_ptr<nodes::Node> NodeFromHandle(PEAK_NODE_HANDLE nodeHandle) const;
321
322 friend ClassCreator<NodeMap>;
323 explicit NodeMap(PEAK_NODE_MAP_HANDLE nodeMapHandle);
324 PEAK_NODE_MAP_HANDLE m_backendHandle;
325
326 void Initialize() const override;
327 mutable std::vector<std::shared_ptr<nodes::Node>> m_nodes;
328 mutable std::unordered_map<std::string, std::shared_ptr<nodes::Node>> m_nodesByName;
329};
330
331} /* namespace core */
332} /* namespace peak */
333
344
345
346/* Implementation */
347namespace peak
348{
349namespace core
350{
351
352inline NodeMap::NodeMap(PEAK_NODE_MAP_HANDLE nodeMapHandle)
353 : m_backendHandle(nodeMapHandle)
354 , m_nodes()
355 , m_nodesByName()
356{}
357
358inline bool NodeMap::HasNode(const std::string& name) const
359{
360 return QueryNumericFromCInterfaceFunction<PEAK_BOOL8>([&](PEAK_BOOL8* hasNode) {
361 return PEAK_C_ABI_PREFIX PEAK_NodeMap_GetHasNode(m_backendHandle, name.c_str(), name.size() + 1, hasNode);
362 }) > 0;
363}
364
365inline std::shared_ptr<nodes::Node> NodeMap::FindNode(const std::string& name)
366{
367 InitializeIfNecessary();
368
369 (void)QueryNumericFromCInterfaceFunction<PEAK_NODE_HANDLE>([&](PEAK_NODE_HANDLE* nodeHandle) {
371 m_backendHandle, name.c_str(), name.size() + 1, nodeHandle);
372 });
373
374 return m_nodesByName.at(name);
375}
376
378{
379 CallAndCheckCInterfaceFunction(
380 [&] { return PEAK_C_ABI_PREFIX PEAK_NodeMap_InvalidateNodes(m_backendHandle); });
381}
382
383inline void NodeMap::PollNodes(int64_t elapsedTime_ms)
384{
385 CallAndCheckCInterfaceFunction(
386 [&] { return PEAK_C_ABI_PREFIX PEAK_NodeMap_PollNodes(m_backendHandle, elapsedTime_ms); });
387}
388
389inline std::vector<std::shared_ptr<nodes::Node>> NodeMap::Nodes() const
390{
391 InitializeIfNecessary();
392
393 return m_nodes;
394}
395
396inline bool NodeMap::HasEventSupportedData(const std::unique_ptr<Event>& event) const
397{
398 if (event == nullptr)
399 {
400 throw InvalidArgumentException("The given event is a nullptr!");
401 }
402
403 return QueryNumericFromCInterfaceFunction<PEAK_BOOL8>([&](PEAK_BOOL8* hasSupportedData) {
405 m_backendHandle, event->m_backendHandle, hasSupportedData);
406 }) > 0;
407}
408
409inline void NodeMap::UpdateEventNodes(const std::unique_ptr<Event>& event)
410{
411 if (event == nullptr)
412 {
413 throw InvalidArgumentException("The given event is a nullptr!");
414 }
415
416 CallAndCheckCInterfaceFunction(
417 [&] { return PEAK_C_ABI_PREFIX PEAK_NodeMap_UpdateEventNodes(m_backendHandle, event->m_backendHandle); });
418}
419
420inline void NodeMap::StoreToFile(const std::string& filePath) const
421{
422 CallAndCheckCInterfaceFunction([&] {
423 return PEAK_C_ABI_PREFIX PEAK_NodeMap_StoreToFile(m_backendHandle, filePath.c_str(), filePath.size() + 1);
424 });
425}
426
427inline void NodeMap::LoadFromFile(const std::string& filePath)
428{
429 InitializeIfNecessary();
430
431 CallAndCheckCInterfaceFunction([&] {
433 m_backendHandle, filePath.c_str(), filePath.size() + 1);
434 });
435}
436
437inline NodeMap::ScopedNodeMapLock::ScopedNodeMapLock(const std::shared_ptr<NodeMap>& nodeMap)
438 : m_nodeMap(nodeMap)
439{
440 CallAndCheckCInterfaceFunction(
441 [&] { return PEAK_C_ABI_PREFIX PEAK_NodeMap_Lock(m_nodeMap->m_backendHandle); });
442}
444{
445 CallAndCheckCInterfaceFunction(
446 [&] { return PEAK_C_ABI_PREFIX PEAK_NodeMap_Unlock(m_nodeMap->m_backendHandle); });
447}
448
449inline std::unique_ptr<NodeMap::ScopedNodeMapLock> NodeMap::Lock()
450{
451 return std::make_unique<ClassCreator<ScopedNodeMapLock>>(shared_from_this());
452}
453
454inline std::shared_ptr<nodes::Node> NodeMap::NodeFromHandle(PEAK_NODE_HANDLE nodeHandle) const
455{
456 auto nodeType = QueryNumericFromCInterfaceFunction<PEAK_NODE_TYPE>(
457 [&](PEAK_NODE_TYPE* _nodeType) { return PEAK_C_ABI_PREFIX PEAK_Node_GetType(nodeHandle, _nodeType); });
458
459 switch (nodeType)
460 {
462 auto integerNodeHandle = QueryNumericFromCInterfaceFunction<PEAK_INTEGER_NODE_HANDLE>(
463 [&](PEAK_INTEGER_NODE_HANDLE* _integerNodeHandle) {
464 return PEAK_C_ABI_PREFIX PEAK_Node_ToIntegerNode(nodeHandle, _integerNodeHandle);
465 });
466
467 return std::make_shared<ClassCreator<nodes::IntegerNode>>(
468 integerNodeHandle, std::const_pointer_cast<core::NodeMap>(shared_from_this()));
469 }
471 auto booleanNodeHandle = QueryNumericFromCInterfaceFunction<PEAK_BOOLEAN_NODE_HANDLE>(
472 [&](PEAK_BOOLEAN_NODE_HANDLE* _booleanNodeHandle) {
473 return PEAK_C_ABI_PREFIX PEAK_Node_ToBooleanNode(nodeHandle, _booleanNodeHandle);
474 });
475
476 return std::make_shared<ClassCreator<nodes::BooleanNode>>(
477 booleanNodeHandle, std::const_pointer_cast<core::NodeMap>(shared_from_this()));
478 }
480 auto commandNodeHandle = QueryNumericFromCInterfaceFunction<PEAK_COMMAND_NODE_HANDLE>(
481 [&](PEAK_COMMAND_NODE_HANDLE* _commandNodeHandle) {
482 return PEAK_C_ABI_PREFIX PEAK_Node_ToCommandNode(nodeHandle, _commandNodeHandle);
483 });
484
485 return std::make_shared<ClassCreator<nodes::CommandNode>>(
486 commandNodeHandle, std::const_pointer_cast<core::NodeMap>(shared_from_this()));
487 }
489 auto floatNodeHandle = QueryNumericFromCInterfaceFunction<PEAK_FLOAT_NODE_HANDLE>(
490 [&](PEAK_FLOAT_NODE_HANDLE* _floatNodeHandle) {
491 return PEAK_C_ABI_PREFIX PEAK_Node_ToFloatNode(nodeHandle, _floatNodeHandle);
492 });
493
494 return std::make_shared<ClassCreator<nodes::FloatNode>>(
495 floatNodeHandle, std::const_pointer_cast<core::NodeMap>(shared_from_this()));
496 }
498 auto stringNodeHandle = QueryNumericFromCInterfaceFunction<PEAK_STRING_NODE_HANDLE>(
499 [&](PEAK_STRING_NODE_HANDLE* _stringNodeHandle) {
500 return PEAK_C_ABI_PREFIX PEAK_Node_ToStringNode(nodeHandle, _stringNodeHandle);
501 });
502
503 return std::make_shared<ClassCreator<nodes::StringNode>>(
504 stringNodeHandle, std::const_pointer_cast<core::NodeMap>(shared_from_this()));
505 }
507 auto registerNodeHandle = QueryNumericFromCInterfaceFunction<PEAK_REGISTER_NODE_HANDLE>(
508 [&](PEAK_REGISTER_NODE_HANDLE* _registerNodeHandle) {
509 return PEAK_C_ABI_PREFIX PEAK_Node_ToRegisterNode(nodeHandle, _registerNodeHandle);
510 });
511
512 return std::make_shared<ClassCreator<nodes::RegisterNode>>(
513 registerNodeHandle, std::const_pointer_cast<core::NodeMap>(shared_from_this()));
514 }
516 auto categoryNodeHandle = QueryNumericFromCInterfaceFunction<PEAK_CATEGORY_NODE_HANDLE>(
517 [&](PEAK_CATEGORY_NODE_HANDLE* _categoryNodeHandle) {
518 return PEAK_C_ABI_PREFIX PEAK_Node_ToCategoryNode(nodeHandle, _categoryNodeHandle);
519 });
520
521 return std::make_shared<ClassCreator<nodes::CategoryNode>>(
522 categoryNodeHandle, std::const_pointer_cast<core::NodeMap>(shared_from_this()));
523 }
525 auto enumerationNodeHandle = QueryNumericFromCInterfaceFunction<PEAK_ENUMERATION_NODE_HANDLE>(
526 [&](PEAK_ENUMERATION_NODE_HANDLE* _enumerationNodeHandle) {
527 return PEAK_C_ABI_PREFIX PEAK_Node_ToEnumerationNode(nodeHandle, _enumerationNodeHandle);
528 });
529
530 return std::make_shared<ClassCreator<nodes::EnumerationNode>>(
531 enumerationNodeHandle, std::const_pointer_cast<core::NodeMap>(shared_from_this()));
532 }
534 auto enumerationEntryNodeHandle = QueryNumericFromCInterfaceFunction<PEAK_ENUMERATION_ENTRY_NODE_HANDLE>(
535 [&](PEAK_ENUMERATION_ENTRY_NODE_HANDLE* _enumerationEntryNodeHandle) {
537 nodeHandle, _enumerationEntryNodeHandle);
538 });
539
540 return std::make_shared<ClassCreator<nodes::EnumerationEntryNode>>(
541 enumerationEntryNodeHandle, std::const_pointer_cast<core::NodeMap>(shared_from_this()));
542 }
543 default: {
544 return std::make_shared<ClassCreator<nodes::Node>>(
545 nodeHandle, std::const_pointer_cast<core::NodeMap>(shared_from_this()));
546 }
547 }
548}
549
550inline void NodeMap::Initialize() const
551{
552 auto numNodes = QueryNumericFromCInterfaceFunction<size_t>([&](size_t* _numNodes) {
553 return PEAK_C_ABI_PREFIX PEAK_NodeMap_GetNumNodes(m_backendHandle, _numNodes);
554 });
555
556 for (size_t x = 0; x < numNodes; ++x)
557 {
558 auto nodeHandle = QueryNumericFromCInterfaceFunction<PEAK_NODE_HANDLE>(
559 [&](PEAK_NODE_HANDLE* _nodeHandle) {
560 return PEAK_C_ABI_PREFIX PEAK_NodeMap_GetNode(m_backendHandle, x, _nodeHandle);
561 });
562
563 auto node = NodeFromHandle(nodeHandle);
564
565 m_nodes.emplace_back(node);
566 m_nodesByName.emplace(node->Name(), node);
567 }
568}
569
570} /* namespace core */
571} /* namespace peak */
The exception thrown for passing an invalid argument to a function.
Definition peak_exception.hpp:74
The exception thrown for trying to apply an invalid cast.
Definition peak_exception.hpp:82
Holds a recursive lock on the NodeMap.
Definition peak_node_map.hpp:73
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:443
Represents a GenAPI node map.
Definition peak_node_map.hpp:62
PEAK_NODE_MAP_HANDLE Handle() const
Get the backend handle.
Definition peak_node_map.hpp:314
std::shared_ptr< nodes::Node > FindNode(const std::string &name)
Tries to find a node with the given name.
Definition peak_node_map.hpp:365
bool HasNode(const std::string &name) const
Checks whether the node map contains a node with the given name.
Definition peak_node_map.hpp:358
bool HasEventSupportedData(const std::unique_ptr< Event > &event) const
Checks if the Event contains data corresponding to the NodeMap.
Definition peak_node_map.hpp:396
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:420
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:117
NodeMap & operator=(const NodeMap &other)=delete
std::unique_ptr< ScopedNodeMapLock > Lock()
Locks a recursive mutex on the NodeMap.
Definition peak_node_map.hpp:449
NodeMap(const NodeMap &other)=delete
void PollNodes(int64_t elapsedTime_ms)
Polls all nodes having a polling time.
Definition peak_node_map.hpp:383
std::vector< std::shared_ptr< nodes::Node > > Nodes() const
Returns the nodes.
Definition peak_node_map.hpp:389
std::function< bool(const std::shared_ptr< const nodes::Node > &nodeToFilter)> NodeFilterFunction
Definition peak_node_map.hpp:65
void UpdateChunkNodes(const std::shared_ptr< Buffer > &buffer)
Updates chunk information in the NodeMap.
Definition peak_buffer.hpp:915
void InvalidateNodes()
Invalidates all nodes.
Definition peak_node_map.hpp:377
std::shared_ptr< NodeType > FindNode(const std::string &name)
Tries to find a node with the given name and type.
Definition peak_node_map.hpp:159
NodeMap(NodeMap &&other)=delete
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:427
bool HasBufferSupportedChunks(const std::shared_ptr< Buffer > &buffer) const
Checks if the Buffer contains chunks corresponding to the NodeMap.
Definition peak_buffer.hpp:902
NodeMap & operator=(NodeMap &&other)=delete
void UpdateEventNodes(const std::unique_ptr< Event > &event)
Updates event information in the NodeMap.
Definition peak_node_map.hpp:409
The "peak" namespace directly contains convenience functionality like the DeviceManager as well as th...
Definition peak_dynamic_loader.h:33
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:270
@ PEAK_NODE_TYPE_FLOAT
Definition peak_backend.h:272
@ PEAK_NODE_TYPE_COMMAND
Definition peak_backend.h:271
@ PEAK_NODE_TYPE_CATEGORY
Definition peak_backend.h:275
@ PEAK_NODE_TYPE_ENUMERATION_ENTRY
Definition peak_backend.h:277
@ PEAK_NODE_TYPE_ENUMERATION
Definition peak_backend.h:276
@ PEAK_NODE_TYPE_STRING
Definition peak_backend.h:273
@ PEAK_NODE_TYPE_INTEGER
Definition peak_backend.h:269
@ PEAK_NODE_TYPE_REGISTER
Definition peak_backend.h:274
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:444
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:424
struct PEAK_STRING_NODE * PEAK_STRING_NODE_HANDLE
Definition peak_backend.h:432
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:412
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:279
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:428
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:26
struct PEAK_NODE_MAP * PEAK_NODE_MAP_HANDLE
Definition peak_backend.h:408
struct PEAK_ENUMERATION_ENTRY_NODE * PEAK_ENUMERATION_ENTRY_NODE_HANDLE
Definition peak_backend.h:448
struct PEAK_CATEGORY_NODE * PEAK_CATEGORY_NODE_HANDLE
Definition peak_backend.h:440
struct PEAK_REGISTER_NODE * PEAK_REGISTER_NODE_HANDLE
Definition peak_backend.h:436
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:317
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:420
struct PEAK_INTEGER_NODE * PEAK_INTEGER_NODE_HANDLE
Definition peak_backend.h:416
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...
#define PEAK_C_ABI_PREFIX
Definition peak_dll_defines.h:16