Apollo 10.0
自动驾驶开放平台
apollo::cyber::Parameter类 参考

A Parameter holds an apollo::cyber::proto::Param, It's more human-readable, you can use basic-value type and Protobuf values to construct a paramter. 更多...

#include <parameter.h>

apollo::cyber::Parameter 的协作图:

Public 成员函数

 Parameter ()
 Empty constructor
 
 Parameter (const Parameter &parameter)
 copy constructor
 
 Parameter (const std::string &name)
 construct with paramter's name
 
 Parameter (const std::string &name, const bool bool_value)
 construct with paramter's name and bool value type
 
 Parameter (const std::string &name, const int int_value)
 construct with paramter's name and int value type
 
 Parameter (const std::string &name, const int64_t int_value)
 construct with paramter's name and int value type
 
 Parameter (const std::string &name, const float float_value)
 construct with paramter's name and float value type
 
 Parameter (const std::string &name, const double double_value)
 construct with paramter's name and double value type
 
 Parameter (const std::string &name, const std::string &string_value)
 construct with paramter's name and string value type
 
 Parameter (const std::string &name, const char *string_value)
 construct with paramter's name and char* value type
 
 Parameter (const std::string &name, const std::string &msg_str, const std::string &full_name, const std::string &proto_desc)
 use a protobuf type value to construct the parameter
 
 Parameter (const std::string &name, const google::protobuf::Message &msg)
 use a google::protobuf::Message type value to construct the parameter
 
void FromProtoParam (const Param &param)
 Parse a cyber::proto::Param object to cyber::parameter::Parameter object
 
Param ToProtoParam () const
 Parse a cyber::parameter::Parameter object to cyber::proto::Param object
 
ParamType Type () const
 Get the cyber:parameter::ParamType of this object
 
std::string TypeName () const
 Get Paramter's type name, i.e.
 
std::string Descriptor () const
 Get Paramter's descriptor, only work on protobuf types
 
const std::string Name () const
 Get the Parameter name
 
bool AsBool () const
 Get Paramter as a bool value
 
int64_t AsInt64 () const
 Get Paramter as an int64_t value
 
double AsDouble () const
 et Paramter as a double value
 
const std::string AsString () const
 Get Paramter as a string value
 
std::string DebugString () const
 show debug string
 
template<typename ValueType >
std::enable_if< std::is_base_of< google::protobuf::Message, ValueType >::value, ValueType >::type value () const
 
template<typename ValueType >
std::enable_if< std::is_integral< ValueType >::value &&!std::is_same< ValueType, bool >::value, ValueType >::type value () const
 
template<typename ValueType >
std::enable_if< std::is_floating_point< ValueType >::value, ValueType >::type value () const
 
template<typename ValueType >
std::enable_if< std::is_convertible< ValueType, std::string >::value, conststd::string & >::type value () const
 
template<typename ValueType >
std::enable_if< std::is_same< ValueType, bool >::value, bool >::type value () const
 Translate paramter value to bool type
 

详细描述

A Parameter holds an apollo::cyber::proto::Param, It's more human-readable, you can use basic-value type and Protobuf values to construct a paramter.

Parameter is identified by their name, and you can get Parameter content by call value()

在文件 parameter.h42 行定义.

构造及析构函数说明

◆ Parameter() [1/12]

apollo::cyber::Parameter::Parameter ( )

Empty constructor

在文件 parameter.cc26 行定义.

26 {
27 param_.set_name("");
28 param_.set_type(ParamType::NOT_SET);
29}

◆ Parameter() [2/12]

apollo::cyber::Parameter::Parameter ( const Parameter parameter)
explicit

copy constructor

在文件 parameter.cc36 行定义.

36 {
37 param_.CopyFrom(parameter.param_);
38}

◆ Parameter() [3/12]

apollo::cyber::Parameter::Parameter ( const std::string &  name)
explicit

construct with paramter's name

