17 #ifndef CYBER_MESSAGE_MESSAGE_TRAITS_H_ 18 #define CYBER_MESSAGE_MESSAGE_TRAITS_H_ 58 std::is_member_function_pointer<
62 return message.TypeName();
67 !std::is_member_function_pointer<
75 typename std::enable_if<
80 return typeid(T).name();
85 !std::is_member_function_pointer<
93 typename std::enable_if<
98 return typeid(T).name();
103 typename std::enable_if<
109 return typeid(T).name();
112 template <
typename T>
114 const std::string& type_name, T* message) {
115 message->SetTypeName(type_name);
118 template <
typename T>
120 const std::string& type_name, T* message) {}
122 template <
typename T>
125 return static_cast<int>(message.ByteSizeLong());
128 template <
typename T>
135 template <
typename T>
137 int content_size =
ByteSize(message);
138 if (content_size < 0) {
141 return content_size +
static_cast<int>(
sizeof(
MessageHeader));
144 template <
typename T>
146 const void* data,
int size, T* message) {
147 return message->ParseFromArray(data, size);
150 template <
typename T>
156 template <
typename T>
159 return message->ParseFromString(str);
162 template <
typename T>
168 template <
typename T>
170 const void* data,
int size, T* message) {
176 return message->ParseFromArray(
177 static_cast<const void*>(static_cast<const char*>(data) + header_size),
181 template <
typename T>
183 const void* data,
int size, T* message) {
187 template <
typename T>
190 return message.SerializeToArray(data, size);
193 template <
typename T>
199 template <
typename T>
202 return message.SerializeToString(str);
205 template <
typename T>
211 template <
typename T>
218 const std::string& type_name =
MessageType(message);
220 header.
set_msg_type(type_name.data(), type_name.size());
222 char* ptr =
reinterpret_cast<char*
>(data);
223 memcpy(ptr, static_cast<const void*>(&header),
sizeof(header));
224 ptr +=
sizeof(header);
225 int left_size = size -
static_cast<int>(
sizeof(header));
229 template <
typename T>
241 template <
typename T,
242 typename std::enable_if<
248 template <
typename MessageT,
249 typename std::enable_if<
255 typename T,
typename Descriptor,
258 return T::descriptor()->full_name();
262 typename T,
typename Descriptor,
265 return typeid(T).name();
268 template <
typename T,
269 typename std::enable_if<
274 return GetFullName<T, decltype(*T::descriptor())>();
277 template <
typename T,
278 typename std::enable_if<
283 return T::descriptor()->full_name();
286 template <
typename T,
289 return typeid(T).name();
296 #endif // CYBER_MESSAGE_MESSAGE_TRAITS_H_ std::enable_if< HasSetType< T >::value, void >::type SetTypeName(const std::string &type_name, T *message)
Definition: message_traits.h:113
std::enable_if< HasParseFromArray< T >::value, bool >::type ParseFromHC(const void *data, int size, T *message)
Definition: message_traits.h:169
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
#define RETURN_VAL_IF(condition, val)
Definition: log.h:114
std::enable_if< HasByteSize< T >::value, int >::type ByteSize(const T &message)
Definition: message_traits.h:123
std::enable_if< HasParseFromArray< T >::value, bool >::type ParseFromArray(const void *data, int size, T *message)
Definition: message_traits.h:145
std::enable_if< HasSerializeToString< T >::value, bool >::type SerializeToString(const T &message, std::string *str)
Definition: message_traits.h:201
static constexpr bool value
Definition: message_traits.h:47
std::string MessageType(const T &message)
Definition: message_traits.h:61
std::enable_if< HasSerializeToArray< T >::value, bool >::type SerializeToArray(const T &message, void *data, int size)
Definition: message_traits.h:189
std::string GetFullName()
Definition: message_traits.h:257
#define DEFINE_TYPE_TRAIT(name, func)
Definition: macros.h:33
std::enable_if< HasParseFromString< T >::value, bool >::type ParseFromString(const std::string &str, T *message)
Definition: message_traits.h:158
Definition: message_traits.h:45
void GetDescriptorString(const std::string &type, std::string *desc_str)
Definition: message_traits.h:237
void GetDescriptorString(const MessageT &message, std::string *desc_str)
Definition: message_traits.h:252
int FullByteSize(const T &message)
Definition: message_traits.h:136
apollo::cyber::base::std value
std::string GetMessageName()
Definition: message_traits.h:273
std::enable_if< HasSerializeToArray< T >::value, bool >::type SerializeToHC(const T &message, void *data, int size)
Definition: message_traits.h:213