1 #ifndef _NNDEPLOY_DAG_UTIL_H_
2 #define _NNDEPLOY_DAG_UTIL_H_
37 std::vector<EdgeWrapper *> &edge_repository,
const std::string &edge_name);
39 std::vector<EdgeWrapper *> &edge_repository,
const std::string &edge_name);
41 std::vector<EdgeWrapper *> &edge_repository,
Edge *edge);
43 std::vector<EdgeWrapper *> &edge_repository);
45 std::vector<EdgeWrapper *> &edge_repository);
48 std::vector<NodeWrapper *> &node_repository,
const std::string &node_name);
50 std::vector<NodeWrapper *> &node_repository,
const std::string &node_name);
52 std::vector<NodeWrapper *> &node_repository,
Node *node);
54 std::vector<NodeWrapper *> &node_repository);
56 std::vector<NodeWrapper *> &node_repository);
62 std::vector<EdgeWrapper *> &edge_repository,
63 std::vector<NodeWrapper *> &node_repository,
64 std::vector<Edge *> &graph_inputs, std::vector<Edge *> &graph_outputs,
65 const std::string &name, std::ostream &oss);
68 std::vector<NodeWrapper *> &node_repository);
70 std::vector<NodeWrapper *> &node_repository,
71 std::vector<EdgeWrapper *> &edge_repository);
74 std::vector<NodeWrapper *> &node_repository,
75 std::vector<NodeWrapper *> &topo_sort_node);
78 std::vector<NodeWrapper *> &node_repository,
79 std::vector<NodeWrapper *> &topo_sort_node);
82 std::vector<NodeWrapper *> &node_repository,
84 std::vector<NodeWrapper *> &topo_sort_node);
87 const std::vector<Edge *> &dst_edges);
97 if (std::find(vec.begin(), vec.end(), val) == vec.end()) {
98 vec.emplace_back(val);
103 std::vector<Node *> &consumers);
106 std::vector<Node *> &producers);
114 std::map<std::string, std::map<std::string, std::string>> node_value_map,
115 const std::string &json_str);
117 std::map<std::string, std::map<std::string, std::string>> node_value_map,
118 rapidjson::Value &json,
119 rapidjson::Document::AllocatorType &allocator);
std::vector< NodeWrapper * > producers_
std::vector< NodeWrapper * > consumers_
Edge class in DAG graph for connecting nodes and transferring data.
std::vector< NodeWrapper * > predecessors_
std::vector< NodeWrapper * > successors_
#define NNDEPLOY_CC_API
api
base::Status setColor(std::vector< NodeWrapper * > &node_repository, base::NodeColorType color)
base::Status topoSortBFS(std::vector< NodeWrapper * > &node_repository, std::vector< NodeWrapper * > &topo_sort_node)
std::vector< EdgeWrapper * > findStartEdges(std::vector< EdgeWrapper * > &edge_repository)
std::string replaceGraphJsonStr(std::map< std::string, std::map< std::string, std::string >> node_value_map, const std::string &json_str)
Node * getNode(std::vector< NodeWrapper * > &node_repository, const std::string &node_name)
std::vector< NodeWrapper * > findEndNodes(std::vector< NodeWrapper * > &node_repository)
base::Status topoSort(std::vector< NodeWrapper * > &node_repository, base::TopoSortType topo_sort_type, std::vector< NodeWrapper * > &topo_sort_node)
std::vector< NodeWrapper * > findStartNodes(std::vector< NodeWrapper * > &node_repository)
void insertUnique(std::vector< T > &vec, const T &val)
对vector插入不在vector中的元素,即类似集合的作用
void replaceGraphJsonObj(std::map< std::string, std::map< std::string, std::string >> node_value_map, rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator)
std::vector< NodeWrapper * > checkUnuseNode(std::vector< NodeWrapper * > &node_repository)
EdgeWrapper * findEdgeWrapper(std::vector< EdgeWrapper * > &edge_repository, const std::string &edge_name)
bool checkEdge(const std::vector< Edge * > &src_edges, const std::vector< Edge * > &dst_edges)
base::Status topoSortDFS(std::vector< NodeWrapper * > &node_repository, std::vector< NodeWrapper * > &topo_sort_node)
void findProducerNode(EdgeWrapper *edge_wrapper, std::vector< Node * > &producers)
NodeWrapper * findNodeWrapper(std::vector< NodeWrapper * > &node_repository, const std::string &node_name)
void findConsumerNode(EdgeWrapper *edge_wrapper, std::vector< Node * > &consumers)
std::vector< EdgeWrapper * > checkUnuseEdge(std::vector< NodeWrapper * > &node_repository, std::vector< EdgeWrapper * > &edge_repository)
Edge * getEdge(std::vector< EdgeWrapper * > &edge_repository, const std::string &edge_name)
base::Status dumpDag(std::vector< EdgeWrapper * > &edge_repository, std::vector< NodeWrapper * > &node_repository, std::vector< Edge * > &graph_inputs, std::vector< Edge * > &graph_outputs, const std::string &name, std::ostream &oss)
std::vector< EdgeWrapper * > findEndEdges(std::vector< EdgeWrapper * > &edge_repository)