| @@ -63,13 +63,13 @@ Status Message2Operator::ParseField(const google::protobuf::Reflection *reflecti | |||||
| const google::protobuf::FieldDescriptor *field, int depth, ge::Operator &ops) { | const google::protobuf::FieldDescriptor *field, int depth, ge::Operator &ops) { | ||||
| GELOGD("Start to parse field: %s.", field->name().c_str()); | GELOGD("Start to parse field: %s.", field->name().c_str()); | ||||
| switch (field->cpp_type()) { | switch (field->cpp_type()) { | ||||
| #define CASE_FIELD_TYPE(cpptype, method, valuetype, logtype) \ | |||||
| case google::protobuf::FieldDescriptor::CPPTYPE_##cpptype: { \ | |||||
| valuetype value = reflection->Get##method(*message, field); \ | |||||
| GELOGD("Parse result(%s : %" #logtype ")", field->name().c_str(), value); \ | |||||
| (void)ops.SetAttr(field->name(), value); \ | |||||
| break; \ | |||||
| } | |||||
| #define CASE_FIELD_TYPE(cpptype, method, valuetype, logtype) \ | |||||
| case google::protobuf::FieldDescriptor::CPPTYPE_##cpptype: { \ | |||||
| valuetype value = reflection->Get##method(*message, field); \ | |||||
| GELOGD("Parse result(%s : %" #logtype ")", field->name().c_str(), value); \ | |||||
| (void)ops.SetAttr(field->name(), value); \ | |||||
| break; \ | |||||
| } | |||||
| CASE_FIELD_TYPE(INT32, Int32, int32_t, d); | CASE_FIELD_TYPE(INT32, Int32, int32_t, d); | ||||
| CASE_FIELD_TYPE(UINT32, UInt32, uint32_t, u); | CASE_FIELD_TYPE(UINT32, UInt32, uint32_t, u); | ||||
| CASE_FIELD_TYPE(INT64, Int64, int64_t, ld); | CASE_FIELD_TYPE(INT64, Int64, int64_t, ld); | ||||
| @@ -121,16 +121,16 @@ Status Message2Operator::ParseRepeatedField(const google::protobuf::Reflection * | |||||
| } | } | ||||
| switch (field->cpp_type()) { | switch (field->cpp_type()) { | ||||
| #define CASE_FIELD_TYPE_REPEATED(cpptype, method, valuetype) \ | |||||
| case google::protobuf::FieldDescriptor::CPPTYPE_##cpptype: { \ | |||||
| std::vector<valuetype> attr_value; \ | |||||
| for (int i = 0; i < field_size; i++) { \ | |||||
| valuetype value = reflection->GetRepeated##method(*message, field, i); \ | |||||
| attr_value.push_back(value); \ | |||||
| } \ | |||||
| (void)ops.SetAttr(field->name(), attr_value); \ | |||||
| break; \ | |||||
| } | |||||
| #define CASE_FIELD_TYPE_REPEATED(cpptype, method, valuetype) \ | |||||
| case google::protobuf::FieldDescriptor::CPPTYPE_##cpptype: { \ | |||||
| std::vector<valuetype> attr_value; \ | |||||
| for (int i = 0; i < field_size; i++) { \ | |||||
| valuetype value = reflection->GetRepeated##method(*message, field, i); \ | |||||
| attr_value.push_back(value); \ | |||||
| } \ | |||||
| (void)ops.SetAttr(field->name(), attr_value); \ | |||||
| break; \ | |||||
| } | |||||
| CASE_FIELD_TYPE_REPEATED(INT32, Int32, int32_t); | CASE_FIELD_TYPE_REPEATED(INT32, Int32, int32_t); | ||||
| CASE_FIELD_TYPE_REPEATED(UINT32, UInt32, uint32_t); | CASE_FIELD_TYPE_REPEATED(UINT32, UInt32, uint32_t); | ||||
| CASE_FIELD_TYPE_REPEATED(INT64, Int64, int64_t); | CASE_FIELD_TYPE_REPEATED(INT64, Int64, int64_t); | ||||