case google::protobuf::FieldDescriptor::CPPTYPE_##CPPTYPE: \
if (*jump_lines) { \
--(*jump_lines); \
} else { \
const std::string& fieldName = field->name(); \
out_str << fieldName << ": "; \
if (field->is_repeated()) { \
out_str << "[" << index << "] "; \
} \
old_flags = out_str.flags(); \
out_str << std::fixed << std::setprecision(PRECISION) \
<< (field->is_repeated() \
? ref->GetRepeated##METHOD(msg, field, index) \
: ref->Get##METHOD(msg, field)); \
out_str.flags(old_flags); \
s->AddStr(indent, (*line_no)++, out_str.str().c_str()); \
} \
break