参数
nameParameter name

在文件 parameter.cc31 行定义.

31 {
32 param_.set_name(name);
33 param_.set_type(proto::ParamType::NOT_SET);
34}

◆ Parameter() [4/12]

apollo::cyber::Parameter::Parameter ( const std::string &  name,
const bool  bool_value 
)

construct with paramter's name and bool value type

参数
nameParameter name
bool_valuebool value

在文件 parameter.cc40 行定义.

40 {
41 param_.set_name(name);
42 param_.set_bool_value(bool_value);
43 param_.set_type(ParamType::BOOL);
44 param_.set_type_name("BOOL");
45}

◆ Parameter() [5/12]

apollo::cyber::Parameter::Parameter ( const std::string &  name,
const int  int_value 
)

construct with paramter's name and int value type

参数
nameParameter name
int_valueint value

在文件 parameter.cc47 行定义.

47 {
48 param_.set_name(name);
49 param_.set_int_value(int_value);
50 param_.set_type(ParamType::INT);
51 param_.set_type_name("INT");
52}

◆ Parameter() [6/12]

apollo::cyber::Parameter::Parameter ( const std::string &  name,
const int64_t  int_value 
)

construct with paramter's name and int value type

参数
nameParameter name
int_valueint value

在文件 parameter.cc54 行定义.

54 {
55 param_.set_name(name);
56 param_.set_int_value(int_value);
57 param_.set_type(ParamType::INT);
58 param_.set_type_name("INT");
59}

◆ Parameter() [7/12]

apollo::cyber::Parameter::Parameter ( const std::string &  name,
const float  float_value 
)

construct with paramter's name and float value type

参数
nameParameter name
float_valuefloat value

在文件 parameter.cc61 行定义.

61 {
62 param_.set_name(name);
63 param_.set_double_value(double_value);
64 param_.set_type(ParamType::DOUBLE);
65 param_.set_type_name("DOUBLE");
66}

◆ Parameter() [8/12]

apollo::cyber::Parameter::Parameter ( const std::string &  name,
const double  double_value 
)

construct with paramter's name and double value type

参数
nameParameter name
double_valuedouble value

在文件 parameter.cc68 行定义.

68 {
69 param_.set_name(name);
70 param_.set_double_value(double_value);
71 param_.set_type(ParamType::DOUBLE);
72 param_.set_type_name("DOUBLE");
73}

◆ Parameter() [9/12]

apollo::cyber::Parameter::Parameter ( const std::string &  name,
const std::string &  string_value 
)

construct with paramter's name and string value type

参数
nameParameter name
string_valuestring value

在文件 parameter.cc75 行定义.

75 {
76 param_.set_name(name);
77 param_.set_string_value(string_value);
78 param_.set_type(ParamType::STRING);
79 param_.set_type_name("STRING");
80}

◆ Parameter() [10/12]

apollo::cyber::Parameter::Parameter ( const std::string &  name,
const char *  string_value 
)

construct with paramter's name and char* value type

参数
nameParameter name
string_valuechar* value

在文件 parameter.cc82 行定义.

82 {
83 param_.set_name(name);
84 param_.set_string_value(string_value);
85 param_.set_type(ParamType::STRING);
86 param_.set_type_name("STRING");
87}

◆ Parameter() [11/12]

apollo::cyber::Parameter::Parameter ( const std::string &  name,
const std::string &  msg_str,
const std::string &  full_name,
const std::string &  proto_desc 
)

use a protobuf type value to construct the parameter

参数
nameParameter name
msg_strprotobuf contents
full_namethe proto full name
proto_descthe proto's description

在文件 parameter.cc89 行定义.

91 {
92 param_.set_name(name);
93 param_.set_string_value(msg_str);
94 param_.set_type(ParamType::PROTOBUF);
95 param_.set_type_name(full_name);
96 param_.set_proto_desc(proto_desc);
97}

