|
|
|
@ -728,6 +728,16 @@ bool TextFormat::Parser::MergeFromString(const string& input, |
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* static */ bool TextFormat::PrintUnknownFieldsToString( |
|
|
|
|
const UnknownFieldSet& unknown_fields, |
|
|
|
|
string* output) { |
|
|
|
|
GOOGLE_DCHECK(output) << "output specified is NULL"; |
|
|
|
|
|
|
|
|
|
output->clear(); |
|
|
|
|
io::StringOutputStream output_stream(output); |
|
|
|
|
return PrintUnknownFields(unknown_fields, &output_stream); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* static */ bool TextFormat::Print(const Message& message, |
|
|
|
|
io::ZeroCopyOutputStream* output) { |
|
|
|
|
TextGenerator generator(output); |
|
|
|
@ -738,6 +748,17 @@ bool TextFormat::Parser::MergeFromString(const string& input, |
|
|
|
|
return !generator.failed(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* static */ bool TextFormat::PrintUnknownFields( |
|
|
|
|
const UnknownFieldSet& unknown_fields, |
|
|
|
|
io::ZeroCopyOutputStream* output) { |
|
|
|
|
TextGenerator generator(output); |
|
|
|
|
|
|
|
|
|
PrintUnknownFields(unknown_fields, generator); |
|
|
|
|
|
|
|
|
|
// Output false if the generator failed internally.
|
|
|
|
|
return !generator.failed(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* static */ void TextFormat::Print(const Descriptor* descriptor, |
|
|
|
|
const Message::Reflection* message, |
|
|
|
|
TextGenerator& generator) { |
|
|
|
@ -922,10 +943,24 @@ static string PaddedHex(IntType value) { |
|
|
|
|
} |
|
|
|
|
for (int j = 0; j < field.length_delimited_size(); j++) { |
|
|
|
|
generator.Print(field_number); |
|
|
|
|
const string& value = field.length_delimited(j); |
|
|
|
|
UnknownFieldSet embedded_unknown_fields; |
|
|
|
|
if (!value.empty() && embedded_unknown_fields.ParseFromString(value)) { |
|
|
|
|
// This field is parseable as a Message.
|
|
|
|
|
// So it is probably an embedded message.
|
|
|
|
|
generator.Print(" {\n"); |
|
|
|
|
generator.Indent(); |
|
|
|
|
PrintUnknownFields(embedded_unknown_fields, generator); |
|
|
|
|
generator.Outdent(); |
|
|
|
|
generator.Print("}\n"); |
|
|
|
|
} else { |
|
|
|
|
// This field is not parseable as a Message.
|
|
|
|
|
// So it is probably just a plain string.
|
|
|
|
|
generator.Print(": \""); |
|
|
|
|
generator.Print(CEscape(field.length_delimited(j))); |
|
|
|
|
generator.Print(CEscape(value)); |
|
|
|
|
generator.Print("\"\n"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
for (int j = 0; j < field.group_size(); j++) { |
|
|
|
|
generator.Print(field_number); |
|
|
|
|
generator.Print(" {\n"); |
|
|
|
|