nndeploy C++ API  0.2.0
nndeploy C++ API
loop.h
Go to the documentation of this file.
1 
2 #ifndef _NNDEPLOY_DAG_LOOP_H_
3 #define _NNDEPLOY_DAG_LOOP_H_
4 
5 #include "nndeploy/base/any.h"
6 #include "nndeploy/base/common.h"
8 #include "nndeploy/base/log.h"
9 #include "nndeploy/base/macro.h"
10 #include "nndeploy/base/object.h"
11 #include "nndeploy/base/status.h"
12 #include "nndeploy/base/string.h"
13 #include "nndeploy/dag/edge.h"
14 #include "nndeploy/dag/graph.h"
15 #include "nndeploy/dag/node.h"
16 #include "nndeploy/dag/util.h"
17 #include "nndeploy/device/buffer.h"
18 #include "nndeploy/device/device.h"
20 #include "nndeploy/device/tensor.h"
21 
22 namespace nndeploy {
23 namespace dag {
24 
25 class NNDEPLOY_CC_API Loop : public Graph {
26  public:
27  Loop(const std::string& name);
28  Loop(const std::string& name, std::vector<dag::Edge*> inputs,
29  std::vector<dag::Edge*> outputs);
30  virtual ~Loop();
31 
34  virtual base::Status init();
35  virtual base::Status deinit();
36 
37  virtual int loops() = 0;
40  virtual base::Status run();
41 
42  protected:
44 };
45 
46 // 固定次数的loop
47 class NNDEPLOY_CC_API FixedLoop : public Loop {
48  public:
49  FixedLoop(const std::string& name);
50  FixedLoop(const std::string& name, std::vector<dag::Edge*> inputs,
51  std::vector<dag::Edge*> outputs);
52  virtual ~FixedLoop();
53 
54  virtual int loops() override;
55 
56  virtual void setLoops(int loops);
57 
60  rapidjson::Value& json,
61  rapidjson::Document::AllocatorType& allocator) override;
63  virtual base::Status deserialize(rapidjson::Value& json) override;
64 
65  protected:
66  int loops_ = 0;
67 };
68 
69 } // namespace dag
70 } // namespace nndeploy
71 
72 #endif /* _NNDEPLOY_DAG_LOOP_H_ */
virtual base::Status deserialize(rapidjson::Value &json) override
Deserialize from JSON.
FixedLoop(const std::string &name, std::vector< dag::Edge * > inputs, std::vector< dag::Edge * > outputs)
FixedLoop(const std::string &name)
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) override
Serialize to JSON.
virtual int loops() override
virtual void setLoops(int loops)
Directed Acyclic Graph Node.
Definition: graph.h:31
virtual base::Status initEnd()
Definition: loop.h:33
virtual base::Status initStart()
Definition: loop.h:32
virtual int loops()=0
virtual base::Status iterBefore()
Definition: loop.h:38
Loop(const std::string &name, std::vector< dag::Edge * > inputs, std::vector< dag::Edge * > outputs)
virtual base::Status init()
Initialize graph.
Loop(const std::string &name)
virtual base::Status iterAfter()
Definition: loop.h:39
virtual base::Status executor()
Execute graph.
virtual base::Status run()
Run graph.
virtual base::Status deinit()
Deinitialize graph.
virtual std::string serialize()
Serialize to JSON string.
virtual base::Status deserialize(rapidjson::Value &json)
Deserialize from JSON.
#define NNDEPLOY_CC_API
api
Definition: macro.h:29
@ kStatusCodeOk
Definition: status.h:13