◆ Parameter() [12/12]

apollo::cyber::Parameter::Parameter ( const std::string &  name,
const google::protobuf::Message &  msg 
)

use a google::protobuf::Message type value to construct the parameter

参数
nameParameter name
msgprotobuf message

在文件 parameter.cc99 行定义.

100 {
101 param_.set_name(name);
102 std::string str;
103 msg.SerializeToString(&str);
104 std::string desc;
106 param_.set_string_value(str);
107 param_.set_type(ParamType::PROTOBUF);
108 param_.set_type_name(msg.GetDescriptor()->full_name());
109 param_.set_proto_desc(desc);
110}
static void GetDescriptorString(const google::protobuf::Message &message, std::string *desc_str)

成员函数说明

◆ AsBool()

bool apollo::cyber::Parameter::AsBool ( ) const
inline

Get Paramter as a bool value

返回
true result
false result

在文件 parameter.h350 行定义.

350{ return value<bool>(); }

◆ AsDouble()

double apollo::cyber::Parameter::AsDouble ( ) const
inline

et Paramter as a double value

返回
double type result

在文件 parameter.h354 行定义.

354{ return value<double>(); }

◆ AsInt64()

int64_t apollo::cyber::Parameter::AsInt64 ( ) const
inline

Get Paramter as an int64_t value

返回
int64_t int64 type result

在文件 parameter.h352 行定义.

352{ return value<int64_t>(); }

◆ AsString()

const std::string apollo::cyber::Parameter::AsString ( ) const
inline

Get Paramter as a string value

返回
const std::string Parameter's string expression

在文件 parameter.h356 行定义.

356{ return value<std::string>(); }

◆ DebugString()

std::string apollo::cyber::Parameter::DebugString ( ) const

show debug string

返回
std::string Parameter's debug string

在文件 parameter.cc116 行定义.

116 {
117 std::stringstream ss;
118 ss << "{name: \"" << param_.name() << "\", ";
119 ss << "type: \"" << TypeName() << "\", ";
120 ss << "value: ";
121 switch (Type()) {
122 case ParamType::BOOL: {
123 ss << (AsBool() ? "true" : "false");
124 break;
125 }
126 case ParamType::INT: {
127 ss << std::to_string(AsInt64());
128 break;
129 }
130 case ParamType::DOUBLE: {
131 ss << std::to_string(AsDouble());
132 break;
133 }
134 case ParamType::STRING: {
135 ss << "\"" << AsString() << "\"";
136 break;
137 }
138 case ParamType::PROTOBUF: {
139 ProtobufFactory::Instance()->RegisterMessage(Descriptor());
140 auto message =
141 ProtobufFactory::Instance()->GenerateMessageByType(TypeName());
142 if (message != nullptr) {
143 message->ParseFromString(AsString());
144 ss << "\"" << message->ShortDebugString() << "\"";
145 delete message;
146 }
147 break;
148 }
149 case ParamType::NOT_SET: {
150 ss << "not set";
151 break;
152 }
153 default:
154 // do nothing
155 break;
156 }
157 ss << "}";
158 return ss.str();
159}
std::string TypeName() const
Get Paramter's type name, i.e.
Definition parameter.h:344
double AsDouble() const
et Paramter as a double value
Definition parameter.h:354
int64_t AsInt64() const
Get Paramter as an int64_t value
Definition parameter.h:352
ParamType Type() const
Get the cyber:parameter::ParamType of this object
Definition parameter.h:342
std::string Descriptor() const
Get Paramter's descriptor, only work on protobuf types
Definition parameter.h:346
bool AsBool() const
Get Paramter as a bool value
Definition parameter.h:350
const std::string AsString() const
Get Paramter as a string value
Definition parameter.h:356

◆ Descriptor()

std::string apollo::cyber::Parameter::Descriptor ( ) const
inline

Get Paramter's descriptor, only work on protobuf types

