17#ifndef CYBER_MESSAGE_PROTOBUF_TRAITS_H_
18#define CYBER_MESSAGE_PROTOBUF_TRAITS_H_
31template <
typename MessageT,
32 typename std::enable_if<
33 std::is_base_of<google::protobuf::Message, MessageT>::value,
36 return MessageT::descriptor()->full_name();
39template <
typename MessageT,
40 typename std::enable_if<
41 std::is_base_of<google::protobuf::Message, MessageT>::value,
44 return message.GetDescriptor()->full_name();
47template <
typename MessageT,
48 typename std::enable_if<
49 std::is_base_of<google::protobuf::Message, MessageT>::value,
52 std::string* desc_str) {
53 ProtobufFactory::Instance()->GetDescriptorString(message, desc_str);
56template <
typename MessageT,
57 typename std::enable_if<
58 std::is_base_of<google::protobuf::Message, MessageT>::value,
61 std::string* desc_str) {
62 ProtobufFactory::Instance()->GetDescriptorString(type, desc_str);
65template <
typename MessageT,
66 typename std::enable_if<
67 std::is_base_of<google::protobuf::Message, MessageT>::value,
70 return ProtobufFactory::Instance()->RegisterMessage(message);
73template <
typename MessageT,
74 typename std::enable_if<
75 std::is_base_of<google::protobuf::Message, MessageT>::value,
79 MessageT** message_ptr) {
84template <
typename MessageT,
85 typename std::enable_if<
86 std::is_base_of<google::protobuf::Message, MessageT>::value,
89 MessageT* message, MessageT** message_ptr) {
90 *message_ptr = wrapper->
GetMessage<MessageT>();
MessageT * SetMessage(const MessageT &message)
bool RegisterMessage(const MessageT &message)
std::enable_if< HasParseFromArenaMessageWrapper< T >::value, bool >::type ParseFromArenaMessageWrapper(ArenaMessageWrapper *wrapper, T *message, T **message_ptr)
std::enable_if< HasSerializeToArenaMessageWrapper< T >::value, bool >::type SerializeToArenaMessageWrapper(const T &message, ArenaMessageWrapper *wrapper, T **message_ptr)
std::string MessageType()
void GetDescriptorString(const std::string &type, std::string *desc_str)