nndeploy C++ API  0.2.0
nndeploy C++ API
param.h
Go to the documentation of this file.
1 #ifndef _NNDEPLOY_BASE_PARAM_H_
2 #define _NNDEPLOY_BASE_PARAM_H_
3 
4 #include "nndeploy/base/any.h"
5 #include "nndeploy/base/common.h"
7 #include "nndeploy/base/log.h"
8 #include "nndeploy/base/macro.h"
10 #include "nndeploy/base/status.h"
11 #include "nndeploy/base/string.h"
12 
13 namespace nndeploy {
14 namespace base {
15 
16 #define PARAM_COPY(param_type) \
17  public: \
18  virtual std::shared_ptr<nndeploy::base::Param> copy() { \
19  std::shared_ptr<nndeploy::base::Param> param(new param_type()); \
20  param_type *param_ptr = dynamic_cast<param_type *>(param.get()); \
21  *param_ptr = *this; \
22  return param; \
23  }
24 
25 #define PARAM_COPY_TO(param_type) \
26  public: \
27  virtual nndeploy::base::Status copyTo(nndeploy::base::Param *param) { \
28  param_type *param_ptr = dynamic_cast<param_type *>(param); \
29  if (nullptr == param_ptr) { \
30  NNDEPLOY_LOGE("dynamic cast to %s failed\n", #param_type); \
31  return nndeploy::base::kStatusCodeErrorInvalidParam; \
32  } \
33  *param_ptr = *this; \
34  return nndeploy::base::kStatusCodeOk; \
35  }
36 
38  public:
39  Param();
40  virtual ~Param();
41 
44 
45  virtual base::Status set(const std::string &key, base::Any &any);
46 
47  virtual base::Status get(const std::string &key, base::Any &any);
48 
49  base::Status setRequiredParams(
50  const std::vector<std::string> &required_params);
51  base::Status addRequiredParam(const std::string &required_param);
52  base::Status removeRequiredParam(const std::string &required_param);
53  base::Status clearRequiredParams();
54  std::vector<std::string> getRequiredParams();
55 
56  base::Status setUiParams(const std::vector<std::string> &ui_params);
57  base::Status addUiParam(const std::string &ui_param);
58  base::Status removeUiParam(const std::string &ui_param);
59  base::Status clearUiParams();
60  std::vector<std::string> getUiParams();
61 
62  base::Status setIoParams(const std::vector<std::string> &io_params);
63  base::Status addIoParam(const std::string &io_param);
64  base::Status removeIoParam(const std::string &io_param);
65  base::Status clearIoParams();
66  std::vector<std::string> getIoParams();
67 
68  base::Status setDropdownParams(
69  const std::map<std::string, std::vector<std::string>> &dropdown_params);
70  base::Status addDropdownParam(
71  const std::string &dropdown_param,
72  const std::vector<std::string> &dropdown_values);
73  base::Status removeDropdownParam(const std::string &dropdown_param);
74  base::Status clearDropdownParams();
75  std::map<std::string, std::vector<std::string>> getDropdownParams();
76 
77  // 序列化:数据结构->[rapidjson::Value\string\path]
78  // 衍生类只需实现serialize(rapidjson::Value &json,
79  // rapidjson::Document::AllocatorType& allocator)
80  virtual base::Status serialize(rapidjson::Value &json,
81  rapidjson::Document::AllocatorType &allocator);
82  virtual std::string serialize();
83  virtual base::Status saveFile(const std::string &path);
84  // 反序列化:[rapidjson::Value\string\path]->数据结构
85  // 衍生类只需实现deserialize(rapidjson::Value &json)
86  virtual base::Status deserialize(rapidjson::Value &json);
87  virtual base::Status deserialize(const std::string &json_str);
88  virtual base::Status loadFile(const std::string &path);
89 
90  public:
91  std::vector<std::string> required_params_;
92  std::vector<std::string> ui_params_;
93  std::vector<std::string> io_params_;
94  std::map<std::string, std::vector<std::string>> dropdown_params_;
95 };
96 
98  const std::string &json_str);
99 
100 extern NNDEPLOY_CC_API std::string prettyJsonStr(const std::string &json_str);
101 
102 } // namespace base
103 } // namespace nndeploy
104 
105 #endif /* _NNDEPLOY_BASE_PARAM_H_ */
#define NNDEPLOY_CC_API
api
Definition: macro.h:29
std::string removeJsonBrackets(const std::string &json_str)
std::string prettyJsonStr(const std::string &json_str)
Graph * loadFile(const std::string &path)
base::Status serialize(Graph *graph, rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator)
Graph * deserialize(rapidjson::Value &json)
base::Status saveFile(Graph *graph, const std::string &path)
#define PARAM_COPY_TO(param_type)
Definition: param.h:25
#define PARAM_COPY(param_type)
Definition: param.h:16