返回
std::string the Parameter's type name

在文件 parameter.h346 行定义.

346{ return param_.proto_desc(); }

◆ FromProtoParam()

void apollo::cyber::Parameter::FromProtoParam ( const Param param)

Parse a cyber::proto::Param object to cyber::parameter::Parameter object

参数
paramThe cyber::proto::Param object parse from A pointer to the target Parameter object
返回
True if parse ok, otherwise False

在文件 parameter.cc112 行定义.

112{ param_.CopyFrom(param); }

◆ Name()

const std::string apollo::cyber::Parameter::Name ( ) const
inline

Get the Parameter name

返回
const std::string the Parameter's name

在文件 parameter.h348 行定义.

348{ return param_.name(); }

◆ ToProtoParam()

Param apollo::cyber::Parameter::ToProtoParam ( ) const

Parse a cyber::parameter::Parameter object to cyber::proto::Param object

返回
The target cyber::proto::Param object

在文件 parameter.cc114 行定义.

114{ return param_; }

◆ Type()

ParamType apollo::cyber::Parameter::Type ( ) const
inline

Get the cyber:parameter::ParamType of this object

返回
result cyber:parameter::ParameterType

在文件 parameter.h342 行定义.

342{ return param_.type(); }
optional ParamType type

◆ TypeName()

std::string apollo::cyber::Parameter::TypeName ( ) const
inline

Get Paramter's type name, i.e.

INT,DOUBLE,STRING or protobuf message's fullname

返回
std::string the Parameter's type name

在文件 parameter.h344 行定义.

344{ return param_.type_name(); }

◆ value() [1/5]

template<typename ValueType >
std::enable_if< std::is_same< ValueType, bool >::value, bool >::type apollo::cyber::Parameter::value ( ) const
 @brief Translate paramter value as a protobuf::Message

 @tparam ValueType type of the value
 @return std::enable_if<

std::is_base_of<google::protobuf::Message, ValueType>::value, ValueType>::type protobuf::Message type result

在文件 parameter.h288 行定义.

288 {
289 ValueType message;
290 if (!message.ParseFromString(param_.string_value())) {
291 AERROR << "The type of parameter \"" << param_.name() << "\" is "
292 << TypeName() << ", not " << ValueType::descriptor()->full_name();
293 }
294 return message;
295}
#define AERROR
Definition log.h:44

◆ value() [2/5]

template<typename ValueType >
std::enable_if< std::is_integral< ValueType >::value &&!std::is_same< ValueType, bool >::value, ValueType >::type apollo::cyber::Parameter::value ( ) const
 @brief Translate paramter value to int type

 @tparam ValueType type of the value
 @return std::enable_if<std::is_integral<ValueType>::value &&

!std::is_same<ValueType, bool>::value, ValueType>::type int type result

◆ value() [3/5]

template<typename ValueType >
std::enable_if< std::is_floating_point< ValueType >::value, ValueType >::type apollo::cyber::Parameter::value ( ) const
 @brief Translate paramter value to bool type

 @tparam ValueType type of the value
 @return std::enable_if<std::is_floating_point<ValueType>::value,

ValueType>::type floating type result

◆ value() [4/5]

template<typename ValueType >
std::enable_if< std::is_convertible< ValueType, std::string >::value, conststd::string & >::type apollo::cyber::Parameter::value ( ) const
 @brief Translate paramter value to string type

 @tparam ValueType type of the value
 @return std::enable_if<std::is_convertible<ValueType, std::string>::value,

const std::string&>::type string type result

◆ value() [5/5]

template<typename ValueType >
std::enable_if< std::is_same< ValueType, bool >::value, bool >::type apollo::cyber::Parameter::value ( ) const

Translate paramter value to bool type

模板参数
ValueTypetype of the value
返回
std::enable_if<std::is_same<ValueType, bool>::value, bool>::type bool type result

该类的文档由以下文件生成: