121#include "modules/perception/common/proto/perception_config_schema.pb.h"
124namespace perception {
142 size_t NumModels()
const {
return model_config_map_.size(); }
144 const std::string &
work_root()
const {
return work_root_; }
152 std::map<std::string, ModelConfig *> model_config_map_;
154 bool inited_ =
false;
155 std::string work_root_;
167 std::string
name()
const {
return name_; }
170 return get_value_from_map<int>(
name, integer_param_map_, value);
174 return get_value_from_map<std::string>(
name, string_param_map_, value);
178 return get_value_from_map<double>(
name, double_param_map_, value);
182 return get_value_from_map<float>(
name, float_param_map_, value);
186 return get_value_from_map<bool>(
name, bool_param_map_, value);
190 return get_value_from_map<std::vector<int>>(
name, array_integer_param_map_,
194 bool get_value(
const std::string &
name, std::vector<double> *values)
const {
195 return get_value_from_map<std::vector<double>>(
196 name, array_double_param_map_, values);
200 return get_value_from_map<std::vector<float>>(
name, array_float_param_map_,
205 std::vector<std::string> *values)
const {
206 return get_value_from_map<std::vector<std::string>>(
207 name, array_string_param_map_, values);
211 return get_value_from_map<std::vector<bool>>(
name, array_bool_param_map_,
219 template <
typename T>
220 bool get_value_from_map(
const std::string &
name,
221 const std::map<std::string, T> &container,
224 template <
typename T>
225 void RepeatedToVector(
226 const google::protobuf::RepeatedField<T> &repeated_values,
227 std::vector<T> *vec_values);
230 std::string version_;
232 std::map<std::string, int> integer_param_map_;
233 std::map<std::string, std::string> string_param_map_;
234 std::map<std::string, double> double_param_map_;
235 std::map<std::string, float> float_param_map_;
236 std::map<std::string, bool> bool_param_map_;
237 std::map<std::string, std::vector<int>> array_integer_param_map_;
238 std::map<std::string, std::vector<std::string>> array_string_param_map_;
239 std::map<std::string, std::vector<double>> array_double_param_map_;
240 std::map<std::string, std::vector<float>> array_float_param_map_;
241 std::map<std::string, std::vector<bool>> array_bool_param_map_;
245bool ModelConfig::get_value_from_map(
const std::string &name,
246 const std::map<std::string, T> &container,
248 typename std::map<std::string, T>::const_iterator citer =
249 container.find(
name);
251 if (citer == container.end()) {
255 *value = citer->second;
260void ModelConfig::RepeatedToVector(
261 const google::protobuf::RepeatedField<T> &repeated_values,
262 std::vector<T> *vec_list) {
263 vec_list->reserve(repeated_values.size());
264 for (T value : repeated_values) {
265 vec_list->push_back(value);
272 : error_info_(error_info) {}
273 std::string
What()
const {
return error_info_; }
276 std::string error_info_;
285 std::stringstream ss;
286 ss <<
"Config name:" << config.
name() <<
" read failed. "
287 <<
"type:" <<
typeid(T).name() <<
" name:" << name;
298 const std::string &name) {
301 std::stringstream ss;
302 ss <<
"Config name:" << config.
name() <<
" read failed. "
303 <<
"type:vector<" <<
typeid(T).name() <<
"> name:" << name;
306 return std::move(ret);
ConfigManagerError(const std::string &error_info)
void set_work_root(const std::string &work_root)
const std::string & work_root() const
bool GetModelConfig(const std::string &model_name, const ModelConfig **model_config)
static std::vector< T > Read(const ModelConfig &config, const std::string &name)
static T Read(const ModelConfig &config, const std::string &name)
bool get_value(const std::string &name, std::vector< int > *values) const
bool get_value(const std::string &name, bool *value) const
bool get_value(const std::string &name, std::vector< double > *values) const
bool get_value(const std::string &name, float *value) const
ModelConfig operator=(const ModelConfig &)=delete
bool get_value(const std::string &name, std::vector< float > *values) const
bool get_value(const std::string &name, int *value) const
bool get_value(const std::string &name, std::string *value) const
ModelConfig(const ModelConfig &)=delete
bool get_value(const std::string &name, std::vector< std::string > *values) const
bool get_value(const std::string &name, double *value) const
bool Reset(const apollo::perception::ModelConfigProto &proto)
bool get_value(const std::string &name, std::vector< bool > *values) const
#define DECLARE_SINGLETON(classname)