Go to the documentation of this file.
31 package com.google.protobuf;
37 import java.io.IOException;
38 import java.math.BigInteger;
39 import java.nio.CharBuffer;
40 import java.util.ArrayList;
41 import java.util.List;
42 import java.util.Locale;
44 import java.util.logging.Logger;
45 import java.util.regex.Matcher;
46 import java.util.regex.Pattern;
238 final int tag,
final Object
value,
final Appendable
output)
throws IOException {
243 final int tag,
final Object
value,
final TextGenerator generator)
throws IOException {
249 generator.print(String.format((Locale)
null,
"0x%08x", (Integer)
value));
252 generator.print(String.format((Locale)
null,
"0x%016x", (Long)
value));
258 generator.print(
"{");
263 generator.print(
"}");
266 generator.print(
"\"");
268 generator.print(
"\"");
275 throw new IllegalArgumentException(
"Bad tag: " + tag);
331 final StringBuilder text =
new StringBuilder();
333 return text.toString();
334 }
catch (IOException e) {
335 throw new IllegalStateException(e);
347 if (
field.isRepeated()) {
349 for (Object element : (List<?>)
value) {
375 switch (
field.getType()) {
379 generator.print(((Integer)
value).toString());
385 generator.print(((Long)
value).toString());
389 generator.print(((Boolean)
value).toString());
411 generator.print(
"\"");
414 ? TextFormatEscaper.escapeText((String)
value)
416 generator.print(
"\"");
420 generator.print(
"\"");
426 generator.print(
"\"");
443 final StringBuilder text =
new StringBuilder();
445 return text.toString();
446 }
catch (IOException e) {
447 throw new IllegalStateException(e);
453 final StringBuilder text =
new StringBuilder();
455 return text.toString();
456 }
catch (IOException e) {
457 throw new IllegalStateException(e);
467 final StringBuilder text =
new StringBuilder();
469 return text.toString();
470 }
catch (IOException e) {
471 throw new IllegalStateException(e);
481 final StringBuilder text =
new StringBuilder();
483 return text.toString();
484 }
catch (IOException e) {
485 throw new IllegalStateException(e);
495 final StringBuilder text =
new StringBuilder();
497 return text.toString();
498 }
catch (IOException e) {
499 throw new IllegalStateException(e);
504 final int tag,
final Object
value,
final TextGenerator generator)
throws IOException {
510 generator.print(String.format((Locale)
null,
"0x%08x", (Integer)
value));
513 generator.print(String.format((Locale)
null,
"0x%016x", (Long)
value));
519 generator.print(
"{");
524 generator.print(
"}");
527 generator.print(
"\"");
529 generator.print(
"\"");
536 throw new IllegalArgumentException(
"Bad tag: " + tag);
551 if (
field.isExtension()) {
552 generator.print(
"[");
554 if (
field.getContainingType().getOptions().getMessageSetWireFormat()
556 && (
field.isOptional())
558 && (
field.getExtensionScope() ==
field.getMessageType())) {
559 generator.print(
field.getMessageType().getFullName());
561 generator.print(
field.getFullName());
563 generator.print(
"]");
567 generator.print(
field.getMessageType().getName());
569 generator.print(
field.getName());
574 generator.print(
" {");
578 generator.print(
": ");
585 generator.print(
"}");
593 final int number = entry.getKey();
601 field.getLengthDelimitedList(),
604 generator.print(entry.getKey().toString());
605 generator.print(
" {");
610 generator.print(
"}");
620 generator.print(String.valueOf(
number));
621 generator.print(
": ");
631 return Integer.toString(
value);
633 return Long.toString(
value & 0x00000000FFFFFFFFL);
640 return Long.toString(
value);
644 return BigInteger.valueOf(
value & 0x7FFFFFFFFFFFFFFFL).setBit(63).toString();
659 private final StringBuilder
indent =
new StringBuilder();
684 throw new IllegalArgumentException(
" Outdent() without matching Indent().");
693 public void print(
final CharSequence text)
throws IOException {
706 public void eol() throws IOException {
742 private final CharSequence
text;
760 private static final Pattern
WHITESPACE = Pattern.compile(
"(\\s|(#.*$))++", Pattern.MULTILINE);
761 private static final Pattern
TOKEN =
763 "[a-zA-Z_][0-9a-zA-Z_+-]*+|"
764 +
"[.]?[0-9+-][0-9a-zA-Z_.+-]*+|"
765 +
"\"([^\"\n\\\\]|\\\\.)*+(\"|\\\\?$)|"
766 +
"\'([^\'\n\\\\]|\\\\.)*+(\'|\\\\?$)",
770 Pattern.compile(
"-?inf(inity)?", Pattern.CASE_INSENSITIVE);
772 Pattern.compile(
"-?inf(inity)?f?", Pattern.CASE_INSENSITIVE);
773 private static final Pattern
FLOAT_NAN = Pattern.compile(
"nanf?", Pattern.CASE_INSENSITIVE);
783 int getPreviousLine() {
787 int getPreviousColumn() {
811 if (
text.charAt(
pos) ==
'\n') {
877 return (
'0' <= c && c <=
'9') || c ==
'-' || c ==
'+';
892 if ((
'a' <= c && c <=
'z')
893 || (
'A' <= c && c <=
'Z')
894 || (
'0' <= c && c <=
'9')
930 }
catch (NumberFormatException e) {
944 }
catch (NumberFormatException e) {
958 }
catch (NumberFormatException e) {
985 }
catch (NumberFormatException e) {
1013 return negative ?
Double.NEGATIVE_INFINITY :
Double.POSITIVE_INFINITY;
1023 }
catch (NumberFormatException e) {
1051 return negative ?
Float.NEGATIVE_INFINITY :
Float.POSITIVE_INFINITY;
1061 }
catch (NumberFormatException e) {
1124 List<ByteString> list =
new ArrayList<ByteString>();
1139 if (quote !=
'\"' && quote !=
'\'') {
1180 return parseException(
"Couldn't parse integer: " + e.getMessage());
1188 return parseException(
"Couldn't parse number: " + e.getMessage());
1196 final String unknownField,
final String
description) {
1303 public static <T extends Message>
T parse(
final CharSequence
input,
final Class<T> protoClass)
1307 @SuppressWarnings(
"unchecked")
1317 final Readable
input,
1320 throws IOException {
1330 final CharSequence
input,
1344 final CharSequence
input,
1346 final Class<T> protoClass)
1350 @SuppressWarnings(
"unchecked")
1382 FORBID_SINGULAR_OVERWRITES
1444 this.singularOverwritePolicy =
p;
1483 final Readable
input,
1486 throws IOException {
1504 final StringBuilder text =
new StringBuilder();
1517 static final class UnknownField {
1534 if (unknownFields.isEmpty()) {
1538 StringBuilder msg =
new StringBuilder(
"Input contains unknown fields and/or extensions:");
1539 for (UnknownField
field : unknownFields) {
1540 msg.append(
'\n').append(
field.message);
1544 logger.warning(msg.toString());
1548 int firstErrorIndex = 0;
1550 boolean allUnknownExtensions =
true;
1551 for (UnknownField
field : unknownFields) {
1552 if (
field.type == UnknownField.Type.FIELD) {
1553 allUnknownExtensions =
false;
1558 if (allUnknownExtensions) {
1559 logger.warning(msg.toString());
1564 String[] lineColumn = unknownFields.get(firstErrorIndex).message.split(
":");
1566 Integer.parseInt(lineColumn[0]), Integer.parseInt(lineColumn[1]), msg.toString());
1574 final CharSequence
input,
1579 MessageReflection.BuilderAdapter
target =
new MessageReflection.BuilderAdapter(builder);
1581 List<UnknownField> unknownFields =
new ArrayList<UnknownField>();
1583 while (!tokenizer.
atEnd()) {
1595 final MessageReflection.MergeTarget
target,
1596 List<UnknownField> unknownFields)
1610 final MessageReflection.MergeTarget
target,
1612 List<UnknownField> unknownFields)
1615 int startLine = tokenizer.getLine();
1616 int startColumn = tokenizer.getColumn();
1620 if (tokenizer.tryConsume(
"[")) {
1622 final StringBuilder
name =
new StringBuilder(tokenizer.consumeIdentifier());
1623 while (tokenizer.tryConsume(
".")) {
1625 name.append(tokenizer.consumeIdentifier());
1632 (tokenizer.getPreviousLine() + 1)
1634 + (tokenizer.getPreviousColumn() + 1)
1636 +
type.getFullName()
1640 unknownFields.add(
new UnknownField(
message, UnknownField.Type.EXTENSION));
1643 throw tokenizer.parseExceptionPreviousToken(
1646 +
"\" does not extend message type \""
1647 +
type.getFullName()
1653 tokenizer.consume(
"]");
1655 final String
name = tokenizer.consumeIdentifier();
1661 if (
field ==
null) {
1664 final String lowerName =
name.toLowerCase(Locale.US);
1665 field =
type.findFieldByName(lowerName);
1674 && !
field.getMessageType().getName().equals(
name)) {
1678 if (
field ==
null) {
1679 String
message = (tokenizer.getPreviousLine() + 1)
1681 + (tokenizer.getPreviousColumn() + 1)
1683 +
type.getFullName()
1686 unknownFields.add(
new UnknownField(
message, UnknownField.Type.FIELD));
1691 if (
field ==
null) {
1698 if (tokenizer.tryConsume(
":") && !tokenizer.lookingAt(
"{") && !tokenizer.lookingAt(
"<")) {
1708 tokenizer.tryConsume(
":");
1709 if (parseTreeBuilder !=
null) {
1718 childParseTreeBuilder,
1731 tokenizer.consume(
":");
1742 if (parseTreeBuilder !=
null) {
1748 if (!tokenizer.tryConsume(
";")) {
1749 tokenizer.tryConsume(
",");
1759 final MessageReflection.MergeTarget
target,
1763 List<UnknownField> unknownFields)
1767 if (
field.isRepeated() && tokenizer.tryConsume(
"[")) {
1768 if (!tokenizer.tryConsume(
"]")) {
1778 if (tokenizer.tryConsume(
"]")) {
1782 tokenizer.consume(
",");
1801 final MessageReflection.MergeTarget
target,
1805 List<UnknownField> unknownFields)
1808 && !
field.isRepeated()) {
1810 throw tokenizer.parseExceptionPreviousToken(
1811 "Non-repeated field \"" +
field.getFullName() +
"\" cannot be overwritten.");
1812 }
else if (
field.getContainingOneof() !=
null
1815 throw tokenizer.parseExceptionPreviousToken(
1817 +
field.getFullName()
1818 +
"\" is specified along with field \""
1819 +
target.getOneofFieldDescriptor(oneof).getFullName()
1820 +
"\", another member of oneof \""
1826 Object
value =
null;
1829 final String endToken;
1830 if (tokenizer.tryConsume(
"<")) {
1833 tokenizer.consume(
"{");
1838 MessageReflection.MergeTarget subField =
1839 target.newMergeTargetForField(
field, defaultInstance);
1841 while (!tokenizer.tryConsume(endToken)) {
1842 if (tokenizer.atEnd()) {
1843 throw tokenizer.parseException(
"Expected \"" + endToken +
"\".");
1845 mergeField(tokenizer, extensionRegistry, subField, parseTreeBuilder, unknownFields);
1848 value = subField.finish();
1850 switch (
field.getType()) {
1854 value = tokenizer.consumeInt32();
1860 value = tokenizer.consumeInt64();
1865 value = tokenizer.consumeUInt32();
1870 value = tokenizer.consumeUInt64();
1874 value = tokenizer.consumeFloat();
1878 value = tokenizer.consumeDouble();
1882 value = tokenizer.consumeBoolean();
1886 value = tokenizer.consumeString();
1890 value = tokenizer.consumeByteString();
1896 if (tokenizer.lookingAtInteger()) {
1897 final int number = tokenizer.consumeInt32();
1899 if (
value ==
null) {
1900 String unknownValueMsg =
1903 +
"\" has no value with number "
1907 logger.warning(unknownValueMsg);
1910 throw tokenizer.parseExceptionPreviousToken(
1913 +
"\" has no value with number "
1919 final String
id = tokenizer.consumeIdentifier();
1921 if (
value ==
null) {
1922 String unknownValueMsg =
1925 +
"\" has no value named \""
1929 logger.warning(unknownValueMsg);
1932 throw tokenizer.parseExceptionPreviousToken(unknownValueMsg);
1941 throw new RuntimeException(
"Can't get here.");
1945 if (
field.isRepeated()) {
1957 if (tokenizer.tryConsume(
"[")) {
1960 tokenizer.consumeIdentifier();
1961 }
while (tokenizer.tryConsume(
"."));
1962 tokenizer.consume(
"]");
1964 tokenizer.consumeIdentifier();
1973 if (tokenizer.tryConsume(
":") && !tokenizer.lookingAt(
"<") && !tokenizer.lookingAt(
"{")) {
1980 if (!tokenizer.tryConsume(
";")) {
1981 tokenizer.tryConsume(
",");
1989 final String delimiter;
1990 if (tokenizer.tryConsume(
"<")) {
1993 tokenizer.consume(
"{");
1996 while (!tokenizer.lookingAt(
">") && !tokenizer.lookingAt(
"}")) {
1999 tokenizer.consume(delimiter);
2004 if (tokenizer.tryConsumeString()) {
2005 while (tokenizer.tryConsumeString()) {}
2008 if (!tokenizer.tryConsumeIdentifier()
2009 && !tokenizer.tryConsumeInt64()
2010 && !tokenizer.tryConsumeUInt64()
2011 && !tokenizer.tryConsumeDouble()
2012 && !tokenizer.tryConsumeFloat()) {
2013 throw tokenizer.parseException(
"Invalid field value: " + tokenizer.currentToken);
2031 return TextFormatEscaper.escapeBytes(
input);
2036 return TextFormatEscaper.escapeBytes(
input);
2054 final byte[] result =
new byte[
input.size()];
2056 for (
int i = 0;
i <
input.size();
i++) {
2057 byte c =
input.byteAt(
i);
2059 if (
i + 1 <
input.size()) {
2074 result[pos++] = (
byte) code;
2078 result[pos++] = 0x07;
2081 result[pos++] =
'\b';
2084 result[pos++] =
'\f';
2087 result[pos++] =
'\n';
2090 result[pos++] =
'\r';
2093 result[pos++] =
'\t';
2096 result[pos++] = 0x0b;
2099 result[pos++] =
'\\';
2102 result[pos++] =
'\'';
2105 result[pos++] =
'\"';
2116 "Invalid escape sequence: '\\x' with no digits");
2122 result[pos++] = (
byte) code;
2127 "Invalid escape sequence: '\\" + (
char) c +
'\'');
2132 "Invalid escape sequence: '\\' at end of string.");
2139 return result.length == pos
2161 static String escapeText(
final String
input) {
2167 return TextFormatEscaper.escapeDoubleQuotesAndBackslashes(
input);
2174 static String unescapeText(
final String
input)
throws InvalidEscapeSequenceException {
2180 return '0' <= c && c <=
'7';
2184 private static boolean isHex(
final byte c) {
2185 return (
'0' <= c && c <=
'9') || (
'a' <= c && c <=
'f') || (
'A' <= c && c <=
'F');
2193 if (
'0' <= c && c <=
'9') {
2195 }
else if (
'a' <= c && c <=
'z') {
2196 return c -
'a' + 10;
2198 return c -
'A' + 10;
2207 static int parseInt32(
final String text)
throws NumberFormatException {
2217 static int parseUInt32(
final String text)
throws NumberFormatException {
2226 static long parseInt64(
final String text)
throws NumberFormatException {
2236 static long parseUInt64(
final String text)
throws NumberFormatException {
2240 private static long parseInteger(
final String text,
final boolean isSigned,
final boolean isLong)
2241 throws NumberFormatException {
2244 boolean negative =
false;
2245 if (text.startsWith(
"-", pos)) {
2247 throw new NumberFormatException(
"Number must be positive: " + text);
2254 if (text.startsWith(
"0x", pos)) {
2257 }
else if (text.startsWith(
"0", pos)) {
2261 final String numberText = text.substring(pos);
2264 if (numberText.length() < 16) {
2266 result = Long.parseLong(numberText, radix);
2276 if (result > Integer.MAX_VALUE || result < Integer.MIN_VALUE) {
2277 throw new NumberFormatException(
2278 "Number out of range for 32-bit signed integer: " + text);
2281 if (result >= (1L << 32) || result < 0) {
2282 throw new NumberFormatException(
2283 "Number out of range for 32-bit unsigned integer: " + text);
2288 BigInteger bigValue =
new BigInteger(numberText, radix);
2290 bigValue = bigValue.negate();
2296 if (bigValue.bitLength() > 31) {
2297 throw new NumberFormatException(
2298 "Number out of range for 32-bit signed integer: " + text);
2301 if (bigValue.bitLength() > 32) {
2302 throw new NumberFormatException(
2303 "Number out of range for 32-bit unsigned integer: " + text);
2308 if (bigValue.bitLength() > 63) {
2309 throw new NumberFormatException(
2310 "Number out of range for 64-bit signed integer: " + text);
2313 if (bigValue.bitLength() > 64) {
2314 throw new NumberFormatException(
2315 "Number out of range for 64-bit unsigned integer: " + text);
2320 result = bigValue.longValue();
static final int BUFFER_SIZE
void merge(final CharSequence input, final Message.Builder builder)
ParseException parseException(final String description)
void consume(final String token)
GLuint const GLchar * name
boolean tryConsume(final String token)
static StringBuilder toStringBuilder(final Readable input)
static void printField(final FieldDescriptor field, final Object value, final Appendable output)
static final Pattern FLOAT_INFINITY
static String shortDebugString(final MessageOrBuilder message)
void print(final MessageOrBuilder message, final TextGenerator generator)
static String printToUnicodeString(final MessageOrBuilder message)
const Descriptor::ReservedRange const EnumValueDescriptor const MethodDescriptor extension
static String unsignedToString(final int value)
void mergeField(final Tokenizer tokenizer, final ExtensionRegistry extensionRegistry, final MessageReflection.MergeTarget target, List< UnknownField > unknownFields)
ParseException integerParseException(final NumberFormatException e)
static String printToString(final MessageOrBuilder message)
GLenum GLuint GLenum GLsizei length
static TextGenerator multiLineOutput(Appendable output)
ByteString consumeByteString()
static int digitValue(final byte c)
Printer escapingNonAscii(boolean escapeNonAscii)
String shortDebugString(final FieldDescriptor field, final Object value)
static String shortDebugString(final UnknownFieldSet fields)
ROSCONSOLE_CONSOLE_IMPL_DECL std::string getName(void *handle)
boolean lookingAtInteger()
static final Pattern TOKEN
static String escapeBytes(byte[] input)
void consumeFieldValues(final Tokenizer tokenizer, final ExtensionRegistry extensionRegistry, final MessageReflection.MergeTarget target, final FieldDescriptor field, final ExtensionRegistry.ExtensionInfo extension, final TextFormatParseInfoTree.Builder parseTreeBuilder, List< UnknownField > unknownFields)
void printFieldValue(final FieldDescriptor field, final Object value, final Appendable output)
Builder setAllowUnknownExtensions(boolean allowUnknownExtensions)
static void merge(final CharSequence input, final Message.Builder builder)
final StringBuilder indent
static String escapeDoubleQuotesAndBackslashes(final String input)
FORBID_SINGULAR_OVERWRITES
EnumValueDescriptor findValueByName(final String name)
static String shortDebugString(final FieldDescriptor field, final Object value)
void merge(final Readable input, final Message.Builder builder)
#define T(upbtypeconst, upbtype, ctype, default_value)
void skipFieldValue(Tokenizer tokenizer)
ParseException(final String message)
void print(final CharSequence text)
static< T extends Message > T parse(final CharSequence input, final ExtensionRegistry extensionRegistry, final Class< T > protoClass)
boolean allowUnknownEnumValues
UnknownFieldParseException(final String message)
ALLOW_SINGULAR_OVERWRITES
final SingularOverwritePolicy singularOverwritePolicy
FloatingPoint< double > Double
TextGenerator(final Appendable output, boolean singleLineMode)
void print(final MessageOrBuilder message, final Appendable output)
GLenum GLsizei GLsizei GLint * values
void printField(final FieldDescriptor field, final Object value, final TextGenerator generator)
static void printUnknownFieldValue(final int tag, final Object value, final TextGenerator generator)
final boolean singleLineMode
static Builder newBuilder()
static TextGenerator singleLineOutput(Appendable output)
void print(final UnknownFieldSet fields, final Appendable output)
static void merge(final CharSequence input, final ExtensionRegistry extensionRegistry, final Message.Builder builder)
static void printUnknownFields(final UnknownFieldSet unknownFields, final TextGenerator generator)
SingularOverwritePolicy singularOverwritePolicy
static void printUnicode(final MessageOrBuilder message, final Appendable output)
Printer(boolean escapeNonAscii)
static void print(final UnknownFieldSet fields, final Appendable output)
static void printUnknownFieldValue(final int tag, final Object value, final Appendable output)
void printMessage(final MessageOrBuilder message, final TextGenerator generator)
FloatingPoint< float > Float
void mergeField(final Tokenizer tokenizer, final ExtensionRegistry extensionRegistry, final MessageReflection.MergeTarget target, TextFormatParseInfoTree.Builder parseTreeBuilder, List< UnknownField > unknownFields)
ParseException parseExceptionPreviousToken(final String description)
static String printToString(final UnknownFieldSet fields)
static final Pattern DOUBLE_INFINITY
boolean tryConsumeString()
void consumeFieldValue(final Tokenizer tokenizer, final ExtensionRegistry extensionRegistry, final MessageReflection.MergeTarget target, final FieldDescriptor field, final ExtensionRegistry.ExtensionInfo extension, final TextFormatParseInfoTree.Builder parseTreeBuilder, List< UnknownField > unknownFields)
static final Printer DEFAULT
Parser(boolean allowUnknownFields, boolean allowUnknownEnumValues, boolean allowUnknownExtensions, SingularOverwritePolicy singularOverwritePolicy, TextFormatParseInfoTree.Builder parseInfoTreeBuilder)
EnumValueDescriptor findValueByNumber(final int number)
static final Parser PARSER
static void print(final MessageOrBuilder message, final Appendable output)
static void printUnknownFieldValue(final int tag, final Object value, final TextGenerator generator)
final boolean allowUnknownEnumValues
static void merge(final Readable input, final ExtensionRegistry extensionRegistry, final Message.Builder builder)
static void printUnicodeFieldValue(final FieldDescriptor field, final Object value, final Appendable output)
final boolean allowUnknownExtensions
void checkUnknownFields(final List< UnknownField > unknownFields)
void skipField(Tokenizer tokenizer)
static String printToUnicodeString(final UnknownFieldSet fields)
SETUP_TEARDOWN_TESTCONTEXT typedef uint8_t byte
static final Pattern FLOAT_NAN
const FieldDescriptor * field
static String escapeBytes(ByteString input)
static ExtensionRegistry getEmptyRegistry()
void printFieldValue(final FieldDescriptor field, final Object value, final TextGenerator generator)
Builder setSingularOverwritePolicy(SingularOverwritePolicy p)
static String printFieldToString(final FieldDescriptor field, final Object value)
boolean lookingAt(String text)
boolean tryConsumeFloat()
static long parseInteger(final String text, final boolean isSigned, final boolean isLong)
static final long serialVersionUID
Builder getBuilderForSubMessageField(final FieldDescriptor fieldDescriptor)
Builder setAllowUnknownFields(boolean allowUnknownFields)
Builder setParseInfoTreeBuilder(TextFormatParseInfoTree.Builder parseInfoTreeBuilder)
static const upb_fielddef fields[107]
static ByteString unescapeBytes(final CharSequence charString)
static boolean isOctal(final byte c)
static< T extends MessageLite > T getDefaultInstance(Class< T > clazz)
boolean allowUnknownExtensions
String printFieldToString(final FieldDescriptor field, final Object value)
UnknownFieldParseException unknownFieldParseExceptionPreviousToken(final String unknownField, final String description)
void merge(final CharSequence input, final ExtensionRegistry extensionRegistry, final Message.Builder builder)
boolean tryConsumeIdentifier()
static final Logger logger
static final long serialVersionUID
boolean tryConsumeInt64()
static boolean isHex(final byte c)
Tokenizer(final CharSequence text)
void printField(final FieldDescriptor field, final Object value, final Appendable output)
final boolean escapeNonAscii
boolean tryConsumeUInt64()
void printSingleField(final FieldDescriptor field, final Object value, final TextGenerator generator)
static< T extends Message > T parse(final CharSequence input, final Class< T > protoClass)
String printToString(final MessageOrBuilder message)
static void printUnknownField(final int number, final int wireType, final List<?> values, final TextGenerator generator)
static UnknownFieldSet parseFrom(final CodedInputStream input)
void consumeByteString(List< ByteString > list)
ParseException floatParseException(final NumberFormatException e)
TextFormatParseInfoTree.Builder parseInfoTreeBuilder
ParseException(final int line, final int column, final String message)
static void printFieldValue(final FieldDescriptor field, final Object value, final Appendable output)
boolean tryConsumeDouble()
final String unknownField
GLsizei const GLfloat * value
String printToString(final UnknownFieldSet fields)
void skipFieldMessage(Tokenizer tokenizer)
static void printUnicode(final UnknownFieldSet fields, final Appendable output)
String shortDebugString(final UnknownFieldSet fields)
static String unsignedToString(final long value)
const upb_json_parsermethod const upb_symtab upb_sink * output
String consumeIdentifier()
static final Pattern WHITESPACE
boolean allowUnknownFields
String shortDebugString(final MessageOrBuilder message)
void merge(final Readable input, final ExtensionRegistry extensionRegistry, final Message.Builder builder)
GLenum GLuint GLenum GLsizei const GLchar * message
TextFormatParseInfoTree.Builder parseInfoTreeBuilder
static void merge(final Readable input, final Message.Builder builder)
UnknownFieldParseException(final int line, final int column, final String unknownField, final String message)
final boolean allowUnknownFields
static Parser getParser()
libaditof
Author(s):
autogenerated on Wed May 21 2025 02:07:00