1515// Map of python node classes and call to pipeline to create it
1616extern std::vector<std::pair<py::handle, std::function<std::shared_ptr<dai::Node>(dai::Pipeline&, py::object class_)>>> pyNodeCreateMap;
1717extern py::handle daiNodeModule;
18+ extern py::handle daiNodeInternalModule;
1819
1920template <typename T, typename DERIVED = dai::DeviceNode>
2021py::class_<T, DERIVED, std::shared_ptr<T>> addNode (const char * name, const char * docstring = nullptr ) {
@@ -23,6 +24,13 @@ py::class_<T, DERIVED, std::shared_ptr<T>> addNode(const char* name, const char*
2324 return node;
2425}
2526
27+ template <typename T, typename DERIVED = dai::DeviceNode>
28+ py::class_<T, DERIVED, std::shared_ptr<T>> addNodeInternal (const char * name, const char * docstring = nullptr ) {
29+ auto node = py::class_<T, DERIVED, std::shared_ptr<T>>(daiNodeInternalModule, name, docstring);
30+ pyNodeCreateMap.push_back (std::make_pair (node, [](dai::Pipeline& p, py::object class_) { return p.create <T>(); }));
31+ return node;
32+ }
33+
2634template <typename T, typename DERIVED = dai::DeviceNode>
2735py::class_<T, DERIVED, std::shared_ptr<T>> addNodeAbstract (const char * name, const char * docstring = nullptr ) {
2836 auto node = py::class_<T, DERIVED, std::shared_ptr<T>>(daiNodeModule, name, docstring);
@@ -36,7 +44,8 @@ py::class_<T, DERIVED, std::shared_ptr<T>> addNodeAbstract(const char* name, con
3644// Macro helpers
3745#define ADD_NODE (NodeName ) addNode<NodeName>(#NodeName, DOC(dai, node, NodeName))
3846#define ADD_NODE_DERIVED (NodeName, Derived ) addNode<NodeName, Derived>(#NodeName, DOC(dai, node, NodeName))
47+ #define ADD_NODE_INTERNAL (NodeName ) addNodeInternal<NodeName>(#NodeName, DOC(dai, node, internal, NodeName))
3948#define ADD_NODE_ABSTRACT (NodeName ) addNodeAbstract<NodeName>(#NodeName, DOC(dai, node, NodeName))
4049#define ADD_NODE_DERIVED_ABSTRACT (NodeName, Derived ) addNodeAbstract<NodeName, Derived>(#NodeName, DOC(dai, node, NodeName))
4150#define ADD_NODE_DOC (NodeName, docstring ) addNode<NodeName>(#NodeName, docstring)
42- #define ADD_NODE_DERIVED_DOC (NodeName, Derived, docstring ) addNode<NodeName, Derived>(#NodeName, docstring)
51+ #define ADD_NODE_DERIVED_DOC (NodeName, Derived, docstring ) addNode<NodeName, Derived>(#NodeName, docstring)
0 commit comments