/Android Development/IOIODebugger/src/com/google/protobuf/AbstractMessage.java |
---|
0,0 → 1,764 |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
// |
// * Redistributions of source code must retain the above copyright |
// notice, this list of conditions and the following disclaimer. |
// * Redistributions in binary form must reproduce the above |
// copyright notice, this list of conditions and the following disclaimer |
// in the documentation and/or other materials provided with the |
// distribution. |
// * Neither the name of Google Inc. nor the names of its |
// contributors may be used to endorse or promote products derived from |
// this software without specific prior written permission. |
// |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
package com.google.protobuf; |
import com.google.protobuf.Descriptors.Descriptor; |
import com.google.protobuf.Descriptors.FieldDescriptor; |
import com.google.protobuf.Internal.EnumLite; |
import java.io.IOException; |
import java.io.InputStream; |
import java.util.ArrayList; |
import java.util.List; |
import java.util.Map; |
/** |
* A partial implementation of the {@link Message} interface which implements |
* as many methods of that interface as possible in terms of other methods. |
* |
* @author kenton@google.com Kenton Varda |
*/ |
public abstract class AbstractMessage extends AbstractMessageLite |
implements Message { |
@SuppressWarnings("unchecked") |
public boolean isInitialized() { |
// Check that all required fields are present. |
for (final FieldDescriptor field : getDescriptorForType().getFields()) { |
if (field.isRequired()) { |
if (!hasField(field)) { |
return false; |
} |
} |
} |
// Check that embedded messages are initialized. |
for (final Map.Entry<FieldDescriptor, Object> entry : |
getAllFields().entrySet()) { |
final FieldDescriptor field = entry.getKey(); |
if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { |
if (field.isRepeated()) { |
for (final Message element : (List<Message>) entry.getValue()) { |
if (!element.isInitialized()) { |
return false; |
} |
} |
} else { |
if (!((Message) entry.getValue()).isInitialized()) { |
return false; |
} |
} |
} |
} |
return true; |
} |
@Override |
public final String toString() { |
return TextFormat.printToString(this); |
} |
public void writeTo(final CodedOutputStream output) throws IOException { |
final boolean isMessageSet = |
getDescriptorForType().getOptions().getMessageSetWireFormat(); |
for (final Map.Entry<FieldDescriptor, Object> entry : |
getAllFields().entrySet()) { |
final FieldDescriptor field = entry.getKey(); |
final Object value = entry.getValue(); |
if (isMessageSet && field.isExtension() && |
field.getType() == FieldDescriptor.Type.MESSAGE && |
!field.isRepeated()) { |
output.writeMessageSetExtension(field.getNumber(), (Message) value); |
} else { |
FieldSet.writeField(field, value, output); |
} |
} |
final UnknownFieldSet unknownFields = getUnknownFields(); |
if (isMessageSet) { |
unknownFields.writeAsMessageSetTo(output); |
} else { |
unknownFields.writeTo(output); |
} |
} |
private int memoizedSize = -1; |
public int getSerializedSize() { |
int size = memoizedSize; |
if (size != -1) { |
return size; |
} |
size = 0; |
final boolean isMessageSet = |
getDescriptorForType().getOptions().getMessageSetWireFormat(); |
for (final Map.Entry<FieldDescriptor, Object> entry : |
getAllFields().entrySet()) { |
final FieldDescriptor field = entry.getKey(); |
final Object value = entry.getValue(); |
if (isMessageSet && field.isExtension() && |
field.getType() == FieldDescriptor.Type.MESSAGE && |
!field.isRepeated()) { |
size += CodedOutputStream.computeMessageSetExtensionSize( |
field.getNumber(), (Message) value); |
} else { |
size += FieldSet.computeFieldSize(field, value); |
} |
} |
final UnknownFieldSet unknownFields = getUnknownFields(); |
if (isMessageSet) { |
size += unknownFields.getSerializedSizeAsMessageSet(); |
} else { |
size += unknownFields.getSerializedSize(); |
} |
memoizedSize = size; |
return size; |
} |
@Override |
public boolean equals(final Object other) { |
if (other == this) { |
return true; |
} |
if (!(other instanceof Message)) { |
return false; |
} |
final Message otherMessage = (Message) other; |
if (getDescriptorForType() != otherMessage.getDescriptorForType()) { |
return false; |
} |
return getAllFields().equals(otherMessage.getAllFields()) && |
getUnknownFields().equals(otherMessage.getUnknownFields()); |
} |
@Override |
public int hashCode() { |
int hash = 41; |
hash = (19 * hash) + getDescriptorForType().hashCode(); |
hash = hashFields(hash, getAllFields()); |
hash = (29 * hash) + getUnknownFields().hashCode(); |
return hash; |
} |
/** Get a hash code for given fields and values, using the given seed. */ |
@SuppressWarnings("unchecked") |
protected int hashFields(int hash, Map<FieldDescriptor, Object> map) { |
for (Map.Entry<FieldDescriptor, Object> entry : map.entrySet()) { |
FieldDescriptor field = entry.getKey(); |
Object value = entry.getValue(); |
hash = (37 * hash) + field.getNumber(); |
if (field.getType() != FieldDescriptor.Type.ENUM){ |
hash = (53 * hash) + value.hashCode(); |
} else if (field.isRepeated()) { |
List<? extends EnumLite> list = (List<? extends EnumLite>) value; |
hash = (53 * hash) + hashEnumList(list); |
} else { |
hash = (53 * hash) + hashEnum((EnumLite) value); |
} |
} |
return hash; |
} |
/** |
* Helper method for implementing {@link Message#hashCode()}. |
* @see Boolean#hashCode() |
*/ |
protected static int hashLong(long n) { |
return (int) (n ^ (n >>> 32)); |
} |
/** |
* Helper method for implementing {@link Message#hashCode()}. |
* @see Boolean#hashCode() |
*/ |
protected static int hashBoolean(boolean b) { |
return b ? 1231 : 1237; |
} |
/** |
* Helper method for implementing {@link Message#hashCode()}. |
* <p> |
* This is needed because {@link java.lang.Enum#hashCode()} is final, but we |
* need to use the field number as the hash code to ensure compatibility |
* between statically and dynamically generated enum objects. |
*/ |
protected static int hashEnum(EnumLite e) { |
return e.getNumber(); |
} |
/** Helper method for implementing {@link Message#hashCode()}. */ |
protected static int hashEnumList(List<? extends EnumLite> list) { |
int hash = 1; |
for (EnumLite e : list) { |
hash = 31 * hash + hashEnum(e); |
} |
return hash; |
} |
// ================================================================= |
/** |
* A partial implementation of the {@link Message.Builder} interface which |
* implements as many methods of that interface as possible in terms of |
* other methods. |
*/ |
@SuppressWarnings("unchecked") |
public static abstract class Builder<BuilderType extends Builder> |
extends AbstractMessageLite.Builder<BuilderType> |
implements Message.Builder { |
// The compiler produces an error if this is not declared explicitly. |
@Override |
public abstract BuilderType clone(); |
public BuilderType clear() { |
for (final Map.Entry<FieldDescriptor, Object> entry : |
getAllFields().entrySet()) { |
clearField(entry.getKey()); |
} |
return (BuilderType) this; |
} |
public BuilderType mergeFrom(final Message other) { |
if (other.getDescriptorForType() != getDescriptorForType()) { |
throw new IllegalArgumentException( |
"mergeFrom(Message) can only merge messages of the same type."); |
} |
// Note: We don't attempt to verify that other's fields have valid |
// types. Doing so would be a losing battle. We'd have to verify |
// all sub-messages as well, and we'd have to make copies of all of |
// them to insure that they don't change after verification (since |
// the Message interface itself cannot enforce immutability of |
// implementations). |
// TODO(kenton): Provide a function somewhere called makeDeepCopy() |
// which allows people to make secure deep copies of messages. |
for (final Map.Entry<FieldDescriptor, Object> entry : |
other.getAllFields().entrySet()) { |
final FieldDescriptor field = entry.getKey(); |
if (field.isRepeated()) { |
for (final Object element : (List)entry.getValue()) { |
addRepeatedField(field, element); |
} |
} else if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { |
final Message existingValue = (Message)getField(field); |
if (existingValue == existingValue.getDefaultInstanceForType()) { |
setField(field, entry.getValue()); |
} else { |
setField(field, |
existingValue.newBuilderForType() |
.mergeFrom(existingValue) |
.mergeFrom((Message)entry.getValue()) |
.build()); |
} |
} else { |
setField(field, entry.getValue()); |
} |
} |
mergeUnknownFields(other.getUnknownFields()); |
return (BuilderType) this; |
} |
@Override |
public BuilderType mergeFrom(final CodedInputStream input) |
throws IOException { |
return mergeFrom(input, ExtensionRegistry.getEmptyRegistry()); |
} |
@Override |
public BuilderType mergeFrom( |
final CodedInputStream input, |
final ExtensionRegistryLite extensionRegistry) |
throws IOException { |
final UnknownFieldSet.Builder unknownFields = |
UnknownFieldSet.newBuilder(getUnknownFields()); |
while (true) { |
final int tag = input.readTag(); |
if (tag == 0) { |
break; |
} |
if (!mergeFieldFrom(input, unknownFields, extensionRegistry, |
this, tag)) { |
// end group tag |
break; |
} |
} |
setUnknownFields(unknownFields.build()); |
return (BuilderType) this; |
} |
/** |
* Like {@link #mergeFrom(CodedInputStream, UnknownFieldSet.Builder, |
* ExtensionRegistryLite, Message.Builder)}, but parses a single field. |
* Package-private because it is used by GeneratedMessage.ExtendableMessage. |
* @param tag The tag, which should have already been read. |
* @return {@code true} unless the tag is an end-group tag. |
*/ |
static boolean mergeFieldFrom( |
final CodedInputStream input, |
final UnknownFieldSet.Builder unknownFields, |
final ExtensionRegistryLite extensionRegistry, |
final Message.Builder builder, |
final int tag) throws IOException { |
final Descriptor type = builder.getDescriptorForType(); |
if (type.getOptions().getMessageSetWireFormat() && |
tag == WireFormat.MESSAGE_SET_ITEM_TAG) { |
mergeMessageSetExtensionFromCodedStream( |
input, unknownFields, extensionRegistry, builder); |
return true; |
} |
final int wireType = WireFormat.getTagWireType(tag); |
final int fieldNumber = WireFormat.getTagFieldNumber(tag); |
final FieldDescriptor field; |
Message defaultInstance = null; |
if (type.isExtensionNumber(fieldNumber)) { |
// extensionRegistry may be either ExtensionRegistry or |
// ExtensionRegistryLite. Since the type we are parsing is a full |
// message, only a full ExtensionRegistry could possibly contain |
// extensions of it. Otherwise we will treat the registry as if it |
// were empty. |
if (extensionRegistry instanceof ExtensionRegistry) { |
final ExtensionRegistry.ExtensionInfo extension = |
((ExtensionRegistry) extensionRegistry) |
.findExtensionByNumber(type, fieldNumber); |
if (extension == null) { |
field = null; |
} else { |
field = extension.descriptor; |
defaultInstance = extension.defaultInstance; |
if (defaultInstance == null && |
field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { |
throw new IllegalStateException( |
"Message-typed extension lacked default instance: " + |
field.getFullName()); |
} |
} |
} else { |
field = null; |
} |
} else { |
field = type.findFieldByNumber(fieldNumber); |
} |
boolean unknown = false; |
boolean packed = false; |
if (field == null) { |
unknown = true; // Unknown field. |
} else if (wireType == FieldSet.getWireFormatForFieldType( |
field.getLiteType(), |
false /* isPacked */)) { |
packed = false; |
} else if (field.isPackable() && |
wireType == FieldSet.getWireFormatForFieldType( |
field.getLiteType(), |
true /* isPacked */)) { |
packed = true; |
} else { |
unknown = true; // Unknown wire type. |
} |
if (unknown) { // Unknown field or wrong wire type. Skip. |
return unknownFields.mergeFieldFrom(tag, input); |
} |
if (packed) { |
final int length = input.readRawVarint32(); |
final int limit = input.pushLimit(length); |
if (field.getLiteType() == WireFormat.FieldType.ENUM) { |
while (input.getBytesUntilLimit() > 0) { |
final int rawValue = input.readEnum(); |
final Object value = field.getEnumType().findValueByNumber(rawValue); |
if (value == null) { |
// If the number isn't recognized as a valid value for this |
// enum, drop it (don't even add it to unknownFields). |
return true; |
} |
builder.addRepeatedField(field, value); |
} |
} else { |
while (input.getBytesUntilLimit() > 0) { |
final Object value = |
FieldSet.readPrimitiveField(input, field.getLiteType()); |
builder.addRepeatedField(field, value); |
} |
} |
input.popLimit(limit); |
} else { |
final Object value; |
switch (field.getType()) { |
case GROUP: { |
final Message.Builder subBuilder; |
if (defaultInstance != null) { |
subBuilder = defaultInstance.newBuilderForType(); |
} else { |
subBuilder = builder.newBuilderForField(field); |
} |
if (!field.isRepeated()) { |
subBuilder.mergeFrom((Message) builder.getField(field)); |
} |
input.readGroup(field.getNumber(), subBuilder, extensionRegistry); |
value = subBuilder.build(); |
break; |
} |
case MESSAGE: { |
final Message.Builder subBuilder; |
if (defaultInstance != null) { |
subBuilder = defaultInstance.newBuilderForType(); |
} else { |
subBuilder = builder.newBuilderForField(field); |
} |
if (!field.isRepeated()) { |
subBuilder.mergeFrom((Message) builder.getField(field)); |
} |
input.readMessage(subBuilder, extensionRegistry); |
value = subBuilder.build(); |
break; |
} |
case ENUM: |
final int rawValue = input.readEnum(); |
value = field.getEnumType().findValueByNumber(rawValue); |
// If the number isn't recognized as a valid value for this enum, |
// drop it. |
if (value == null) { |
unknownFields.mergeVarintField(fieldNumber, rawValue); |
return true; |
} |
break; |
default: |
value = FieldSet.readPrimitiveField(input, field.getLiteType()); |
break; |
} |
if (field.isRepeated()) { |
builder.addRepeatedField(field, value); |
} else { |
builder.setField(field, value); |
} |
} |
return true; |
} |
/** Called by {@code #mergeFieldFrom()} to parse a MessageSet extension. */ |
private static void mergeMessageSetExtensionFromCodedStream( |
final CodedInputStream input, |
final UnknownFieldSet.Builder unknownFields, |
final ExtensionRegistryLite extensionRegistry, |
final Message.Builder builder) throws IOException { |
final Descriptor type = builder.getDescriptorForType(); |
// The wire format for MessageSet is: |
// message MessageSet { |
// repeated group Item = 1 { |
// required int32 typeId = 2; |
// required bytes message = 3; |
// } |
// } |
// "typeId" is the extension's field number. The extension can only be |
// a message type, where "message" contains the encoded bytes of that |
// message. |
// |
// In practice, we will probably never see a MessageSet item in which |
// the message appears before the type ID, or where either field does not |
// appear exactly once. However, in theory such cases are valid, so we |
// should be prepared to accept them. |
int typeId = 0; |
ByteString rawBytes = null; // If we encounter "message" before "typeId" |
Message.Builder subBuilder = null; |
FieldDescriptor field = null; |
while (true) { |
final int tag = input.readTag(); |
if (tag == 0) { |
break; |
} |
if (tag == WireFormat.MESSAGE_SET_TYPE_ID_TAG) { |
typeId = input.readUInt32(); |
// Zero is not a valid type ID. |
if (typeId != 0) { |
final ExtensionRegistry.ExtensionInfo extension; |
// extensionRegistry may be either ExtensionRegistry or |
// ExtensionRegistryLite. Since the type we are parsing is a full |
// message, only a full ExtensionRegistry could possibly contain |
// extensions of it. Otherwise we will treat the registry as if it |
// were empty. |
if (extensionRegistry instanceof ExtensionRegistry) { |
extension = ((ExtensionRegistry) extensionRegistry) |
.findExtensionByNumber(type, typeId); |
} else { |
extension = null; |
} |
if (extension != null) { |
field = extension.descriptor; |
subBuilder = extension.defaultInstance.newBuilderForType(); |
final Message originalMessage = (Message)builder.getField(field); |
if (originalMessage != null) { |
subBuilder.mergeFrom(originalMessage); |
} |
if (rawBytes != null) { |
// We already encountered the message. Parse it now. |
subBuilder.mergeFrom( |
CodedInputStream.newInstance(rawBytes.newInput())); |
rawBytes = null; |
} |
} else { |
// Unknown extension number. If we already saw data, put it |
// in rawBytes. |
if (rawBytes != null) { |
unknownFields.mergeField(typeId, |
UnknownFieldSet.Field.newBuilder() |
.addLengthDelimited(rawBytes) |
.build()); |
rawBytes = null; |
} |
} |
} |
} else if (tag == WireFormat.MESSAGE_SET_MESSAGE_TAG) { |
if (typeId == 0) { |
// We haven't seen a type ID yet, so we have to store the raw bytes |
// for now. |
rawBytes = input.readBytes(); |
} else if (subBuilder == null) { |
// We don't know how to parse this. Ignore it. |
unknownFields.mergeField(typeId, |
UnknownFieldSet.Field.newBuilder() |
.addLengthDelimited(input.readBytes()) |
.build()); |
} else { |
// We already know the type, so we can parse directly from the input |
// with no copying. Hooray! |
input.readMessage(subBuilder, extensionRegistry); |
} |
} else { |
// Unknown tag. Skip it. |
if (!input.skipField(tag)) { |
break; // end of group |
} |
} |
} |
input.checkLastTagWas(WireFormat.MESSAGE_SET_ITEM_END_TAG); |
if (subBuilder != null) { |
builder.setField(field, subBuilder.build()); |
} |
} |
public BuilderType mergeUnknownFields(final UnknownFieldSet unknownFields) { |
setUnknownFields( |
UnknownFieldSet.newBuilder(getUnknownFields()) |
.mergeFrom(unknownFields) |
.build()); |
return (BuilderType) this; |
} |
/** |
* Construct an UninitializedMessageException reporting missing fields in |
* the given message. |
*/ |
protected static UninitializedMessageException |
newUninitializedMessageException(Message message) { |
return new UninitializedMessageException(findMissingFields(message)); |
} |
/** |
* Populates {@code this.missingFields} with the full "path" of each |
* missing required field in the given message. |
*/ |
private static List<String> findMissingFields(final Message message) { |
final List<String> results = new ArrayList<String>(); |
findMissingFields(message, "", results); |
return results; |
} |
/** Recursive helper implementing {@link #findMissingFields(Message)}. */ |
private static void findMissingFields(final Message message, |
final String prefix, |
final List<String> results) { |
for (final FieldDescriptor field : |
message.getDescriptorForType().getFields()) { |
if (field.isRequired() && !message.hasField(field)) { |
results.add(prefix + field.getName()); |
} |
} |
for (final Map.Entry<FieldDescriptor, Object> entry : |
message.getAllFields().entrySet()) { |
final FieldDescriptor field = entry.getKey(); |
final Object value = entry.getValue(); |
if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { |
if (field.isRepeated()) { |
int i = 0; |
for (final Object element : (List) value) { |
findMissingFields((Message) element, |
subMessagePrefix(prefix, field, i++), |
results); |
} |
} else { |
if (message.hasField(field)) { |
findMissingFields((Message) value, |
subMessagePrefix(prefix, field, -1), |
results); |
} |
} |
} |
} |
} |
private static String subMessagePrefix(final String prefix, |
final FieldDescriptor field, |
final int index) { |
final StringBuilder result = new StringBuilder(prefix); |
if (field.isExtension()) { |
result.append('(') |
.append(field.getFullName()) |
.append(')'); |
} else { |
result.append(field.getName()); |
} |
if (index != -1) { |
result.append('[') |
.append(index) |
.append(']'); |
} |
result.append('.'); |
return result.toString(); |
} |
// =============================================================== |
// The following definitions seem to be required in order to make javac |
// not produce weird errors like: |
// |
// java/com/google/protobuf/DynamicMessage.java:203: types |
// com.google.protobuf.AbstractMessage.Builder< |
// com.google.protobuf.DynamicMessage.Builder> and |
// com.google.protobuf.AbstractMessage.Builder< |
// com.google.protobuf.DynamicMessage.Builder> are incompatible; both |
// define mergeFrom(com.google.protobuf.ByteString), but with unrelated |
// return types. |
// |
// Strangely, these lines are only needed if javac is invoked separately |
// on AbstractMessage.java and AbstractMessageLite.java. If javac is |
// invoked on both simultaneously, it works. (Or maybe the important |
// point is whether or not DynamicMessage.java is compiled together with |
// AbstractMessageLite.java -- not sure.) I suspect this is a compiler |
// bug. |
@Override |
public BuilderType mergeFrom(final ByteString data) |
throws InvalidProtocolBufferException { |
return super.mergeFrom(data); |
} |
@Override |
public BuilderType mergeFrom( |
final ByteString data, |
final ExtensionRegistryLite extensionRegistry) |
throws InvalidProtocolBufferException { |
return super.mergeFrom(data, extensionRegistry); |
} |
@Override |
public BuilderType mergeFrom(final byte[] data) |
throws InvalidProtocolBufferException { |
return super.mergeFrom(data); |
} |
@Override |
public BuilderType mergeFrom( |
final byte[] data, final int off, final int len) |
throws InvalidProtocolBufferException { |
return super.mergeFrom(data, off, len); |
} |
@Override |
public BuilderType mergeFrom( |
final byte[] data, |
final ExtensionRegistryLite extensionRegistry) |
throws InvalidProtocolBufferException { |
return super.mergeFrom(data, extensionRegistry); |
} |
@Override |
public BuilderType mergeFrom( |
final byte[] data, final int off, final int len, |
final ExtensionRegistryLite extensionRegistry) |
throws InvalidProtocolBufferException { |
return super.mergeFrom(data, off, len, extensionRegistry); |
} |
@Override |
public BuilderType mergeFrom(final InputStream input) |
throws IOException { |
return super.mergeFrom(input); |
} |
@Override |
public BuilderType mergeFrom( |
final InputStream input, |
final ExtensionRegistryLite extensionRegistry) |
throws IOException { |
return super.mergeFrom(input, extensionRegistry); |
} |
@Override |
public boolean mergeDelimitedFrom(final InputStream input) |
throws IOException { |
return super.mergeDelimitedFrom(input); |
} |
@Override |
public boolean mergeDelimitedFrom( |
final InputStream input, |
final ExtensionRegistryLite extensionRegistry) |
throws IOException { |
return super.mergeDelimitedFrom(input, extensionRegistry); |
} |
} |
} |
/Android Development/IOIODebugger/src/com/google/protobuf/AbstractMessageLite.java |
---|
0,0 → 1,325 |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
// |
// * Redistributions of source code must retain the above copyright |
// notice, this list of conditions and the following disclaimer. |
// * Redistributions in binary form must reproduce the above |
// copyright notice, this list of conditions and the following disclaimer |
// in the documentation and/or other materials provided with the |
// distribution. |
// * Neither the name of Google Inc. nor the names of its |
// contributors may be used to endorse or promote products derived from |
// this software without specific prior written permission. |
// |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
package com.google.protobuf; |
import java.io.FilterInputStream; |
import java.io.InputStream; |
import java.io.IOException; |
import java.io.OutputStream; |
import java.util.Collection; |
/** |
* A partial implementation of the {@link MessageLite} interface which |
* implements as many methods of that interface as possible in terms of other |
* methods. |
* |
* @author kenton@google.com Kenton Varda |
*/ |
public abstract class AbstractMessageLite implements MessageLite { |
public ByteString toByteString() { |
try { |
final ByteString.CodedBuilder out = |
ByteString.newCodedBuilder(getSerializedSize()); |
writeTo(out.getCodedOutput()); |
return out.build(); |
} catch (IOException e) { |
throw new RuntimeException( |
"Serializing to a ByteString threw an IOException (should " + |
"never happen).", e); |
} |
} |
public byte[] toByteArray() { |
try { |
final byte[] result = new byte[getSerializedSize()]; |
final CodedOutputStream output = CodedOutputStream.newInstance(result); |
writeTo(output); |
output.checkNoSpaceLeft(); |
return result; |
} catch (IOException e) { |
throw new RuntimeException( |
"Serializing to a byte array threw an IOException " + |
"(should never happen).", e); |
} |
} |
public void writeTo(final OutputStream output) throws IOException { |
final int bufferSize = |
CodedOutputStream.computePreferredBufferSize(getSerializedSize()); |
final CodedOutputStream codedOutput = |
CodedOutputStream.newInstance(output, bufferSize); |
writeTo(codedOutput); |
codedOutput.flush(); |
} |
public void writeDelimitedTo(final OutputStream output) throws IOException { |
final int serialized = getSerializedSize(); |
final int bufferSize = CodedOutputStream.computePreferredBufferSize( |
CodedOutputStream.computeRawVarint32Size(serialized) + serialized); |
final CodedOutputStream codedOutput = |
CodedOutputStream.newInstance(output, bufferSize); |
codedOutput.writeRawVarint32(serialized); |
writeTo(codedOutput); |
codedOutput.flush(); |
} |
/** |
* A partial implementation of the {@link Message.Builder} interface which |
* implements as many methods of that interface as possible in terms of |
* other methods. |
*/ |
@SuppressWarnings("unchecked") |
public static abstract class Builder<BuilderType extends Builder> |
implements MessageLite.Builder { |
// The compiler produces an error if this is not declared explicitly. |
@Override |
public abstract BuilderType clone(); |
public BuilderType mergeFrom(final CodedInputStream input) |
throws IOException { |
return mergeFrom(input, ExtensionRegistryLite.getEmptyRegistry()); |
} |
// Re-defined here for return type covariance. |
public abstract BuilderType mergeFrom( |
final CodedInputStream input, |
final ExtensionRegistryLite extensionRegistry) |
throws IOException; |
public BuilderType mergeFrom(final ByteString data) |
throws InvalidProtocolBufferException { |
try { |
final CodedInputStream input = data.newCodedInput(); |
mergeFrom(input); |
input.checkLastTagWas(0); |
return (BuilderType) this; |
} catch (InvalidProtocolBufferException e) { |
throw e; |
} catch (IOException e) { |
throw new RuntimeException( |
"Reading from a ByteString threw an IOException (should " + |
"never happen).", e); |
} |
} |
public BuilderType mergeFrom( |
final ByteString data, |
final ExtensionRegistryLite extensionRegistry) |
throws InvalidProtocolBufferException { |
try { |
final CodedInputStream input = data.newCodedInput(); |
mergeFrom(input, extensionRegistry); |
input.checkLastTagWas(0); |
return (BuilderType) this; |
} catch (InvalidProtocolBufferException e) { |
throw e; |
} catch (IOException e) { |
throw new RuntimeException( |
"Reading from a ByteString threw an IOException (should " + |
"never happen).", e); |
} |
} |
public BuilderType mergeFrom(final byte[] data) |
throws InvalidProtocolBufferException { |
return mergeFrom(data, 0, data.length); |
} |
public BuilderType mergeFrom(final byte[] data, final int off, |
final int len) |
throws InvalidProtocolBufferException { |
try { |
final CodedInputStream input = |
CodedInputStream.newInstance(data, off, len); |
mergeFrom(input); |
input.checkLastTagWas(0); |
return (BuilderType) this; |
} catch (InvalidProtocolBufferException e) { |
throw e; |
} catch (IOException e) { |
throw new RuntimeException( |
"Reading from a byte array threw an IOException (should " + |
"never happen).", e); |
} |
} |
public BuilderType mergeFrom( |
final byte[] data, |
final ExtensionRegistryLite extensionRegistry) |
throws InvalidProtocolBufferException { |
return mergeFrom(data, 0, data.length, extensionRegistry); |
} |
public BuilderType mergeFrom( |
final byte[] data, final int off, final int len, |
final ExtensionRegistryLite extensionRegistry) |
throws InvalidProtocolBufferException { |
try { |
final CodedInputStream input = |
CodedInputStream.newInstance(data, off, len); |
mergeFrom(input, extensionRegistry); |
input.checkLastTagWas(0); |
return (BuilderType) this; |
} catch (InvalidProtocolBufferException e) { |
throw e; |
} catch (IOException e) { |
throw new RuntimeException( |
"Reading from a byte array threw an IOException (should " + |
"never happen).", e); |
} |
} |
public BuilderType mergeFrom(final InputStream input) throws IOException { |
final CodedInputStream codedInput = CodedInputStream.newInstance(input); |
mergeFrom(codedInput); |
codedInput.checkLastTagWas(0); |
return (BuilderType) this; |
} |
public BuilderType mergeFrom( |
final InputStream input, |
final ExtensionRegistryLite extensionRegistry) |
throws IOException { |
final CodedInputStream codedInput = CodedInputStream.newInstance(input); |
mergeFrom(codedInput, extensionRegistry); |
codedInput.checkLastTagWas(0); |
return (BuilderType) this; |
} |
/** |
* An InputStream implementations which reads from some other InputStream |
* but is limited to a particular number of bytes. Used by |
* mergeDelimitedFrom(). This is intentionally package-private so that |
* UnknownFieldSet can share it. |
*/ |
static final class LimitedInputStream extends FilterInputStream { |
private int limit; |
LimitedInputStream(InputStream in, int limit) { |
super(in); |
this.limit = limit; |
} |
@Override |
public int available() throws IOException { |
return Math.min(super.available(), limit); |
} |
@Override |
public int read() throws IOException { |
if (limit <= 0) { |
return -1; |
} |
final int result = super.read(); |
if (result >= 0) { |
--limit; |
} |
return result; |
} |
@Override |
public int read(final byte[] b, final int off, int len) |
throws IOException { |
if (limit <= 0) { |
return -1; |
} |
len = Math.min(len, limit); |
final int result = super.read(b, off, len); |
if (result >= 0) { |
limit -= result; |
} |
return result; |
} |
@Override |
public long skip(final long n) throws IOException { |
final long result = super.skip(Math.min(n, limit)); |
if (result >= 0) { |
limit -= result; |
} |
return result; |
} |
} |
public boolean mergeDelimitedFrom( |
final InputStream input, |
final ExtensionRegistryLite extensionRegistry) |
throws IOException { |
final int firstByte = input.read(); |
if (firstByte == -1) { |
return false; |
} |
final int size = CodedInputStream.readRawVarint32(firstByte, input); |
final InputStream limitedInput = new LimitedInputStream(input, size); |
mergeFrom(limitedInput, extensionRegistry); |
return true; |
} |
public boolean mergeDelimitedFrom(final InputStream input) |
throws IOException { |
return mergeDelimitedFrom(input, |
ExtensionRegistryLite.getEmptyRegistry()); |
} |
/** |
* Construct an UninitializedMessageException reporting missing fields in |
* the given message. |
*/ |
protected static UninitializedMessageException |
newUninitializedMessageException(MessageLite message) { |
return new UninitializedMessageException(message); |
} |
/** |
* Adds the {@code values} to the {@code list}. This is a helper method |
* used by generated code. Users should ignore it. |
* |
* @throws NullPointerException if any of the elements of {@code values} is |
* null. |
*/ |
protected static <T> void addAll(final Iterable<T> values, |
final Collection<? super T> list) { |
for (final T value : values) { |
if (value == null) { |
throw new NullPointerException(); |
} |
} |
if (values instanceof Collection) { |
final Collection<T> collection = (Collection<T>) values; |
list.addAll(collection); |
} else { |
for (final T value : values) { |
list.add(value); |
} |
} |
} |
} |
} |
/Android Development/IOIODebugger/src/com/google/protobuf/BlockingRpcChannel.java |
---|
0,0 → 1,51 |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
// |
// * Redistributions of source code must retain the above copyright |
// notice, this list of conditions and the following disclaimer. |
// * Redistributions in binary form must reproduce the above |
// copyright notice, this list of conditions and the following disclaimer |
// in the documentation and/or other materials provided with the |
// distribution. |
// * Neither the name of Google Inc. nor the names of its |
// contributors may be used to endorse or promote products derived from |
// this software without specific prior written permission. |
// |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
package com.google.protobuf; |
/** |
* <p>Abstract interface for a blocking RPC channel. {@code BlockingRpcChannel} |
* is the blocking equivalent to {@link RpcChannel}. |
* |
* @author kenton@google.com Kenton Varda |
* @author cpovirk@google.com Chris Povirk |
*/ |
public interface BlockingRpcChannel { |
/** |
* Call the given method of the remote service and blocks until it returns. |
* {@code callBlockingMethod()} is the blocking equivalent to |
* {@link RpcChannel#callMethod}. |
*/ |
Message callBlockingMethod( |
Descriptors.MethodDescriptor method, |
RpcController controller, |
Message request, |
Message responsePrototype) throws ServiceException; |
} |
/Android Development/IOIODebugger/src/com/google/protobuf/BlockingService.java |
---|
0,0 → 1,64 |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
// |
// * Redistributions of source code must retain the above copyright |
// notice, this list of conditions and the following disclaimer. |
// * Redistributions in binary form must reproduce the above |
// copyright notice, this list of conditions and the following disclaimer |
// in the documentation and/or other materials provided with the |
// distribution. |
// * Neither the name of Google Inc. nor the names of its |
// contributors may be used to endorse or promote products derived from |
// this software without specific prior written permission. |
// |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
package com.google.protobuf; |
/** |
* Blocking equivalent to {@link Service}. |
* |
* @author kenton@google.com Kenton Varda |
* @author cpovirk@google.com Chris Povirk |
*/ |
public interface BlockingService { |
/** |
* Equivalent to {@link Service#getDescriptorForType}. |
*/ |
Descriptors.ServiceDescriptor getDescriptorForType(); |
/** |
* Equivalent to {@link Service#callMethod}, except that |
* {@code callBlockingMethod()} returns the result of the RPC or throws a |
* {@link ServiceException} if there is a failure, rather than passing the |
* information to a callback. |
*/ |
Message callBlockingMethod(Descriptors.MethodDescriptor method, |
RpcController controller, |
Message request) throws ServiceException; |
/** |
* Equivalent to {@link Service#getRequestPrototype}. |
*/ |
Message getRequestPrototype(Descriptors.MethodDescriptor method); |
/** |
* Equivalent to {@link Service#getResponsePrototype}. |
*/ |
Message getResponsePrototype(Descriptors.MethodDescriptor method); |
} |
/Android Development/IOIODebugger/src/com/google/protobuf/ByteString.java |
---|
0,0 → 1,403 |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
// |
// * Redistributions of source code must retain the above copyright |
// notice, this list of conditions and the following disclaimer. |
// * Redistributions in binary form must reproduce the above |
// copyright notice, this list of conditions and the following disclaimer |
// in the documentation and/or other materials provided with the |
// distribution. |
// * Neither the name of Google Inc. nor the names of its |
// contributors may be used to endorse or promote products derived from |
// this software without specific prior written permission. |
// |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
package com.google.protobuf; |
import java.io.InputStream; |
import java.io.ByteArrayInputStream; |
import java.io.ByteArrayOutputStream; |
import java.io.FilterOutputStream; |
import java.io.UnsupportedEncodingException; |
import java.nio.ByteBuffer; |
import java.util.List; |
/** |
* Immutable array of bytes. |
* |
* @author crazybob@google.com Bob Lee |
* @author kenton@google.com Kenton Varda |
*/ |
public final class ByteString { |
private final byte[] bytes; |
private ByteString(final byte[] bytes) { |
this.bytes = bytes; |
} |
/** |
* Gets the byte at the given index. |
* |
* @throws ArrayIndexOutOfBoundsException {@code index} is < 0 or >= size |
*/ |
public byte byteAt(final int index) { |
return bytes[index]; |
} |
/** |
* Gets the number of bytes. |
*/ |
public int size() { |
return bytes.length; |
} |
/** |
* Returns {@code true} if the size is {@code 0}, {@code false} otherwise. |
*/ |
public boolean isEmpty() { |
return bytes.length == 0; |
} |
// ================================================================= |
// byte[] -> ByteString |
/** |
* Empty ByteString. |
*/ |
public static final ByteString EMPTY = new ByteString(new byte[0]); |
/** |
* Copies the given bytes into a {@code ByteString}. |
*/ |
public static ByteString copyFrom(final byte[] bytes, final int offset, |
final int size) { |
final byte[] copy = new byte[size]; |
System.arraycopy(bytes, offset, copy, 0, size); |
return new ByteString(copy); |
} |
/** |
* Copies the given bytes into a {@code ByteString}. |
*/ |
public static ByteString copyFrom(final byte[] bytes) { |
return copyFrom(bytes, 0, bytes.length); |
} |
/** |
* Copies {@code size} bytes from a {@code java.nio.ByteBuffer} into |
* a {@code ByteString}. |
*/ |
public static ByteString copyFrom(final ByteBuffer bytes, final int size) { |
final byte[] copy = new byte[size]; |
bytes.get(copy); |
return new ByteString(copy); |
} |
/** |
* Copies the remaining bytes from a {@code java.nio.ByteBuffer} into |
* a {@code ByteString}. |
*/ |
public static ByteString copyFrom(final ByteBuffer bytes) { |
return copyFrom(bytes, bytes.remaining()); |
} |
/** |
* Encodes {@code text} into a sequence of bytes using the named charset |
* and returns the result as a {@code ByteString}. |
*/ |
public static ByteString copyFrom(final String text, final String charsetName) |
throws UnsupportedEncodingException { |
return new ByteString(text.getBytes(charsetName)); |
} |
/** |
* Encodes {@code text} into a sequence of UTF-8 bytes and returns the |
* result as a {@code ByteString}. |
*/ |
public static ByteString copyFromUtf8(final String text) { |
try { |
return new ByteString(text.getBytes("UTF-8")); |
} catch (UnsupportedEncodingException e) { |
throw new RuntimeException("UTF-8 not supported?", e); |
} |
} |
/** |
* Concatenates all byte strings in the list and returns the result. |
* |
* <p>The returned {@code ByteString} is not necessarily a unique object. |
* If the list is empty, the returned object is the singleton empty |
* {@code ByteString}. If the list has only one element, that |
* {@code ByteString} will be returned without copying. |
*/ |
public static ByteString copyFrom(List<ByteString> list) { |
if (list.size() == 0) { |
return EMPTY; |
} else if (list.size() == 1) { |
return list.get(0); |
} |
int size = 0; |
for (ByteString str : list) { |
size += str.size(); |
} |
byte[] bytes = new byte[size]; |
int pos = 0; |
for (ByteString str : list) { |
System.arraycopy(str.bytes, 0, bytes, pos, str.size()); |
pos += str.size(); |
} |
return new ByteString(bytes); |
} |
// ================================================================= |
// ByteString -> byte[] |
/** |
* Copies bytes into a buffer at the given offset. |
* |
* @param target buffer to copy into |
* @param offset in the target buffer |
*/ |
public void copyTo(final byte[] target, final int offset) { |
System.arraycopy(bytes, 0, target, offset, bytes.length); |
} |
/** |
* Copies bytes into a buffer. |
* |
* @param target buffer to copy into |
* @param sourceOffset offset within these bytes |
* @param targetOffset offset within the target buffer |
* @param size number of bytes to copy |
*/ |
public void copyTo(final byte[] target, final int sourceOffset, |
final int targetOffset, |
final int size) { |
System.arraycopy(bytes, sourceOffset, target, targetOffset, size); |
} |
/** |
* Copies bytes into a ByteBuffer. |
* |
* @param target ByteBuffer to copy into. |
* @throws ReadOnlyBufferException if the {@code target} is read-only |
* @throws BufferOverflowException if the {@code target}'s remaining() |
* space is not large enough to hold the data. |
*/ |
public void copyTo(ByteBuffer target) { |
target.put(bytes, 0, bytes.length); |
} |
/** |
* Copies bytes to a {@code byte[]}. |
*/ |
public byte[] toByteArray() { |
final int size = bytes.length; |
final byte[] copy = new byte[size]; |
System.arraycopy(bytes, 0, copy, 0, size); |
return copy; |
} |
/** |
* Constructs a new read-only {@code java.nio.ByteBuffer} with the |
* same backing byte array. |
*/ |
public ByteBuffer asReadOnlyByteBuffer() { |
final ByteBuffer byteBuffer = ByteBuffer.wrap(bytes); |
return byteBuffer.asReadOnlyBuffer(); |
} |
/** |
* Constructs a new {@code String} by decoding the bytes using the |
* specified charset. |
*/ |
public String toString(final String charsetName) |
throws UnsupportedEncodingException { |
return new String(bytes, charsetName); |
} |
/** |
* Constructs a new {@code String} by decoding the bytes as UTF-8. |
*/ |
public String toStringUtf8() { |
try { |
return new String(bytes, "UTF-8"); |
} catch (UnsupportedEncodingException e) { |
throw new RuntimeException("UTF-8 not supported?", e); |
} |
} |
// ================================================================= |
// equals() and hashCode() |
@Override |
public boolean equals(final Object o) { |
if (o == this) { |
return true; |
} |
if (!(o instanceof ByteString)) { |
return false; |
} |
final ByteString other = (ByteString) o; |
final int size = bytes.length; |
if (size != other.bytes.length) { |
return false; |
} |
final byte[] thisBytes = bytes; |
final byte[] otherBytes = other.bytes; |
for (int i = 0; i < size; i++) { |
if (thisBytes[i] != otherBytes[i]) { |
return false; |
} |
} |
return true; |
} |
private volatile int hash = 0; |
@Override |
public int hashCode() { |
int h = hash; |
if (h == 0) { |
final byte[] thisBytes = bytes; |
final int size = bytes.length; |
h = size; |
for (int i = 0; i < size; i++) { |
h = h * 31 + thisBytes[i]; |
} |
if (h == 0) { |
h = 1; |
} |
hash = h; |
} |
return h; |
} |
// ================================================================= |
// Input stream |
/** |
* Creates an {@code InputStream} which can be used to read the bytes. |
*/ |
public InputStream newInput() { |
return new ByteArrayInputStream(bytes); |
} |
/** |
* Creates a {@link CodedInputStream} which can be used to read the bytes. |
* Using this is more efficient than creating a {@link CodedInputStream} |
* wrapping the result of {@link #newInput()}. |
*/ |
public CodedInputStream newCodedInput() { |
// We trust CodedInputStream not to modify the bytes, or to give anyone |
// else access to them. |
return CodedInputStream.newInstance(bytes); |
} |
// ================================================================= |
// Output stream |
/** |
* Creates a new {@link Output} with the given initial capacity. |
*/ |
public static Output newOutput(final int initialCapacity) { |
return new Output(new ByteArrayOutputStream(initialCapacity)); |
} |
/** |
* Creates a new {@link Output}. |
*/ |
public static Output newOutput() { |
return newOutput(32); |
} |
/** |
* Outputs to a {@code ByteString} instance. Call {@link #toByteString()} to |
* create the {@code ByteString} instance. |
*/ |
public static final class Output extends FilterOutputStream { |
private final ByteArrayOutputStream bout; |
/** |
* Constructs a new output with the given initial capacity. |
*/ |
private Output(final ByteArrayOutputStream bout) { |
super(bout); |
this.bout = bout; |
} |
/** |
* Creates a {@code ByteString} instance from this {@code Output}. |
*/ |
public ByteString toByteString() { |
final byte[] byteArray = bout.toByteArray(); |
return new ByteString(byteArray); |
} |
} |
/** |
* Constructs a new ByteString builder, which allows you to efficiently |
* construct a {@code ByteString} by writing to a {@link CodedOutputStream}. |
* Using this is much more efficient than calling {@code newOutput()} and |
* wrapping that in a {@code CodedOutputStream}. |
* |
* <p>This is package-private because it's a somewhat confusing interface. |
* Users can call {@link Message#toByteString()} instead of calling this |
* directly. |
* |
* @param size The target byte size of the {@code ByteString}. You must |
* write exactly this many bytes before building the result. |
*/ |
static CodedBuilder newCodedBuilder(final int size) { |
return new CodedBuilder(size); |
} |
/** See {@link ByteString#newCodedBuilder(int)}. */ |
static final class CodedBuilder { |
private final CodedOutputStream output; |
private final byte[] buffer; |
private CodedBuilder(final int size) { |
buffer = new byte[size]; |
output = CodedOutputStream.newInstance(buffer); |
} |
public ByteString build() { |
output.checkNoSpaceLeft(); |
// We can be confident that the CodedOutputStream will not modify the |
// underlying bytes anymore because it already wrote all of them. So, |
// no need to make a copy. |
return new ByteString(buffer); |
} |
public CodedOutputStream getCodedOutput() { |
return output; |
} |
} |
} |
/Android Development/IOIODebugger/src/com/google/protobuf/CodedInputStream.java |
---|
0,0 → 1,885 |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
// |
// * Redistributions of source code must retain the above copyright |
// notice, this list of conditions and the following disclaimer. |
// * Redistributions in binary form must reproduce the above |
// copyright notice, this list of conditions and the following disclaimer |
// in the documentation and/or other materials provided with the |
// distribution. |
// * Neither the name of Google Inc. nor the names of its |
// contributors may be used to endorse or promote products derived from |
// this software without specific prior written permission. |
// |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
package com.google.protobuf; |
import java.io.IOException; |
import java.io.InputStream; |
import java.util.ArrayList; |
import java.util.List; |
/** |
* Reads and decodes protocol message fields. |
* |
* This class contains two kinds of methods: methods that read specific |
* protocol message constructs and field types (e.g. {@link #readTag()} and |
* {@link #readInt32()}) and methods that read low-level values (e.g. |
* {@link #readRawVarint32()} and {@link #readRawBytes}). If you are reading |
* encoded protocol messages, you should use the former methods, but if you are |
* reading some other format of your own design, use the latter. |
* |
* @author kenton@google.com Kenton Varda |
*/ |
public final class CodedInputStream { |
/** |
* Create a new CodedInputStream wrapping the given InputStream. |
*/ |
public static CodedInputStream newInstance(final InputStream input) { |
return new CodedInputStream(input); |
} |
/** |
* Create a new CodedInputStream wrapping the given byte array. |
*/ |
public static CodedInputStream newInstance(final byte[] buf) { |
return newInstance(buf, 0, buf.length); |
} |
/** |
* Create a new CodedInputStream wrapping the given byte array slice. |
*/ |
public static CodedInputStream newInstance(final byte[] buf, final int off, |
final int len) { |
CodedInputStream result = new CodedInputStream(buf, off, len); |
try { |
// Some uses of CodedInputStream can be more efficient if they know |
// exactly how many bytes are available. By pushing the end point of the |
// buffer as a limit, we allow them to get this information via |
// getBytesUntilLimit(). Pushing a limit that we know is at the end of |
// the stream can never hurt, since we can never past that point anyway. |
result.pushLimit(len); |
} catch (InvalidProtocolBufferException ex) { |
// The only reason pushLimit() might throw an exception here is if len |
// is negative. Normally pushLimit()'s parameter comes directly off the |
// wire, so it's important to catch exceptions in case of corrupt or |
// malicious data. However, in this case, we expect that len is not a |
// user-supplied value, so we can assume that it being negative indicates |
// a programming error. Therefore, throwing an unchecked exception is |
// appropriate. |
throw new IllegalArgumentException(ex); |
} |
return result; |
} |
// ----------------------------------------------------------------- |
/** |
* Attempt to read a field tag, returning zero if we have reached EOF. |
* Protocol message parsers use this to read tags, since a protocol message |
* may legally end wherever a tag occurs, and zero is not a valid tag number. |
*/ |
public int readTag() throws IOException { |
if (isAtEnd()) { |
lastTag = 0; |
return 0; |
} |
lastTag = readRawVarint32(); |
if (WireFormat.getTagFieldNumber(lastTag) == 0) { |
// If we actually read zero (or any tag number corresponding to field |
// number zero), that's not a valid tag. |
throw InvalidProtocolBufferException.invalidTag(); |
} |
return lastTag; |
} |
/** |
* Verifies that the last call to readTag() returned the given tag value. |
* This is used to verify that a nested group ended with the correct |
* end tag. |
* |
* @throws InvalidProtocolBufferException {@code value} does not match the |
* last tag. |
*/ |
public void checkLastTagWas(final int value) |
throws InvalidProtocolBufferException { |
if (lastTag != value) { |
throw InvalidProtocolBufferException.invalidEndTag(); |
} |
} |
/** |
* Reads and discards a single field, given its tag value. |
* |
* @return {@code false} if the tag is an endgroup tag, in which case |
* nothing is skipped. Otherwise, returns {@code true}. |
*/ |
public boolean skipField(final int tag) throws IOException { |
switch (WireFormat.getTagWireType(tag)) { |
case WireFormat.WIRETYPE_VARINT: |
readInt32(); |
return true; |
case WireFormat.WIRETYPE_FIXED64: |
readRawLittleEndian64(); |
return true; |
case WireFormat.WIRETYPE_LENGTH_DELIMITED: |
skipRawBytes(readRawVarint32()); |
return true; |
case WireFormat.WIRETYPE_START_GROUP: |
skipMessage(); |
checkLastTagWas( |
WireFormat.makeTag(WireFormat.getTagFieldNumber(tag), |
WireFormat.WIRETYPE_END_GROUP)); |
return true; |
case WireFormat.WIRETYPE_END_GROUP: |
return false; |
case WireFormat.WIRETYPE_FIXED32: |
readRawLittleEndian32(); |
return true; |
default: |
throw InvalidProtocolBufferException.invalidWireType(); |
} |
} |
/** |
* Reads and discards an entire message. This will read either until EOF |
* or until an endgroup tag, whichever comes first. |
*/ |
public void skipMessage() throws IOException { |
while (true) { |
final int tag = readTag(); |
if (tag == 0 || !skipField(tag)) { |
return; |
} |
} |
} |
// ----------------------------------------------------------------- |
/** Read a {@code double} field value from the stream. */ |
public double readDouble() throws IOException { |
return Double.longBitsToDouble(readRawLittleEndian64()); |
} |
/** Read a {@code float} field value from the stream. */ |
public float readFloat() throws IOException { |
return Float.intBitsToFloat(readRawLittleEndian32()); |
} |
/** Read a {@code uint64} field value from the stream. */ |
public long readUInt64() throws IOException { |
return readRawVarint64(); |
} |
/** Read an {@code int64} field value from the stream. */ |
public long readInt64() throws IOException { |
return readRawVarint64(); |
} |
/** Read an {@code int32} field value from the stream. */ |
public int readInt32() throws IOException { |
return readRawVarint32(); |
} |
/** Read a {@code fixed64} field value from the stream. */ |
public long readFixed64() throws IOException { |
return readRawLittleEndian64(); |
} |
/** Read a {@code fixed32} field value from the stream. */ |
public int readFixed32() throws IOException { |
return readRawLittleEndian32(); |
} |
/** Read a {@code bool} field value from the stream. */ |
public boolean readBool() throws IOException { |
return readRawVarint32() != 0; |
} |
/** Read a {@code string} field value from the stream. */ |
public String readString() throws IOException { |
final int size = readRawVarint32(); |
if (size <= (bufferSize - bufferPos) && size > 0) { |
// Fast path: We already have the bytes in a contiguous buffer, so |
// just copy directly from it. |
final String result = new String(buffer, bufferPos, size, "UTF-8"); |
bufferPos += size; |
return result; |
} else { |
// Slow path: Build a byte array first then copy it. |
return new String(readRawBytes(size), "UTF-8"); |
} |
} |
/** Read a {@code group} field value from the stream. */ |
public void readGroup(final int fieldNumber, |
final MessageLite.Builder builder, |
final ExtensionRegistryLite extensionRegistry) |
throws IOException { |
if (recursionDepth >= recursionLimit) { |
throw InvalidProtocolBufferException.recursionLimitExceeded(); |
} |
++recursionDepth; |
builder.mergeFrom(this, extensionRegistry); |
checkLastTagWas( |
WireFormat.makeTag(fieldNumber, WireFormat.WIRETYPE_END_GROUP)); |
--recursionDepth; |
} |
/** |
* Reads a {@code group} field value from the stream and merges it into the |
* given {@link UnknownFieldSet}. |
* |
* @deprecated UnknownFieldSet.Builder now implements MessageLite.Builder, so |
* you can just call {@link #readGroup}. |
*/ |
@Deprecated |
public void readUnknownGroup(final int fieldNumber, |
final MessageLite.Builder builder) |
throws IOException { |
// We know that UnknownFieldSet will ignore any ExtensionRegistry so it |
// is safe to pass null here. (We can't call |
// ExtensionRegistry.getEmptyRegistry() because that would make this |
// class depend on ExtensionRegistry, which is not part of the lite |
// library.) |
readGroup(fieldNumber, builder, null); |
} |
/** Read an embedded message field value from the stream. */ |
public void readMessage(final MessageLite.Builder builder, |
final ExtensionRegistryLite extensionRegistry) |
throws IOException { |
final int length = readRawVarint32(); |
if (recursionDepth >= recursionLimit) { |
throw InvalidProtocolBufferException.recursionLimitExceeded(); |
} |
final int oldLimit = pushLimit(length); |
++recursionDepth; |
builder.mergeFrom(this, extensionRegistry); |
checkLastTagWas(0); |
--recursionDepth; |
popLimit(oldLimit); |
} |
/** Read a {@code bytes} field value from the stream. */ |
public ByteString readBytes() throws IOException { |
final int size = readRawVarint32(); |
if (size == 0) { |
return ByteString.EMPTY; |
} else if (size <= (bufferSize - bufferPos) && size > 0) { |
// Fast path: We already have the bytes in a contiguous buffer, so |
// just copy directly from it. |
final ByteString result = ByteString.copyFrom(buffer, bufferPos, size); |
bufferPos += size; |
return result; |
} else { |
// Slow path: Build a byte array first then copy it. |
return ByteString.copyFrom(readRawBytes(size)); |
} |
} |
/** Read a {@code uint32} field value from the stream. */ |
public int readUInt32() throws IOException { |
return readRawVarint32(); |
} |
/** |
* Read an enum field value from the stream. Caller is responsible |
* for converting the numeric value to an actual enum. |
*/ |
public int readEnum() throws IOException { |
return readRawVarint32(); |
} |
/** Read an {@code sfixed32} field value from the stream. */ |
public int readSFixed32() throws IOException { |
return readRawLittleEndian32(); |
} |
/** Read an {@code sfixed64} field value from the stream. */ |
public long readSFixed64() throws IOException { |
return readRawLittleEndian64(); |
} |
/** Read an {@code sint32} field value from the stream. */ |
public int readSInt32() throws IOException { |
return decodeZigZag32(readRawVarint32()); |
} |
/** Read an {@code sint64} field value from the stream. */ |
public long readSInt64() throws IOException { |
return decodeZigZag64(readRawVarint64()); |
} |
// ================================================================= |
/** |
* Read a raw Varint from the stream. If larger than 32 bits, discard the |
* upper bits. |
*/ |
public int readRawVarint32() throws IOException { |
byte tmp = readRawByte(); |
if (tmp >= 0) { |
return tmp; |
} |
int result = tmp & 0x7f; |
if ((tmp = readRawByte()) >= 0) { |
result |= tmp << 7; |
} else { |
result |= (tmp & 0x7f) << 7; |
if ((tmp = readRawByte()) >= 0) { |
result |= tmp << 14; |
} else { |
result |= (tmp & 0x7f) << 14; |
if ((tmp = readRawByte()) >= 0) { |
result |= tmp << 21; |
} else { |
result |= (tmp & 0x7f) << 21; |
result |= (tmp = readRawByte()) << 28; |
if (tmp < 0) { |
// Discard upper 32 bits. |
for (int i = 0; i < 5; i++) { |
if (readRawByte() >= 0) { |
return result; |
} |
} |
throw InvalidProtocolBufferException.malformedVarint(); |
} |
} |
} |
} |
return result; |
} |
/** |
* Reads a varint from the input one byte at a time, so that it does not |
* read any bytes after the end of the varint. If you simply wrapped the |
* stream in a CodedInputStream and used {@link #readRawVarint32(InputStream)} |
* then you would probably end up reading past the end of the varint since |
* CodedInputStream buffers its input. |
*/ |
static int readRawVarint32(final InputStream input) throws IOException { |
final int firstByte = input.read(); |
if (firstByte == -1) { |
throw InvalidProtocolBufferException.truncatedMessage(); |
} |
return readRawVarint32(firstByte, input); |
} |
/** |
* Like {@link #readRawVarint32(InputStream)}, but expects that the caller |
* has already read one byte. This allows the caller to determine if EOF |
* has been reached before attempting to read. |
*/ |
public static int readRawVarint32( |
final int firstByte, final InputStream input) throws IOException { |
if ((firstByte & 0x80) == 0) { |
return firstByte; |
} |
int result = firstByte & 0x7f; |
int offset = 7; |
for (; offset < 32; offset += 7) { |
final int b = input.read(); |
if (b == -1) { |
throw InvalidProtocolBufferException.truncatedMessage(); |
} |
result |= (b & 0x7f) << offset; |
if ((b & 0x80) == 0) { |
return result; |
} |
} |
// Keep reading up to 64 bits. |
for (; offset < 64; offset += 7) { |
final int b = input.read(); |
if (b == -1) { |
throw InvalidProtocolBufferException.truncatedMessage(); |
} |
if ((b & 0x80) == 0) { |
return result; |
} |
} |
throw InvalidProtocolBufferException.malformedVarint(); |
} |
/** Read a raw Varint from the stream. */ |
public long readRawVarint64() throws IOException { |
int shift = 0; |
long result = 0; |
while (shift < 64) { |
final byte b = readRawByte(); |
result |= (long)(b & 0x7F) << shift; |
if ((b & 0x80) == 0) { |
return result; |
} |
shift += 7; |
} |
throw InvalidProtocolBufferException.malformedVarint(); |
} |
/** Read a 32-bit little-endian integer from the stream. */ |
public int readRawLittleEndian32() throws IOException { |
final byte b1 = readRawByte(); |
final byte b2 = readRawByte(); |
final byte b3 = readRawByte(); |
final byte b4 = readRawByte(); |
return (((int)b1 & 0xff) ) | |
(((int)b2 & 0xff) << 8) | |
(((int)b3 & 0xff) << 16) | |
(((int)b4 & 0xff) << 24); |
} |
/** Read a 64-bit little-endian integer from the stream. */ |
public long readRawLittleEndian64() throws IOException { |
final byte b1 = readRawByte(); |
final byte b2 = readRawByte(); |
final byte b3 = readRawByte(); |
final byte b4 = readRawByte(); |
final byte b5 = readRawByte(); |
final byte b6 = readRawByte(); |
final byte b7 = readRawByte(); |
final byte b8 = readRawByte(); |
return (((long)b1 & 0xff) ) | |
(((long)b2 & 0xff) << 8) | |
(((long)b3 & 0xff) << 16) | |
(((long)b4 & 0xff) << 24) | |
(((long)b5 & 0xff) << 32) | |
(((long)b6 & 0xff) << 40) | |
(((long)b7 & 0xff) << 48) | |
(((long)b8 & 0xff) << 56); |
} |
/** |
* Decode a ZigZag-encoded 32-bit value. ZigZag encodes signed integers |
* into values that can be efficiently encoded with varint. (Otherwise, |
* negative values must be sign-extended to 64 bits to be varint encoded, |
* thus always taking 10 bytes on the wire.) |
* |
* @param n An unsigned 32-bit integer, stored in a signed int because |
* Java has no explicit unsigned support. |
* @return A signed 32-bit integer. |
*/ |
public static int decodeZigZag32(final int n) { |
return (n >>> 1) ^ -(n & 1); |
} |
/** |
* Decode a ZigZag-encoded 64-bit value. ZigZag encodes signed integers |
* into values that can be efficiently encoded with varint. (Otherwise, |
* negative values must be sign-extended to 64 bits to be varint encoded, |
* thus always taking 10 bytes on the wire.) |
* |
* @param n An unsigned 64-bit integer, stored in a signed int because |
* Java has no explicit unsigned support. |
* @return A signed 64-bit integer. |
*/ |
public static long decodeZigZag64(final long n) { |
return (n >>> 1) ^ -(n & 1); |
} |
// ----------------------------------------------------------------- |
private final byte[] buffer; |
private int bufferSize; |
private int bufferSizeAfterLimit; |
private int bufferPos; |
private final InputStream input; |
private int lastTag; |
/** |
* The total number of bytes read before the current buffer. The total |
* bytes read up to the current position can be computed as |
* {@code totalBytesRetired + bufferPos}. This value may be negative if |
* reading started in the middle of the current buffer (e.g. if the |
* constructor that takes a byte array and an offset was used). |
*/ |
private int totalBytesRetired; |
/** The absolute position of the end of the current message. */ |
private int currentLimit = Integer.MAX_VALUE; |
/** See setRecursionLimit() */ |
private int recursionDepth; |
private int recursionLimit = DEFAULT_RECURSION_LIMIT; |
/** See setSizeLimit() */ |
private int sizeLimit = DEFAULT_SIZE_LIMIT; |
private static final int DEFAULT_RECURSION_LIMIT = 64; |
private static final int DEFAULT_SIZE_LIMIT = 64 << 20; // 64MB |
private static final int BUFFER_SIZE = 4096; |
private CodedInputStream(final byte[] buffer, final int off, final int len) { |
this.buffer = buffer; |
bufferSize = off + len; |
bufferPos = off; |
totalBytesRetired = -off; |
input = null; |
} |
private CodedInputStream(final InputStream input) { |
buffer = new byte[BUFFER_SIZE]; |
bufferSize = 0; |
bufferPos = 0; |
totalBytesRetired = 0; |
this.input = input; |
} |
/** |
* Set the maximum message recursion depth. In order to prevent malicious |
* messages from causing stack overflows, {@code CodedInputStream} limits |
* how deeply messages may be nested. The default limit is 64. |
* |
* @return the old limit. |
*/ |
public int setRecursionLimit(final int limit) { |
if (limit < 0) { |
throw new IllegalArgumentException( |
"Recursion limit cannot be negative: " + limit); |
} |
final int oldLimit = recursionLimit; |
recursionLimit = limit; |
return oldLimit; |
} |
/** |
* Set the maximum message size. In order to prevent malicious |
* messages from exhausting memory or causing integer overflows, |
* {@code CodedInputStream} limits how large a message may be. |
* The default limit is 64MB. You should set this limit as small |
* as you can without harming your app's functionality. Note that |
* size limits only apply when reading from an {@code InputStream}, not |
* when constructed around a raw byte array (nor with |
* {@link ByteString#newCodedInput}). |
* <p> |
* If you want to read several messages from a single CodedInputStream, you |
* could call {@link #resetSizeCounter()} after each one to avoid hitting the |
* size limit. |
* |
* @return the old limit. |
*/ |
public int setSizeLimit(final int limit) { |
if (limit < 0) { |
throw new IllegalArgumentException( |
"Size limit cannot be negative: " + limit); |
} |
final int oldLimit = sizeLimit; |
sizeLimit = limit; |
return oldLimit; |
} |
/** |
* Resets the current size counter to zero (see {@link #setSizeLimit(int)}). |
*/ |
public void resetSizeCounter() { |
totalBytesRetired = -bufferPos; |
} |
/** |
* Sets {@code currentLimit} to (current position) + {@code byteLimit}. This |
* is called when descending into a length-delimited embedded message. |
* |
* <p>Note that {@code pushLimit()} does NOT affect how many bytes the |
* {@code CodedInputStream} reads from an underlying {@code InputStream} when |
* refreshing its buffer. If you need to prevent reading past a certain |
* point in the underlying {@code InputStream} (e.g. because you expect it to |
* contain more data after the end of the message which you need to handle |
* differently) then you must place a wrapper around you {@code InputStream} |
* which limits the amount of data that can be read from it. |
* |
* @return the old limit. |
*/ |
public int pushLimit(int byteLimit) throws InvalidProtocolBufferException { |
if (byteLimit < 0) { |
throw InvalidProtocolBufferException.negativeSize(); |
} |
byteLimit += totalBytesRetired + bufferPos; |
final int oldLimit = currentLimit; |
if (byteLimit > oldLimit) { |
throw InvalidProtocolBufferException.truncatedMessage(); |
} |
currentLimit = byteLimit; |
recomputeBufferSizeAfterLimit(); |
return oldLimit; |
} |
private void recomputeBufferSizeAfterLimit() { |
bufferSize += bufferSizeAfterLimit; |
final int bufferEnd = totalBytesRetired + bufferSize; |
if (bufferEnd > currentLimit) { |
// Limit is in current buffer. |
bufferSizeAfterLimit = bufferEnd - currentLimit; |
bufferSize -= bufferSizeAfterLimit; |
} else { |
bufferSizeAfterLimit = 0; |
} |
} |
/** |
* Discards the current limit, returning to the previous limit. |
* |
* @param oldLimit The old limit, as returned by {@code pushLimit}. |
*/ |
public void popLimit(final int oldLimit) { |
currentLimit = oldLimit; |
recomputeBufferSizeAfterLimit(); |
} |
/** |
* Returns the number of bytes to be read before the current limit. |
* If no limit is set, returns -1. |
*/ |
public int getBytesUntilLimit() { |
if (currentLimit == Integer.MAX_VALUE) { |
return -1; |
} |
final int currentAbsolutePosition = totalBytesRetired + bufferPos; |
return currentLimit - currentAbsolutePosition; |
} |
/** |
* Returns true if the stream has reached the end of the input. This is the |
* case if either the end of the underlying input source has been reached or |
* if the stream has reached a limit created using {@link #pushLimit(int)}. |
*/ |
public boolean isAtEnd() throws IOException { |
return bufferPos == bufferSize && !refillBuffer(false); |
} |
/** |
* The total bytes read up to the current position. Calling |
* {@link #resetSizeCounter()} resets this value to zero. |
*/ |
public int getTotalBytesRead() { |
return totalBytesRetired + bufferPos; |
} |
/** |
* Called with {@code this.buffer} is empty to read more bytes from the |
* input. If {@code mustSucceed} is true, refillBuffer() gurantees that |
* either there will be at least one byte in the buffer when it returns |
* or it will throw an exception. If {@code mustSucceed} is false, |
* refillBuffer() returns false if no more bytes were available. |
*/ |
private boolean refillBuffer(final boolean mustSucceed) throws IOException { |
if (bufferPos < bufferSize) { |
throw new IllegalStateException( |
"refillBuffer() called when buffer wasn't empty."); |
} |
if (totalBytesRetired + bufferSize == currentLimit) { |
// Oops, we hit a limit. |
if (mustSucceed) { |
throw InvalidProtocolBufferException.truncatedMessage(); |
} else { |
return false; |
} |
} |
totalBytesRetired += bufferSize; |
bufferPos = 0; |
bufferSize = (input == null) ? -1 : input.read(buffer); |
if (bufferSize == 0 || bufferSize < -1) { |
throw new IllegalStateException( |
"InputStream#read(byte[]) returned invalid result: " + bufferSize + |
"\nThe InputStream implementation is buggy."); |
} |
if (bufferSize == -1) { |
bufferSize = 0; |
if (mustSucceed) { |
throw InvalidProtocolBufferException.truncatedMessage(); |
} else { |
return false; |
} |
} else { |
recomputeBufferSizeAfterLimit(); |
final int totalBytesRead = |
totalBytesRetired + bufferSize + bufferSizeAfterLimit; |
if (totalBytesRead > sizeLimit || totalBytesRead < 0) { |
throw InvalidProtocolBufferException.sizeLimitExceeded(); |
} |
return true; |
} |
} |
/** |
* Read one byte from the input. |
* |
* @throws InvalidProtocolBufferException The end of the stream or the current |
* limit was reached. |
*/ |
public byte readRawByte() throws IOException { |
if (bufferPos == bufferSize) { |
refillBuffer(true); |
} |
return buffer[bufferPos++]; |
} |
/** |
* Read a fixed size of bytes from the input. |
* |
* @throws InvalidProtocolBufferException The end of the stream or the current |
* limit was reached. |
*/ |
public byte[] readRawBytes(final int size) throws IOException { |
if (size < 0) { |
throw InvalidProtocolBufferException.negativeSize(); |
} |
if (totalBytesRetired + bufferPos + size > currentLimit) { |
// Read to the end of the stream anyway. |
skipRawBytes(currentLimit - totalBytesRetired - bufferPos); |
// Then fail. |
throw InvalidProtocolBufferException.truncatedMessage(); |
} |
if (size <= bufferSize - bufferPos) { |
// We have all the bytes we need already. |
final byte[] bytes = new byte[size]; |
System.arraycopy(buffer, bufferPos, bytes, 0, size); |
bufferPos += size; |
return bytes; |
} else if (size < BUFFER_SIZE) { |
// Reading more bytes than are in the buffer, but not an excessive number |
// of bytes. We can safely allocate the resulting array ahead of time. |
// First copy what we have. |
final byte[] bytes = new byte[size]; |
int pos = bufferSize - bufferPos; |
System.arraycopy(buffer, bufferPos, bytes, 0, pos); |
bufferPos = bufferSize; |
// We want to use refillBuffer() and then copy from the buffer into our |
// byte array rather than reading directly into our byte array because |
// the input may be unbuffered. |
refillBuffer(true); |
while (size - pos > bufferSize) { |
System.arraycopy(buffer, 0, bytes, pos, bufferSize); |
pos += bufferSize; |
bufferPos = bufferSize; |
refillBuffer(true); |
} |
System.arraycopy(buffer, 0, bytes, pos, size - pos); |
bufferPos = size - pos; |
return bytes; |
} else { |
// The size is very large. For security reasons, we can't allocate the |
// entire byte array yet. The size comes directly from the input, so a |
// maliciously-crafted message could provide a bogus very large size in |
// order to trick the app into allocating a lot of memory. We avoid this |
// by allocating and reading only a small chunk at a time, so that the |
// malicious message must actually *be* extremely large to cause |
// problems. Meanwhile, we limit the allowed size of a message elsewhere. |
// Remember the buffer markers since we'll have to copy the bytes out of |
// it later. |
final int originalBufferPos = bufferPos; |
final int originalBufferSize = bufferSize; |
// Mark the current buffer consumed. |
totalBytesRetired += bufferSize; |
bufferPos = 0; |
bufferSize = 0; |
// Read all the rest of the bytes we need. |
int sizeLeft = size - (originalBufferSize - originalBufferPos); |
final List<byte[]> chunks = new ArrayList<byte[]>(); |
while (sizeLeft > 0) { |
final byte[] chunk = new byte[Math.min(sizeLeft, BUFFER_SIZE)]; |
int pos = 0; |
while (pos < chunk.length) { |
final int n = (input == null) ? -1 : |
input.read(chunk, pos, chunk.length - pos); |
if (n == -1) { |
throw InvalidProtocolBufferException.truncatedMessage(); |
} |
totalBytesRetired += n; |
pos += n; |
} |
sizeLeft -= chunk.length; |
chunks.add(chunk); |
} |
// OK, got everything. Now concatenate it all into one buffer. |
final byte[] bytes = new byte[size]; |
// Start by copying the leftover bytes from this.buffer. |
int pos = originalBufferSize - originalBufferPos; |
System.arraycopy(buffer, originalBufferPos, bytes, 0, pos); |
// And now all the chunks. |
for (final byte[] chunk : chunks) { |
System.arraycopy(chunk, 0, bytes, pos, chunk.length); |
pos += chunk.length; |
} |
// Done. |
return bytes; |
} |
} |
/** |
* Reads and discards {@code size} bytes. |
* |
* @throws InvalidProtocolBufferException The end of the stream or the current |
* limit was reached. |
*/ |
public void skipRawBytes(final int size) throws IOException { |
if (size < 0) { |
throw InvalidProtocolBufferException.negativeSize(); |
} |
if (totalBytesRetired + bufferPos + size > currentLimit) { |
// Read to the end of the stream anyway. |
skipRawBytes(currentLimit - totalBytesRetired - bufferPos); |
// Then fail. |
throw InvalidProtocolBufferException.truncatedMessage(); |
} |
if (size <= bufferSize - bufferPos) { |
// We have all the bytes we need already. |
bufferPos += size; |
} else { |
// Skipping more bytes than are in the buffer. First skip what we have. |
int pos = bufferSize - bufferPos; |
bufferPos = bufferSize; |
// Keep refilling the buffer until we get to the point we wanted to skip |
// to. This has the side effect of ensuring the limits are updated |
// correctly. |
refillBuffer(true); |
while (size - pos > bufferSize) { |
pos += bufferSize; |
bufferPos = bufferSize; |
refillBuffer(true); |
} |
bufferPos = size - pos; |
} |
} |
} |
/Android Development/IOIODebugger/src/com/google/protobuf/CodedOutputStream.java |
---|
0,0 → 1,1081 |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
// |
// * Redistributions of source code must retain the above copyright |
// notice, this list of conditions and the following disclaimer. |
// * Redistributions in binary form must reproduce the above |
// copyright notice, this list of conditions and the following disclaimer |
// in the documentation and/or other materials provided with the |
// distribution. |
// * Neither the name of Google Inc. nor the names of its |
// contributors may be used to endorse or promote products derived from |
// this software without specific prior written permission. |
// |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
package com.google.protobuf; |
import java.io.OutputStream; |
import java.io.IOException; |
import java.io.UnsupportedEncodingException; |
import java.io.InputStream; |
/** |
* Encodes and writes protocol message fields. |
* |
* <p>This class contains two kinds of methods: methods that write specific |
* protocol message constructs and field types (e.g. {@link #writeTag} and |
* {@link #writeInt32}) and methods that write low-level values (e.g. |
* {@link #writeRawVarint32} and {@link #writeRawBytes}). If you are |
* writing encoded protocol messages, you should use the former methods, but if |
* you are writing some other format of your own design, use the latter. |
* |
* <p>This class is totally unsynchronized. |
* |
* @author kneton@google.com Kenton Varda |
*/ |
public final class CodedOutputStream { |
private final byte[] buffer; |
private final int limit; |
private int position; |
private final OutputStream output; |
/** |
* The buffer size used in {@link #newInstance(OutputStream)}. |
*/ |
public static final int DEFAULT_BUFFER_SIZE = 4096; |
/** |
* Returns the buffer size to efficiently write dataLength bytes to this |
* CodedOutputStream. Used by AbstractMessageLite. |
* |
* @return the buffer size to efficiently write dataLength bytes to this |
* CodedOutputStream. |
*/ |
static int computePreferredBufferSize(int dataLength) { |
if (dataLength > DEFAULT_BUFFER_SIZE) return DEFAULT_BUFFER_SIZE; |
return dataLength; |
} |
private CodedOutputStream(final byte[] buffer, final int offset, |
final int length) { |
output = null; |
this.buffer = buffer; |
position = offset; |
limit = offset + length; |
} |
private CodedOutputStream(final OutputStream output, final byte[] buffer) { |
this.output = output; |
this.buffer = buffer; |
position = 0; |
limit = buffer.length; |
} |
/** |
* Create a new {@code CodedOutputStream} wrapping the given |
* {@code OutputStream}. |
*/ |
public static CodedOutputStream newInstance(final OutputStream output) { |
return newInstance(output, DEFAULT_BUFFER_SIZE); |
} |
/** |
* Create a new {@code CodedOutputStream} wrapping the given |
* {@code OutputStream} with a given buffer size. |
*/ |
public static CodedOutputStream newInstance(final OutputStream output, |
final int bufferSize) { |
return new CodedOutputStream(output, new byte[bufferSize]); |
} |
/** |
* Create a new {@code CodedOutputStream} that writes directly to the given |
* byte array. If more bytes are written than fit in the array, |
* {@link OutOfSpaceException} will be thrown. Writing directly to a flat |
* array is faster than writing to an {@code OutputStream}. See also |
* {@link ByteString#newCodedBuilder}. |
*/ |
public static CodedOutputStream newInstance(final byte[] flatArray) { |
return newInstance(flatArray, 0, flatArray.length); |
} |
/** |
* Create a new {@code CodedOutputStream} that writes directly to the given |
* byte array slice. If more bytes are written than fit in the slice, |
* {@link OutOfSpaceException} will be thrown. Writing directly to a flat |
* array is faster than writing to an {@code OutputStream}. See also |
* {@link ByteString#newCodedBuilder}. |
*/ |
public static CodedOutputStream newInstance(final byte[] flatArray, |
final int offset, |
final int length) { |
return new CodedOutputStream(flatArray, offset, length); |
} |
// ----------------------------------------------------------------- |
/** Write a {@code double} field, including tag, to the stream. */ |
public void writeDouble(final int fieldNumber, final double value) |
throws IOException { |
writeTag(fieldNumber, WireFormat.WIRETYPE_FIXED64); |
writeDoubleNoTag(value); |
} |
/** Write a {@code float} field, including tag, to the stream. */ |
public void writeFloat(final int fieldNumber, final float value) |
throws IOException { |
writeTag(fieldNumber, WireFormat.WIRETYPE_FIXED32); |
writeFloatNoTag(value); |
} |
/** Write a {@code uint64} field, including tag, to the stream. */ |
public void writeUInt64(final int fieldNumber, final long value) |
throws IOException { |
writeTag(fieldNumber, WireFormat.WIRETYPE_VARINT); |
writeUInt64NoTag(value); |
} |
/** Write an {@code int64} field, including tag, to the stream. */ |
public void writeInt64(final int fieldNumber, final long value) |
throws IOException { |
writeTag(fieldNumber, WireFormat.WIRETYPE_VARINT); |
writeInt64NoTag(value); |
} |
/** Write an {@code int32} field, including tag, to the stream. */ |
public void writeInt32(final int fieldNumber, final int value) |
throws IOException { |
writeTag(fieldNumber, WireFormat.WIRETYPE_VARINT); |
writeInt32NoTag(value); |
} |
/** Write a {@code fixed64} field, including tag, to the stream. */ |
public void writeFixed64(final int fieldNumber, final long value) |
throws IOException { |
writeTag(fieldNumber, WireFormat.WIRETYPE_FIXED64); |
writeFixed64NoTag(value); |
} |
/** Write a {@code fixed32} field, including tag, to the stream. */ |
public void writeFixed32(final int fieldNumber, final int value) |
throws IOException { |
writeTag(fieldNumber, WireFormat.WIRETYPE_FIXED32); |
writeFixed32NoTag(value); |
} |
/** Write a {@code bool} field, including tag, to the stream. */ |
public void writeBool(final int fieldNumber, final boolean value) |
throws IOException { |
writeTag(fieldNumber, WireFormat.WIRETYPE_VARINT); |
writeBoolNoTag(value); |
} |
/** Write a {@code string} field, including tag, to the stream. */ |
public void writeString(final int fieldNumber, final String value) |
throws IOException { |
writeTag(fieldNumber, WireFormat.WIRETYPE_LENGTH_DELIMITED); |
writeStringNoTag(value); |
} |
/** Write a {@code group} field, including tag, to the stream. */ |
public void writeGroup(final int fieldNumber, final MessageLite value) |
throws IOException { |
writeTag(fieldNumber, WireFormat.WIRETYPE_START_GROUP); |
writeGroupNoTag(value); |
writeTag(fieldNumber, WireFormat.WIRETYPE_END_GROUP); |
} |
/** |
* Write a group represented by an {@link UnknownFieldSet}. |
* |
* @deprecated UnknownFieldSet now implements MessageLite, so you can just |
* call {@link #writeGroup}. |
*/ |
@Deprecated |
public void writeUnknownGroup(final int fieldNumber, |
final MessageLite value) |
throws IOException { |
writeGroup(fieldNumber, value); |
} |
/** Write an embedded message field, including tag, to the stream. */ |
public void writeMessage(final int fieldNumber, final MessageLite value) |
throws IOException { |
writeTag(fieldNumber, WireFormat.WIRETYPE_LENGTH_DELIMITED); |
writeMessageNoTag(value); |
} |
/** Write a {@code bytes} field, including tag, to the stream. */ |
public void writeBytes(final int fieldNumber, final ByteString value) |
throws IOException { |
writeTag(fieldNumber, WireFormat.WIRETYPE_LENGTH_DELIMITED); |
writeBytesNoTag(value); |
} |
/** Write a {@code uint32} field, including tag, to the stream. */ |
public void writeUInt32(final int fieldNumber, final int value) |
throws IOException { |
writeTag(fieldNumber, WireFormat.WIRETYPE_VARINT); |
writeUInt32NoTag(value); |
} |
/** |
* Write an enum field, including tag, to the stream. Caller is responsible |
* for converting the enum value to its numeric value. |
*/ |
public void writeEnum(final int fieldNumber, final int value) |
throws IOException { |
writeTag(fieldNumber, WireFormat.WIRETYPE_VARINT); |
writeEnumNoTag(value); |
} |
/** Write an {@code sfixed32} field, including tag, to the stream. */ |
public void writeSFixed32(final int fieldNumber, final int value) |
throws IOException { |
writeTag(fieldNumber, WireFormat.WIRETYPE_FIXED32); |
writeSFixed32NoTag(value); |
} |
/** Write an {@code sfixed64} field, including tag, to the stream. */ |
public void writeSFixed64(final int fieldNumber, final long value) |
throws IOException { |
writeTag(fieldNumber, WireFormat.WIRETYPE_FIXED64); |
writeSFixed64NoTag(value); |
} |
/** Write an {@code sint32} field, including tag, to the stream. */ |
public void writeSInt32(final int fieldNumber, final int value) |
throws IOException { |
writeTag(fieldNumber, WireFormat.WIRETYPE_VARINT); |
writeSInt32NoTag(value); |
} |
/** Write an {@code sint64} field, including tag, to the stream. */ |
public void writeSInt64(final int fieldNumber, final long value) |
throws IOException { |
writeTag(fieldNumber, WireFormat.WIRETYPE_VARINT); |
writeSInt64NoTag(value); |
} |
/** |
* Write a MessageSet extension field to the stream. For historical reasons, |
* the wire format differs from normal fields. |
*/ |
public void writeMessageSetExtension(final int fieldNumber, |
final MessageLite value) |
throws IOException { |
writeTag(WireFormat.MESSAGE_SET_ITEM, WireFormat.WIRETYPE_START_GROUP); |
writeUInt32(WireFormat.MESSAGE_SET_TYPE_ID, fieldNumber); |
writeMessage(WireFormat.MESSAGE_SET_MESSAGE, value); |
writeTag(WireFormat.MESSAGE_SET_ITEM, WireFormat.WIRETYPE_END_GROUP); |
} |
/** |
* Write an unparsed MessageSet extension field to the stream. For |
* historical reasons, the wire format differs from normal fields. |
*/ |
public void writeRawMessageSetExtension(final int fieldNumber, |
final ByteString value) |
throws IOException { |
writeTag(WireFormat.MESSAGE_SET_ITEM, WireFormat.WIRETYPE_START_GROUP); |
writeUInt32(WireFormat.MESSAGE_SET_TYPE_ID, fieldNumber); |
writeBytes(WireFormat.MESSAGE_SET_MESSAGE, value); |
writeTag(WireFormat.MESSAGE_SET_ITEM, WireFormat.WIRETYPE_END_GROUP); |
} |
// ----------------------------------------------------------------- |
/** Write a {@code double} field to the stream. */ |
public void writeDoubleNoTag(final double value) throws IOException { |
writeRawLittleEndian64(Double.doubleToRawLongBits(value)); |
} |
/** Write a {@code float} field to the stream. */ |
public void writeFloatNoTag(final float value) throws IOException { |
writeRawLittleEndian32(Float.floatToRawIntBits(value)); |
} |
/** Write a {@code uint64} field to the stream. */ |
public void writeUInt64NoTag(final long value) throws IOException { |
writeRawVarint64(value); |
} |
/** Write an {@code int64} field to the stream. */ |
public void writeInt64NoTag(final long value) throws IOException { |
writeRawVarint64(value); |
} |
/** Write an {@code int32} field to the stream. */ |
public void writeInt32NoTag(final int value) throws IOException { |
if (value >= 0) { |
writeRawVarint32(value); |
} else { |
// Must sign-extend. |
writeRawVarint64(value); |
} |
} |
/** Write a {@code fixed64} field to the stream. */ |
public void writeFixed64NoTag(final long value) throws IOException { |
writeRawLittleEndian64(value); |
} |
/** Write a {@code fixed32} field to the stream. */ |
public void writeFixed32NoTag(final int value) throws IOException { |
writeRawLittleEndian32(value); |
} |
/** Write a {@code bool} field to the stream. */ |
public void writeBoolNoTag(final boolean value) throws IOException { |
writeRawByte(value ? 1 : 0); |
} |
/** Write a {@code string} field to the stream. */ |
public void writeStringNoTag(final String value) throws IOException { |
// Unfortunately there does not appear to be any way to tell Java to encode |
// UTF-8 directly into our buffer, so we have to let it create its own byte |
// array and then copy. |
final byte[] bytes = value.getBytes("UTF-8"); |
writeRawVarint32(bytes.length); |
writeRawBytes(bytes); |
} |
/** Write a {@code group} field to the stream. */ |
public void writeGroupNoTag(final MessageLite value) throws IOException { |
value.writeTo(this); |
} |
/** |
* Write a group represented by an {@link UnknownFieldSet}. |
* |
* @deprecated UnknownFieldSet now implements MessageLite, so you can just |
* call {@link #writeGroupNoTag}. |
*/ |
@Deprecated |
public void writeUnknownGroupNoTag(final MessageLite value) |
throws IOException { |
writeGroupNoTag(value); |
} |
/** Write an embedded message field to the stream. */ |
public void writeMessageNoTag(final MessageLite value) throws IOException { |
writeRawVarint32(value.getSerializedSize()); |
value.writeTo(this); |
} |
/** Write a {@code bytes} field to the stream. */ |
public void writeBytesNoTag(final ByteString value) throws IOException { |
writeRawVarint32(value.size()); |
writeRawBytes(value); |
} |
/** Write a {@code uint32} field to the stream. */ |
public void writeUInt32NoTag(final int value) throws IOException { |
writeRawVarint32(value); |
} |
/** |
* Write an enum field to the stream. Caller is responsible |
* for converting the enum value to its numeric value. |
*/ |
public void writeEnumNoTag(final int value) throws IOException { |
writeInt32NoTag(value); |
} |
/** Write an {@code sfixed32} field to the stream. */ |
public void writeSFixed32NoTag(final int value) throws IOException { |
writeRawLittleEndian32(value); |
} |
/** Write an {@code sfixed64} field to the stream. */ |
public void writeSFixed64NoTag(final long value) throws IOException { |
writeRawLittleEndian64(value); |
} |
/** Write an {@code sint32} field to the stream. */ |
public void writeSInt32NoTag(final int value) throws IOException { |
writeRawVarint32(encodeZigZag32(value)); |
} |
/** Write an {@code sint64} field to the stream. */ |
public void writeSInt64NoTag(final long value) throws IOException { |
writeRawVarint64(encodeZigZag64(value)); |
} |
// ================================================================= |
/** |
* Compute the number of bytes that would be needed to encode a |
* {@code double} field, including tag. |
*/ |
public static int computeDoubleSize(final int fieldNumber, |
final double value) { |
return computeTagSize(fieldNumber) + computeDoubleSizeNoTag(value); |
} |
/** |
* Compute the number of bytes that would be needed to encode a |
* {@code float} field, including tag. |
*/ |
public static int computeFloatSize(final int fieldNumber, final float value) { |
return computeTagSize(fieldNumber) + computeFloatSizeNoTag(value); |
} |
/** |
* Compute the number of bytes that would be needed to encode a |
* {@code uint64} field, including tag. |
*/ |
public static int computeUInt64Size(final int fieldNumber, final long value) { |
return computeTagSize(fieldNumber) + computeUInt64SizeNoTag(value); |
} |
/** |
* Compute the number of bytes that would be needed to encode an |
* {@code int64} field, including tag. |
*/ |
public static int computeInt64Size(final int fieldNumber, final long value) { |
return computeTagSize(fieldNumber) + computeInt64SizeNoTag(value); |
} |
/** |
* Compute the number of bytes that would be needed to encode an |
* {@code int32} field, including tag. |
*/ |
public static int computeInt32Size(final int fieldNumber, final int value) { |
return computeTagSize(fieldNumber) + computeInt32SizeNoTag(value); |
} |
/** |
* Compute the number of bytes that would be needed to encode a |
* {@code fixed64} field, including tag. |
*/ |
public static int computeFixed64Size(final int fieldNumber, |
final long value) { |
return computeTagSize(fieldNumber) + computeFixed64SizeNoTag(value); |
} |
/** |
* Compute the number of bytes that would be needed to encode a |
* {@code fixed32} field, including tag. |
*/ |
public static int computeFixed32Size(final int fieldNumber, |
final int value) { |
return computeTagSize(fieldNumber) + computeFixed32SizeNoTag(value); |
} |
/** |
* Compute the number of bytes that would be needed to encode a |
* {@code bool} field, including tag. |
*/ |
public static int computeBoolSize(final int fieldNumber, |
final boolean value) { |
return computeTagSize(fieldNumber) + computeBoolSizeNoTag(value); |
} |
/** |
* Compute the number of bytes that would be needed to encode a |
* {@code string} field, including tag. |
*/ |
public static int computeStringSize(final int fieldNumber, |
final String value) { |
return computeTagSize(fieldNumber) + computeStringSizeNoTag(value); |
} |
/** |
* Compute the number of bytes that would be needed to encode a |
* {@code group} field, including tag. |
*/ |
public static int computeGroupSize(final int fieldNumber, |
final MessageLite value) { |
return computeTagSize(fieldNumber) * 2 + computeGroupSizeNoTag(value); |
} |
/** |
* Compute the number of bytes that would be needed to encode a |
* {@code group} field represented by an {@code UnknownFieldSet}, including |
* tag. |
* |
* @deprecated UnknownFieldSet now implements MessageLite, so you can just |
* call {@link #computeGroupSize}. |
*/ |
@Deprecated |
public static int computeUnknownGroupSize(final int fieldNumber, |
final MessageLite value) { |
return computeGroupSize(fieldNumber, value); |
} |
/** |
* Compute the number of bytes that would be needed to encode an |
* embedded message field, including tag. |
*/ |
public static int computeMessageSize(final int fieldNumber, |
final MessageLite value) { |
return computeTagSize(fieldNumber) + computeMessageSizeNoTag(value); |
} |
/** |
* Compute the number of bytes that would be needed to encode a |
* {@code bytes} field, including tag. |
*/ |
public static int computeBytesSize(final int fieldNumber, |
final ByteString value) { |
return computeTagSize(fieldNumber) + computeBytesSizeNoTag(value); |
} |
/** |
* Compute the number of bytes that would be needed to encode a |
* {@code uint32} field, including tag. |
*/ |
public static int computeUInt32Size(final int fieldNumber, final int value) { |
return computeTagSize(fieldNumber) + computeUInt32SizeNoTag(value); |
} |
/** |
* Compute the number of bytes that would be needed to encode an |
* enum field, including tag. Caller is responsible for converting the |
* enum value to its numeric value. |
*/ |
public static int computeEnumSize(final int fieldNumber, final int value) { |
return computeTagSize(fieldNumber) + computeEnumSizeNoTag(value); |
} |
/** |
* Compute the number of bytes that would be needed to encode an |
* {@code sfixed32} field, including tag. |
*/ |
public static int computeSFixed32Size(final int fieldNumber, |
final int value) { |
return computeTagSize(fieldNumber) + computeSFixed32SizeNoTag(value); |
} |
/** |
* Compute the number of bytes that would be needed to encode an |
* {@code sfixed64} field, including tag. |
*/ |
public static int computeSFixed64Size(final int fieldNumber, |
final long value) { |
return computeTagSize(fieldNumber) + computeSFixed64SizeNoTag(value); |
} |
/** |
* Compute the number of bytes that would be needed to encode an |
* {@code sint32} field, including tag. |
*/ |
public static int computeSInt32Size(final int fieldNumber, final int value) { |
return computeTagSize(fieldNumber) + computeSInt32SizeNoTag(value); |
} |
/** |
* Compute the number of bytes that would be needed to encode an |
* {@code sint64} field, including tag. |
*/ |
public static int computeSInt64Size(final int fieldNumber, final long value) { |
return computeTagSize(fieldNumber) + computeSInt64SizeNoTag(value); |
} |
/** |
* Compute the number of bytes that would be needed to encode a |
* MessageSet extension to the stream. For historical reasons, |
* the wire format differs from normal fields. |
*/ |
public static int computeMessageSetExtensionSize( |
final int fieldNumber, final MessageLite value) { |
return computeTagSize(WireFormat.MESSAGE_SET_ITEM) * 2 + |
computeUInt32Size(WireFormat.MESSAGE_SET_TYPE_ID, fieldNumber) + |
computeMessageSize(WireFormat.MESSAGE_SET_MESSAGE, value); |
} |
/** |
* Compute the number of bytes that would be needed to encode an |
* unparsed MessageSet extension field to the stream. For |
* historical reasons, the wire format differs from normal fields. |
*/ |
public static int computeRawMessageSetExtensionSize( |
final int fieldNumber, final ByteString value) { |
return computeTagSize(WireFormat.MESSAGE_SET_ITEM) * 2 + |
computeUInt32Size(WireFormat.MESSAGE_SET_TYPE_ID, fieldNumber) + |
computeBytesSize(WireFormat.MESSAGE_SET_MESSAGE, value); |
} |
// ----------------------------------------------------------------- |
/** |
* Compute the number of bytes that would be needed to encode a |
* {@code double} field, including tag. |
*/ |
public static int computeDoubleSizeNoTag(final double value) { |
return LITTLE_ENDIAN_64_SIZE; |
} |
/** |
* Compute the number of bytes that would be needed to encode a |
* {@code float} field, including tag. |
*/ |
public static int computeFloatSizeNoTag(final float value) { |
return LITTLE_ENDIAN_32_SIZE; |
} |
/** |
* Compute the number of bytes that would be needed to encode a |
* {@code uint64} field, including tag. |
*/ |
public static int computeUInt64SizeNoTag(final long value) { |
return computeRawVarint64Size(value); |
} |
/** |
* Compute the number of bytes that would be needed to encode an |
* {@code int64} field, including tag. |
*/ |
public static int computeInt64SizeNoTag(final long value) { |
return computeRawVarint64Size(value); |
} |
/** |
* Compute the number of bytes that would be needed to encode an |
* {@code int32} field, including tag. |
*/ |
public static int computeInt32SizeNoTag(final int value) { |
if (value >= 0) { |
return computeRawVarint32Size(value); |
} else { |
// Must sign-extend. |
return 10; |
} |
} |
/** |
* Compute the number of bytes that would be needed to encode a |
* {@code fixed64} field. |
*/ |
public static int computeFixed64SizeNoTag(final long value) { |
return LITTLE_ENDIAN_64_SIZE; |
} |
/** |
* Compute the number of bytes that would be needed to encode a |
* {@code fixed32} field. |
*/ |
public static int computeFixed32SizeNoTag(final int value) { |
return LITTLE_ENDIAN_32_SIZE; |
} |
/** |
* Compute the number of bytes that would be needed to encode a |
* {@code bool} field. |
*/ |
public static int computeBoolSizeNoTag(final boolean value) { |
return 1; |
} |
/** |
* Compute the number of bytes that would be needed to encode a |
* {@code string} field. |
*/ |
public static int computeStringSizeNoTag(final String value) { |
try { |
final byte[] bytes = value.getBytes("UTF-8"); |
return computeRawVarint32Size(bytes.length) + |
bytes.length; |
} catch (UnsupportedEncodingException e) { |
throw new RuntimeException("UTF-8 not supported.", e); |
} |
} |
/** |
* Compute the number of bytes that would be needed to encode a |
* {@code group} field. |
*/ |
public static int computeGroupSizeNoTag(final MessageLite value) { |
return value.getSerializedSize(); |
} |
/** |
* Compute the number of bytes that would be needed to encode a |
* {@code group} field represented by an {@code UnknownFieldSet}, including |
* tag. |
* |
* @deprecated UnknownFieldSet now implements MessageLite, so you can just |
* call {@link #computeUnknownGroupSizeNoTag}. |
*/ |
@Deprecated |
public static int computeUnknownGroupSizeNoTag(final MessageLite value) { |
return computeGroupSizeNoTag(value); |
} |
/** |
* Compute the number of bytes that would be needed to encode an embedded |
* message field. |
*/ |
public static int computeMessageSizeNoTag(final MessageLite value) { |
final int size = value.getSerializedSize(); |
return computeRawVarint32Size(size) + size; |
} |
/** |
* Compute the number of bytes that would be needed to encode a |
* {@code bytes} field. |
*/ |
public static int computeBytesSizeNoTag(final ByteString value) { |
return computeRawVarint32Size(value.size()) + |
value.size(); |
} |
/** |
* Compute the number of bytes that would be needed to encode a |
* {@code uint32} field. |
*/ |
public static int computeUInt32SizeNoTag(final int value) { |
return computeRawVarint32Size(value); |
} |
/** |
* Compute the number of bytes that would be needed to encode an enum field. |
* Caller is responsible for converting the enum value to its numeric value. |
*/ |
public static int computeEnumSizeNoTag(final int value) { |
return computeInt32SizeNoTag(value); |
} |
/** |
* Compute the number of bytes that would be needed to encode an |
* {@code sfixed32} field. |
*/ |
public static int computeSFixed32SizeNoTag(final int value) { |
return LITTLE_ENDIAN_32_SIZE; |
} |
/** |
* Compute the number of bytes that would be needed to encode an |
* {@code sfixed64} field. |
*/ |
public static int computeSFixed64SizeNoTag(final long value) { |
return LITTLE_ENDIAN_64_SIZE; |
} |
/** |
* Compute the number of bytes that would be needed to encode an |
* {@code sint32} field. |
*/ |
public static int computeSInt32SizeNoTag(final int value) { |
return computeRawVarint32Size(encodeZigZag32(value)); |
} |
/** |
* Compute the number of bytes that would be needed to encode an |
* {@code sint64} field. |
*/ |
public static int computeSInt64SizeNoTag(final long value) { |
return computeRawVarint64Size(encodeZigZag64(value)); |
} |
// ================================================================= |
/** |
* Internal helper that writes the current buffer to the output. The |
* buffer position is reset to its initial value when this returns. |
*/ |
private void refreshBuffer() throws IOException { |
if (output == null) { |
// We're writing to a single buffer. |
throw new OutOfSpaceException(); |
} |
// Since we have an output stream, this is our buffer |
// and buffer offset == 0 |
output.write(buffer, 0, position); |
position = 0; |
} |
/** |
* Flushes the stream and forces any buffered bytes to be written. This |
* does not flush the underlying OutputStream. |
*/ |
public void flush() throws IOException { |
if (output != null) { |
refreshBuffer(); |
} |
} |
/** |
* If writing to a flat array, return the space left in the array. |
* Otherwise, throws {@code UnsupportedOperationException}. |
*/ |
public int spaceLeft() { |
if (output == null) { |
return limit - position; |
} else { |
throw new UnsupportedOperationException( |
"spaceLeft() can only be called on CodedOutputStreams that are " + |
"writing to a flat array."); |
} |
} |
/** |
* Verifies that {@link #spaceLeft()} returns zero. It's common to create |
* a byte array that is exactly big enough to hold a message, then write to |
* it with a {@code CodedOutputStream}. Calling {@code checkNoSpaceLeft()} |
* after writing verifies that the message was actually as big as expected, |
* which can help catch bugs. |
*/ |
public void checkNoSpaceLeft() { |
if (spaceLeft() != 0) { |
throw new IllegalStateException( |
"Did not write as much data as expected."); |
} |
} |
/** |
* If you create a CodedOutputStream around a simple flat array, you must |
* not attempt to write more bytes than the array has space. Otherwise, |
* this exception will be thrown. |
*/ |
public static class OutOfSpaceException extends IOException { |
private static final long serialVersionUID = -6947486886997889499L; |
OutOfSpaceException() { |
super("CodedOutputStream was writing to a flat byte array and ran " + |
"out of space."); |
} |
} |
/** Write a single byte. */ |
public void writeRawByte(final byte value) throws IOException { |
if (position == limit) { |
refreshBuffer(); |
} |
buffer[position++] = value; |
} |
/** Write a single byte, represented by an integer value. */ |
public void writeRawByte(final int value) throws IOException { |
writeRawByte((byte) value); |
} |
/** Write a byte string. */ |
public void writeRawBytes(final ByteString value) throws IOException { |
writeRawBytes(value, 0, value.size()); |
} |
/** Write an array of bytes. */ |
public void writeRawBytes(final byte[] value) throws IOException { |
writeRawBytes(value, 0, value.length); |
} |
/** Write part of an array of bytes. */ |
public void writeRawBytes(final byte[] value, int offset, int length) |
throws IOException { |
if (limit - position >= length) { |
// We have room in the current buffer. |
System.arraycopy(value, offset, buffer, position, length); |
position += length; |
} else { |
// Write extends past current buffer. Fill the rest of this buffer and |
// flush. |
final int bytesWritten = limit - position; |
System.arraycopy(value, offset, buffer, position, bytesWritten); |
offset += bytesWritten; |
length -= bytesWritten; |
position = limit; |
refreshBuffer(); |
// Now deal with the rest. |
// Since we have an output stream, this is our buffer |
// and buffer offset == 0 |
if (length <= limit) { |
// Fits in new buffer. |
System.arraycopy(value, offset, buffer, 0, length); |
position = length; |
} else { |
// Write is very big. Let's do it all at once. |
output.write(value, offset, length); |
} |
} |
} |
/** Write part of a byte string. */ |
public void writeRawBytes(final ByteString value, int offset, int length) |
throws IOException { |
if (limit - position >= length) { |
// We have room in the current buffer. |
value.copyTo(buffer, offset, position, length); |
position += length; |
} else { |
// Write extends past current buffer. Fill the rest of this buffer and |
// flush. |
final int bytesWritten = limit - position; |
value.copyTo(buffer, offset, position, bytesWritten); |
offset += bytesWritten; |
length -= bytesWritten; |
position = limit; |
refreshBuffer(); |
// Now deal with the rest. |
// Since we have an output stream, this is our buffer |
// and buffer offset == 0 |
if (length <= limit) { |
// Fits in new buffer. |
value.copyTo(buffer, offset, 0, length); |
position = length; |
} else { |
// Write is very big, but we can't do it all at once without allocating |
// an a copy of the byte array since ByteString does not give us access |
// to the underlying bytes. Use the InputStream interface on the |
// ByteString and our buffer to copy between the two. |
InputStream inputStreamFrom = value.newInput(); |
if (offset != inputStreamFrom.skip(offset)) { |
throw new IllegalStateException("Skip failed? Should never happen."); |
} |
// Use the buffer as the temporary buffer to avoid allocating memory. |
while (length > 0) { |
int bytesToRead = Math.min(length, limit); |
int bytesRead = inputStreamFrom.read(buffer, 0, bytesToRead); |
if (bytesRead != bytesToRead) { |
throw new IllegalStateException("Read failed? Should never happen"); |
} |
output.write(buffer, 0, bytesRead); |
length -= bytesRead; |
} |
} |
} |
} |
/** Encode and write a tag. */ |
public void writeTag(final int fieldNumber, final int wireType) |
throws IOException { |
writeRawVarint32(WireFormat.makeTag(fieldNumber, wireType)); |
} |
/** Compute the number of bytes that would be needed to encode a tag. */ |
public static int computeTagSize(final int fieldNumber) { |
return computeRawVarint32Size(WireFormat.makeTag(fieldNumber, 0)); |
} |
/** |
* Encode and write a varint. {@code value} is treated as |
* unsigned, so it won't be sign-extended if negative. |
*/ |
public void writeRawVarint32(int value) throws IOException { |
while (true) { |
if ((value & ~0x7F) == 0) { |
writeRawByte(value); |
return; |
} else { |
writeRawByte((value & 0x7F) | 0x80); |
value >>>= 7; |
} |
} |
} |
/** |
* Compute the number of bytes that would be needed to encode a varint. |
* {@code value} is treated as unsigned, so it won't be sign-extended if |
* negative. |
*/ |
public static int computeRawVarint32Size(final int value) { |
if ((value & (0xffffffff << 7)) == 0) return 1; |
if ((value & (0xffffffff << 14)) == 0) return 2; |
if ((value & (0xffffffff << 21)) == 0) return 3; |
if ((value & (0xffffffff << 28)) == 0) return 4; |
return 5; |
} |
/** Encode and write a varint. */ |
public void writeRawVarint64(long value) throws IOException { |
while (true) { |
if ((value & ~0x7FL) == 0) { |
writeRawByte((int)value); |
return; |
} else { |
writeRawByte(((int)value & 0x7F) | 0x80); |
value >>>= 7; |
} |
} |
} |
/** Compute the number of bytes that would be needed to encode a varint. */ |
public static int computeRawVarint64Size(final long value) { |
if ((value & (0xffffffffffffffffL << 7)) == 0) return 1; |
if ((value & (0xffffffffffffffffL << 14)) == 0) return 2; |
if ((value & (0xffffffffffffffffL << 21)) == 0) return 3; |
if ((value & (0xffffffffffffffffL << 28)) == 0) return 4; |
if ((value & (0xffffffffffffffffL << 35)) == 0) return 5; |
if ((value & (0xffffffffffffffffL << 42)) == 0) return 6; |
if ((value & (0xffffffffffffffffL << 49)) == 0) return 7; |
if ((value & (0xffffffffffffffffL << 56)) == 0) return 8; |
if ((value & (0xffffffffffffffffL << 63)) == 0) return 9; |
return 10; |
} |
/** Write a little-endian 32-bit integer. */ |
public void writeRawLittleEndian32(final int value) throws IOException { |
writeRawByte((value ) & 0xFF); |
writeRawByte((value >> 8) & 0xFF); |
writeRawByte((value >> 16) & 0xFF); |
writeRawByte((value >> 24) & 0xFF); |
} |
public static final int LITTLE_ENDIAN_32_SIZE = 4; |
/** Write a little-endian 64-bit integer. */ |
public void writeRawLittleEndian64(final long value) throws IOException { |
writeRawByte((int)(value ) & 0xFF); |
writeRawByte((int)(value >> 8) & 0xFF); |
writeRawByte((int)(value >> 16) & 0xFF); |
writeRawByte((int)(value >> 24) & 0xFF); |
writeRawByte((int)(value >> 32) & 0xFF); |
writeRawByte((int)(value >> 40) & 0xFF); |
writeRawByte((int)(value >> 48) & 0xFF); |
writeRawByte((int)(value >> 56) & 0xFF); |
} |
public static final int LITTLE_ENDIAN_64_SIZE = 8; |
/** |
* Encode a ZigZag-encoded 32-bit value. ZigZag encodes signed integers |
* into values that can be efficiently encoded with varint. (Otherwise, |
* negative values must be sign-extended to 64 bits to be varint encoded, |
* thus always taking 10 bytes on the wire.) |
* |
* @param n A signed 32-bit integer. |
* @return An unsigned 32-bit integer, stored in a signed int because |
* Java has no explicit unsigned support. |
*/ |
public static int encodeZigZag32(final int n) { |
// Note: the right-shift must be arithmetic |
return (n << 1) ^ (n >> 31); |
} |
/** |
* Encode a ZigZag-encoded 64-bit value. ZigZag encodes signed integers |
* into values that can be efficiently encoded with varint. (Otherwise, |
* negative values must be sign-extended to 64 bits to be varint encoded, |
* thus always taking 10 bytes on the wire.) |
* |
* @param n A signed 64-bit integer. |
* @return An unsigned 64-bit integer, stored in a signed int because |
* Java has no explicit unsigned support. |
*/ |
public static long encodeZigZag64(final long n) { |
// Note: the right-shift must be arithmetic |
return (n << 1) ^ (n >> 63); |
} |
} |
/Android Development/IOIODebugger/src/com/google/protobuf/DescriptorProtos.java |
---|
0,0 → 1,17063 |
// Generated by the protocol buffer compiler. DO NOT EDIT! |
// source: google/protobuf/descriptor.proto |
package com.google.protobuf; |
public final class DescriptorProtos { |
private DescriptorProtos() {} |
public static void registerAllExtensions( |
com.google.protobuf.ExtensionRegistry registry) { |
} |
public interface FileDescriptorSetOrBuilder |
extends com.google.protobuf.MessageOrBuilder { |
// repeated .google.protobuf.FileDescriptorProto file = 1; |
java.util.List<com.google.protobuf.DescriptorProtos.FileDescriptorProto> |
getFileList(); |
com.google.protobuf.DescriptorProtos.FileDescriptorProto getFile(int index); |
int getFileCount(); |
java.util.List<? extends com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder> |
getFileOrBuilderList(); |
com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder getFileOrBuilder( |
int index); |
} |
public static final class FileDescriptorSet extends |
com.google.protobuf.GeneratedMessage |
implements FileDescriptorSetOrBuilder { |
// Use FileDescriptorSet.newBuilder() to construct. |
private FileDescriptorSet(Builder builder) { |
super(builder); |
} |
private FileDescriptorSet(boolean noInit) {} |
private static final FileDescriptorSet defaultInstance; |
public static FileDescriptorSet getDefaultInstance() { |
return defaultInstance; |
} |
public FileDescriptorSet getDefaultInstanceForType() { |
return defaultInstance; |
} |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileDescriptorSet_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileDescriptorSet_fieldAccessorTable; |
} |
// repeated .google.protobuf.FileDescriptorProto file = 1; |
public static final int FILE_FIELD_NUMBER = 1; |
private java.util.List<com.google.protobuf.DescriptorProtos.FileDescriptorProto> file_; |
public java.util.List<com.google.protobuf.DescriptorProtos.FileDescriptorProto> getFileList() { |
return file_; |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder> |
getFileOrBuilderList() { |
return file_; |
} |
public int getFileCount() { |
return file_.size(); |
} |
public com.google.protobuf.DescriptorProtos.FileDescriptorProto getFile(int index) { |
return file_.get(index); |
} |
public com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder getFileOrBuilder( |
int index) { |
return file_.get(index); |
} |
private void initFields() { |
file_ = java.util.Collections.emptyList(); |
} |
private byte memoizedIsInitialized = -1; |
public final boolean isInitialized() { |
byte isInitialized = memoizedIsInitialized; |
if (isInitialized != -1) return isInitialized == 1; |
for (int i = 0; i < getFileCount(); i++) { |
if (!getFile(i).isInitialized()) { |
memoizedIsInitialized = 0; |
return false; |
} |
} |
memoizedIsInitialized = 1; |
return true; |
} |
public void writeTo(com.google.protobuf.CodedOutputStream output) |
throws java.io.IOException { |
getSerializedSize(); |
for (int i = 0; i < file_.size(); i++) { |
output.writeMessage(1, file_.get(i)); |
} |
getUnknownFields().writeTo(output); |
} |
private int memoizedSerializedSize = -1; |
public int getSerializedSize() { |
int size = memoizedSerializedSize; |
if (size != -1) return size; |
size = 0; |
for (int i = 0; i < file_.size(); i++) { |
size += com.google.protobuf.CodedOutputStream |
.computeMessageSize(1, file_.get(i)); |
} |
size += getUnknownFields().getSerializedSize(); |
memoizedSerializedSize = size; |
return size; |
} |
private static final long serialVersionUID = 0L; |
@java.lang.Override |
protected java.lang.Object writeReplace() |
throws java.io.ObjectStreamException { |
return super.writeReplace(); |
} |
public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseFrom( |
com.google.protobuf.ByteString data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseFrom( |
com.google.protobuf.ByteString data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseFrom(byte[] data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseFrom( |
byte[] data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseFrom(java.io.InputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseDelimitedFrom(java.io.InputStream input) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseDelimitedFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input, extensionRegistry)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseFrom( |
com.google.protobuf.CodedInputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.FileDescriptorSet parseFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static Builder newBuilder() { return Builder.create(); } |
public Builder newBuilderForType() { return newBuilder(); } |
public static Builder newBuilder(com.google.protobuf.DescriptorProtos.FileDescriptorSet prototype) { |
return newBuilder().mergeFrom(prototype); |
} |
public Builder toBuilder() { return newBuilder(this); } |
@java.lang.Override |
protected Builder newBuilderForType( |
com.google.protobuf.GeneratedMessage.BuilderParent parent) { |
Builder builder = new Builder(parent); |
return builder; |
} |
public static final class Builder extends |
com.google.protobuf.GeneratedMessage.Builder<Builder> |
implements com.google.protobuf.DescriptorProtos.FileDescriptorSetOrBuilder { |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileDescriptorSet_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileDescriptorSet_fieldAccessorTable; |
} |
// Construct using com.google.protobuf.DescriptorProtos.FileDescriptorSet.newBuilder() |
private Builder() { |
maybeForceBuilderInitialization(); |
} |
private Builder(BuilderParent parent) { |
super(parent); |
maybeForceBuilderInitialization(); |
} |
private void maybeForceBuilderInitialization() { |
if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { |
getFileFieldBuilder(); |
} |
} |
private static Builder create() { |
return new Builder(); |
} |
public Builder clear() { |
super.clear(); |
if (fileBuilder_ == null) { |
file_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000001); |
} else { |
fileBuilder_.clear(); |
} |
return this; |
} |
public Builder clone() { |
return create().mergeFrom(buildPartial()); |
} |
public com.google.protobuf.Descriptors.Descriptor |
getDescriptorForType() { |
return com.google.protobuf.DescriptorProtos.FileDescriptorSet.getDescriptor(); |
} |
public com.google.protobuf.DescriptorProtos.FileDescriptorSet getDefaultInstanceForType() { |
return com.google.protobuf.DescriptorProtos.FileDescriptorSet.getDefaultInstance(); |
} |
public com.google.protobuf.DescriptorProtos.FileDescriptorSet build() { |
com.google.protobuf.DescriptorProtos.FileDescriptorSet result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException(result); |
} |
return result; |
} |
private com.google.protobuf.DescriptorProtos.FileDescriptorSet buildParsed() |
throws com.google.protobuf.InvalidProtocolBufferException { |
com.google.protobuf.DescriptorProtos.FileDescriptorSet result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException( |
result).asInvalidProtocolBufferException(); |
} |
return result; |
} |
public com.google.protobuf.DescriptorProtos.FileDescriptorSet buildPartial() { |
com.google.protobuf.DescriptorProtos.FileDescriptorSet result = new com.google.protobuf.DescriptorProtos.FileDescriptorSet(this); |
int from_bitField0_ = bitField0_; |
if (fileBuilder_ == null) { |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
file_ = java.util.Collections.unmodifiableList(file_); |
bitField0_ = (bitField0_ & ~0x00000001); |
} |
result.file_ = file_; |
} else { |
result.file_ = fileBuilder_.build(); |
} |
onBuilt(); |
return result; |
} |
public Builder mergeFrom(com.google.protobuf.Message other) { |
if (other instanceof com.google.protobuf.DescriptorProtos.FileDescriptorSet) { |
return mergeFrom((com.google.protobuf.DescriptorProtos.FileDescriptorSet)other); |
} else { |
super.mergeFrom(other); |
return this; |
} |
} |
public Builder mergeFrom(com.google.protobuf.DescriptorProtos.FileDescriptorSet other) { |
if (other == com.google.protobuf.DescriptorProtos.FileDescriptorSet.getDefaultInstance()) return this; |
if (fileBuilder_ == null) { |
if (!other.file_.isEmpty()) { |
if (file_.isEmpty()) { |
file_ = other.file_; |
bitField0_ = (bitField0_ & ~0x00000001); |
} else { |
ensureFileIsMutable(); |
file_.addAll(other.file_); |
} |
onChanged(); |
} |
} else { |
if (!other.file_.isEmpty()) { |
if (fileBuilder_.isEmpty()) { |
fileBuilder_.dispose(); |
fileBuilder_ = null; |
file_ = other.file_; |
bitField0_ = (bitField0_ & ~0x00000001); |
fileBuilder_ = |
com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? |
getFileFieldBuilder() : null; |
} else { |
fileBuilder_.addAllMessages(other.file_); |
} |
} |
} |
this.mergeUnknownFields(other.getUnknownFields()); |
return this; |
} |
public final boolean isInitialized() { |
for (int i = 0; i < getFileCount(); i++) { |
if (!getFile(i).isInitialized()) { |
return false; |
} |
} |
return true; |
} |
public Builder mergeFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
com.google.protobuf.UnknownFieldSet.Builder unknownFields = |
com.google.protobuf.UnknownFieldSet.newBuilder( |
this.getUnknownFields()); |
while (true) { |
int tag = input.readTag(); |
switch (tag) { |
case 0: |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
default: { |
if (!parseUnknownField(input, unknownFields, |
extensionRegistry, tag)) { |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
} |
break; |
} |
case 10: { |
com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder subBuilder = com.google.protobuf.DescriptorProtos.FileDescriptorProto.newBuilder(); |
input.readMessage(subBuilder, extensionRegistry); |
addFile(subBuilder.buildPartial()); |
break; |
} |
} |
} |
} |
private int bitField0_; |
// repeated .google.protobuf.FileDescriptorProto file = 1; |
private java.util.List<com.google.protobuf.DescriptorProtos.FileDescriptorProto> file_ = |
java.util.Collections.emptyList(); |
private void ensureFileIsMutable() { |
if (!((bitField0_ & 0x00000001) == 0x00000001)) { |
file_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.FileDescriptorProto>(file_); |
bitField0_ |= 0x00000001; |
} |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.FileDescriptorProto, com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder> fileBuilder_; |
public java.util.List<com.google.protobuf.DescriptorProtos.FileDescriptorProto> getFileList() { |
if (fileBuilder_ == null) { |
return java.util.Collections.unmodifiableList(file_); |
} else { |
return fileBuilder_.getMessageList(); |
} |
} |
public int getFileCount() { |
if (fileBuilder_ == null) { |
return file_.size(); |
} else { |
return fileBuilder_.getCount(); |
} |
} |
public com.google.protobuf.DescriptorProtos.FileDescriptorProto getFile(int index) { |
if (fileBuilder_ == null) { |
return file_.get(index); |
} else { |
return fileBuilder_.getMessage(index); |
} |
} |
public Builder setFile( |
int index, com.google.protobuf.DescriptorProtos.FileDescriptorProto value) { |
if (fileBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureFileIsMutable(); |
file_.set(index, value); |
onChanged(); |
} else { |
fileBuilder_.setMessage(index, value); |
} |
return this; |
} |
public Builder setFile( |
int index, com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder builderForValue) { |
if (fileBuilder_ == null) { |
ensureFileIsMutable(); |
file_.set(index, builderForValue.build()); |
onChanged(); |
} else { |
fileBuilder_.setMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addFile(com.google.protobuf.DescriptorProtos.FileDescriptorProto value) { |
if (fileBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureFileIsMutable(); |
file_.add(value); |
onChanged(); |
} else { |
fileBuilder_.addMessage(value); |
} |
return this; |
} |
public Builder addFile( |
int index, com.google.protobuf.DescriptorProtos.FileDescriptorProto value) { |
if (fileBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureFileIsMutable(); |
file_.add(index, value); |
onChanged(); |
} else { |
fileBuilder_.addMessage(index, value); |
} |
return this; |
} |
public Builder addFile( |
com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder builderForValue) { |
if (fileBuilder_ == null) { |
ensureFileIsMutable(); |
file_.add(builderForValue.build()); |
onChanged(); |
} else { |
fileBuilder_.addMessage(builderForValue.build()); |
} |
return this; |
} |
public Builder addFile( |
int index, com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder builderForValue) { |
if (fileBuilder_ == null) { |
ensureFileIsMutable(); |
file_.add(index, builderForValue.build()); |
onChanged(); |
} else { |
fileBuilder_.addMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addAllFile( |
java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.FileDescriptorProto> values) { |
if (fileBuilder_ == null) { |
ensureFileIsMutable(); |
super.addAll(values, file_); |
onChanged(); |
} else { |
fileBuilder_.addAllMessages(values); |
} |
return this; |
} |
public Builder clearFile() { |
if (fileBuilder_ == null) { |
file_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000001); |
onChanged(); |
} else { |
fileBuilder_.clear(); |
} |
return this; |
} |
public Builder removeFile(int index) { |
if (fileBuilder_ == null) { |
ensureFileIsMutable(); |
file_.remove(index); |
onChanged(); |
} else { |
fileBuilder_.remove(index); |
} |
return this; |
} |
public com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder getFileBuilder( |
int index) { |
return getFileFieldBuilder().getBuilder(index); |
} |
public com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder getFileOrBuilder( |
int index) { |
if (fileBuilder_ == null) { |
return file_.get(index); } else { |
return fileBuilder_.getMessageOrBuilder(index); |
} |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder> |
getFileOrBuilderList() { |
if (fileBuilder_ != null) { |
return fileBuilder_.getMessageOrBuilderList(); |
} else { |
return java.util.Collections.unmodifiableList(file_); |
} |
} |
public com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder addFileBuilder() { |
return getFileFieldBuilder().addBuilder( |
com.google.protobuf.DescriptorProtos.FileDescriptorProto.getDefaultInstance()); |
} |
public com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder addFileBuilder( |
int index) { |
return getFileFieldBuilder().addBuilder( |
index, com.google.protobuf.DescriptorProtos.FileDescriptorProto.getDefaultInstance()); |
} |
public java.util.List<com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder> |
getFileBuilderList() { |
return getFileFieldBuilder().getBuilderList(); |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.FileDescriptorProto, com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder> |
getFileFieldBuilder() { |
if (fileBuilder_ == null) { |
fileBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.FileDescriptorProto, com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder>( |
file_, |
((bitField0_ & 0x00000001) == 0x00000001), |
getParentForChildren(), |
isClean()); |
file_ = null; |
} |
return fileBuilder_; |
} |
// @@protoc_insertion_point(builder_scope:google.protobuf.FileDescriptorSet) |
} |
static { |
defaultInstance = new FileDescriptorSet(true); |
defaultInstance.initFields(); |
} |
// @@protoc_insertion_point(class_scope:google.protobuf.FileDescriptorSet) |
} |
public interface FileDescriptorProtoOrBuilder |
extends com.google.protobuf.MessageOrBuilder { |
// optional string name = 1; |
boolean hasName(); |
String getName(); |
// optional string package = 2; |
boolean hasPackage(); |
String getPackage(); |
// repeated string dependency = 3; |
java.util.List<String> getDependencyList(); |
int getDependencyCount(); |
String getDependency(int index); |
// repeated .google.protobuf.DescriptorProto message_type = 4; |
java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto> |
getMessageTypeList(); |
com.google.protobuf.DescriptorProtos.DescriptorProto getMessageType(int index); |
int getMessageTypeCount(); |
java.util.List<? extends com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder> |
getMessageTypeOrBuilderList(); |
com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder getMessageTypeOrBuilder( |
int index); |
// repeated .google.protobuf.EnumDescriptorProto enum_type = 5; |
java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto> |
getEnumTypeList(); |
com.google.protobuf.DescriptorProtos.EnumDescriptorProto getEnumType(int index); |
int getEnumTypeCount(); |
java.util.List<? extends com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder> |
getEnumTypeOrBuilderList(); |
com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder getEnumTypeOrBuilder( |
int index); |
// repeated .google.protobuf.ServiceDescriptorProto service = 6; |
java.util.List<com.google.protobuf.DescriptorProtos.ServiceDescriptorProto> |
getServiceList(); |
com.google.protobuf.DescriptorProtos.ServiceDescriptorProto getService(int index); |
int getServiceCount(); |
java.util.List<? extends com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder> |
getServiceOrBuilderList(); |
com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder getServiceOrBuilder( |
int index); |
// repeated .google.protobuf.FieldDescriptorProto extension = 7; |
java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> |
getExtensionList(); |
com.google.protobuf.DescriptorProtos.FieldDescriptorProto getExtension(int index); |
int getExtensionCount(); |
java.util.List<? extends com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> |
getExtensionOrBuilderList(); |
com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder getExtensionOrBuilder( |
int index); |
// optional .google.protobuf.FileOptions options = 8; |
boolean hasOptions(); |
com.google.protobuf.DescriptorProtos.FileOptions getOptions(); |
com.google.protobuf.DescriptorProtos.FileOptionsOrBuilder getOptionsOrBuilder(); |
// optional .google.protobuf.SourceCodeInfo source_code_info = 9; |
boolean hasSourceCodeInfo(); |
com.google.protobuf.DescriptorProtos.SourceCodeInfo getSourceCodeInfo(); |
com.google.protobuf.DescriptorProtos.SourceCodeInfoOrBuilder getSourceCodeInfoOrBuilder(); |
} |
public static final class FileDescriptorProto extends |
com.google.protobuf.GeneratedMessage |
implements FileDescriptorProtoOrBuilder { |
// Use FileDescriptorProto.newBuilder() to construct. |
private FileDescriptorProto(Builder builder) { |
super(builder); |
} |
private FileDescriptorProto(boolean noInit) {} |
private static final FileDescriptorProto defaultInstance; |
public static FileDescriptorProto getDefaultInstance() { |
return defaultInstance; |
} |
public FileDescriptorProto getDefaultInstanceForType() { |
return defaultInstance; |
} |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileDescriptorProto_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileDescriptorProto_fieldAccessorTable; |
} |
private int bitField0_; |
// optional string name = 1; |
public static final int NAME_FIELD_NUMBER = 1; |
private java.lang.Object name_; |
public boolean hasName() { |
return ((bitField0_ & 0x00000001) == 0x00000001); |
} |
public String getName() { |
java.lang.Object ref = name_; |
if (ref instanceof String) { |
return (String) ref; |
} else { |
com.google.protobuf.ByteString bs = |
(com.google.protobuf.ByteString) ref; |
String s = bs.toStringUtf8(); |
if (com.google.protobuf.Internal.isValidUtf8(bs)) { |
name_ = s; |
} |
return s; |
} |
} |
private com.google.protobuf.ByteString getNameBytes() { |
java.lang.Object ref = name_; |
if (ref instanceof String) { |
com.google.protobuf.ByteString b = |
com.google.protobuf.ByteString.copyFromUtf8((String) ref); |
name_ = b; |
return b; |
} else { |
return (com.google.protobuf.ByteString) ref; |
} |
} |
// optional string package = 2; |
public static final int PACKAGE_FIELD_NUMBER = 2; |
private java.lang.Object package_; |
public boolean hasPackage() { |
return ((bitField0_ & 0x00000002) == 0x00000002); |
} |
public String getPackage() { |
java.lang.Object ref = package_; |
if (ref instanceof String) { |
return (String) ref; |
} else { |
com.google.protobuf.ByteString bs = |
(com.google.protobuf.ByteString) ref; |
String s = bs.toStringUtf8(); |
if (com.google.protobuf.Internal.isValidUtf8(bs)) { |
package_ = s; |
} |
return s; |
} |
} |
private com.google.protobuf.ByteString getPackageBytes() { |
java.lang.Object ref = package_; |
if (ref instanceof String) { |
com.google.protobuf.ByteString b = |
com.google.protobuf.ByteString.copyFromUtf8((String) ref); |
package_ = b; |
return b; |
} else { |
return (com.google.protobuf.ByteString) ref; |
} |
} |
// repeated string dependency = 3; |
public static final int DEPENDENCY_FIELD_NUMBER = 3; |
private com.google.protobuf.LazyStringList dependency_; |
public java.util.List<String> |
getDependencyList() { |
return dependency_; |
} |
public int getDependencyCount() { |
return dependency_.size(); |
} |
public String getDependency(int index) { |
return dependency_.get(index); |
} |
// repeated .google.protobuf.DescriptorProto message_type = 4; |
public static final int MESSAGE_TYPE_FIELD_NUMBER = 4; |
private java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto> messageType_; |
public java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto> getMessageTypeList() { |
return messageType_; |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder> |
getMessageTypeOrBuilderList() { |
return messageType_; |
} |
public int getMessageTypeCount() { |
return messageType_.size(); |
} |
public com.google.protobuf.DescriptorProtos.DescriptorProto getMessageType(int index) { |
return messageType_.get(index); |
} |
public com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder getMessageTypeOrBuilder( |
int index) { |
return messageType_.get(index); |
} |
// repeated .google.protobuf.EnumDescriptorProto enum_type = 5; |
public static final int ENUM_TYPE_FIELD_NUMBER = 5; |
private java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto> enumType_; |
public java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto> getEnumTypeList() { |
return enumType_; |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder> |
getEnumTypeOrBuilderList() { |
return enumType_; |
} |
public int getEnumTypeCount() { |
return enumType_.size(); |
} |
public com.google.protobuf.DescriptorProtos.EnumDescriptorProto getEnumType(int index) { |
return enumType_.get(index); |
} |
public com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder getEnumTypeOrBuilder( |
int index) { |
return enumType_.get(index); |
} |
// repeated .google.protobuf.ServiceDescriptorProto service = 6; |
public static final int SERVICE_FIELD_NUMBER = 6; |
private java.util.List<com.google.protobuf.DescriptorProtos.ServiceDescriptorProto> service_; |
public java.util.List<com.google.protobuf.DescriptorProtos.ServiceDescriptorProto> getServiceList() { |
return service_; |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder> |
getServiceOrBuilderList() { |
return service_; |
} |
public int getServiceCount() { |
return service_.size(); |
} |
public com.google.protobuf.DescriptorProtos.ServiceDescriptorProto getService(int index) { |
return service_.get(index); |
} |
public com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder getServiceOrBuilder( |
int index) { |
return service_.get(index); |
} |
// repeated .google.protobuf.FieldDescriptorProto extension = 7; |
public static final int EXTENSION_FIELD_NUMBER = 7; |
private java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> extension_; |
public java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> getExtensionList() { |
return extension_; |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> |
getExtensionOrBuilderList() { |
return extension_; |
} |
public int getExtensionCount() { |
return extension_.size(); |
} |
public com.google.protobuf.DescriptorProtos.FieldDescriptorProto getExtension(int index) { |
return extension_.get(index); |
} |
public com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder getExtensionOrBuilder( |
int index) { |
return extension_.get(index); |
} |
// optional .google.protobuf.FileOptions options = 8; |
public static final int OPTIONS_FIELD_NUMBER = 8; |
private com.google.protobuf.DescriptorProtos.FileOptions options_; |
public boolean hasOptions() { |
return ((bitField0_ & 0x00000004) == 0x00000004); |
} |
public com.google.protobuf.DescriptorProtos.FileOptions getOptions() { |
return options_; |
} |
public com.google.protobuf.DescriptorProtos.FileOptionsOrBuilder getOptionsOrBuilder() { |
return options_; |
} |
// optional .google.protobuf.SourceCodeInfo source_code_info = 9; |
public static final int SOURCE_CODE_INFO_FIELD_NUMBER = 9; |
private com.google.protobuf.DescriptorProtos.SourceCodeInfo sourceCodeInfo_; |
public boolean hasSourceCodeInfo() { |
return ((bitField0_ & 0x00000008) == 0x00000008); |
} |
public com.google.protobuf.DescriptorProtos.SourceCodeInfo getSourceCodeInfo() { |
return sourceCodeInfo_; |
} |
public com.google.protobuf.DescriptorProtos.SourceCodeInfoOrBuilder getSourceCodeInfoOrBuilder() { |
return sourceCodeInfo_; |
} |
private void initFields() { |
name_ = ""; |
package_ = ""; |
dependency_ = com.google.protobuf.LazyStringArrayList.EMPTY; |
messageType_ = java.util.Collections.emptyList(); |
enumType_ = java.util.Collections.emptyList(); |
service_ = java.util.Collections.emptyList(); |
extension_ = java.util.Collections.emptyList(); |
options_ = com.google.protobuf.DescriptorProtos.FileOptions.getDefaultInstance(); |
sourceCodeInfo_ = com.google.protobuf.DescriptorProtos.SourceCodeInfo.getDefaultInstance(); |
} |
private byte memoizedIsInitialized = -1; |
public final boolean isInitialized() { |
byte isInitialized = memoizedIsInitialized; |
if (isInitialized != -1) return isInitialized == 1; |
for (int i = 0; i < getMessageTypeCount(); i++) { |
if (!getMessageType(i).isInitialized()) { |
memoizedIsInitialized = 0; |
return false; |
} |
} |
for (int i = 0; i < getEnumTypeCount(); i++) { |
if (!getEnumType(i).isInitialized()) { |
memoizedIsInitialized = 0; |
return false; |
} |
} |
for (int i = 0; i < getServiceCount(); i++) { |
if (!getService(i).isInitialized()) { |
memoizedIsInitialized = 0; |
return false; |
} |
} |
for (int i = 0; i < getExtensionCount(); i++) { |
if (!getExtension(i).isInitialized()) { |
memoizedIsInitialized = 0; |
return false; |
} |
} |
if (hasOptions()) { |
if (!getOptions().isInitialized()) { |
memoizedIsInitialized = 0; |
return false; |
} |
} |
memoizedIsInitialized = 1; |
return true; |
} |
public void writeTo(com.google.protobuf.CodedOutputStream output) |
throws java.io.IOException { |
getSerializedSize(); |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
output.writeBytes(1, getNameBytes()); |
} |
if (((bitField0_ & 0x00000002) == 0x00000002)) { |
output.writeBytes(2, getPackageBytes()); |
} |
for (int i = 0; i < dependency_.size(); i++) { |
output.writeBytes(3, dependency_.getByteString(i)); |
} |
for (int i = 0; i < messageType_.size(); i++) { |
output.writeMessage(4, messageType_.get(i)); |
} |
for (int i = 0; i < enumType_.size(); i++) { |
output.writeMessage(5, enumType_.get(i)); |
} |
for (int i = 0; i < service_.size(); i++) { |
output.writeMessage(6, service_.get(i)); |
} |
for (int i = 0; i < extension_.size(); i++) { |
output.writeMessage(7, extension_.get(i)); |
} |
if (((bitField0_ & 0x00000004) == 0x00000004)) { |
output.writeMessage(8, options_); |
} |
if (((bitField0_ & 0x00000008) == 0x00000008)) { |
output.writeMessage(9, sourceCodeInfo_); |
} |
getUnknownFields().writeTo(output); |
} |
private int memoizedSerializedSize = -1; |
public int getSerializedSize() { |
int size = memoizedSerializedSize; |
if (size != -1) return size; |
size = 0; |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
size += com.google.protobuf.CodedOutputStream |
.computeBytesSize(1, getNameBytes()); |
} |
if (((bitField0_ & 0x00000002) == 0x00000002)) { |
size += com.google.protobuf.CodedOutputStream |
.computeBytesSize(2, getPackageBytes()); |
} |
{ |
int dataSize = 0; |
for (int i = 0; i < dependency_.size(); i++) { |
dataSize += com.google.protobuf.CodedOutputStream |
.computeBytesSizeNoTag(dependency_.getByteString(i)); |
} |
size += dataSize; |
size += 1 * getDependencyList().size(); |
} |
for (int i = 0; i < messageType_.size(); i++) { |
size += com.google.protobuf.CodedOutputStream |
.computeMessageSize(4, messageType_.get(i)); |
} |
for (int i = 0; i < enumType_.size(); i++) { |
size += com.google.protobuf.CodedOutputStream |
.computeMessageSize(5, enumType_.get(i)); |
} |
for (int i = 0; i < service_.size(); i++) { |
size += com.google.protobuf.CodedOutputStream |
.computeMessageSize(6, service_.get(i)); |
} |
for (int i = 0; i < extension_.size(); i++) { |
size += com.google.protobuf.CodedOutputStream |
.computeMessageSize(7, extension_.get(i)); |
} |
if (((bitField0_ & 0x00000004) == 0x00000004)) { |
size += com.google.protobuf.CodedOutputStream |
.computeMessageSize(8, options_); |
} |
if (((bitField0_ & 0x00000008) == 0x00000008)) { |
size += com.google.protobuf.CodedOutputStream |
.computeMessageSize(9, sourceCodeInfo_); |
} |
size += getUnknownFields().getSerializedSize(); |
memoizedSerializedSize = size; |
return size; |
} |
private static final long serialVersionUID = 0L; |
@java.lang.Override |
protected java.lang.Object writeReplace() |
throws java.io.ObjectStreamException { |
return super.writeReplace(); |
} |
public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseFrom( |
com.google.protobuf.ByteString data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseFrom( |
com.google.protobuf.ByteString data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseFrom(byte[] data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseFrom( |
byte[] data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseFrom(java.io.InputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseDelimitedFrom(java.io.InputStream input) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseDelimitedFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input, extensionRegistry)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseFrom( |
com.google.protobuf.CodedInputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.FileDescriptorProto parseFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static Builder newBuilder() { return Builder.create(); } |
public Builder newBuilderForType() { return newBuilder(); } |
public static Builder newBuilder(com.google.protobuf.DescriptorProtos.FileDescriptorProto prototype) { |
return newBuilder().mergeFrom(prototype); |
} |
public Builder toBuilder() { return newBuilder(this); } |
@java.lang.Override |
protected Builder newBuilderForType( |
com.google.protobuf.GeneratedMessage.BuilderParent parent) { |
Builder builder = new Builder(parent); |
return builder; |
} |
public static final class Builder extends |
com.google.protobuf.GeneratedMessage.Builder<Builder> |
implements com.google.protobuf.DescriptorProtos.FileDescriptorProtoOrBuilder { |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileDescriptorProto_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileDescriptorProto_fieldAccessorTable; |
} |
// Construct using com.google.protobuf.DescriptorProtos.FileDescriptorProto.newBuilder() |
private Builder() { |
maybeForceBuilderInitialization(); |
} |
private Builder(BuilderParent parent) { |
super(parent); |
maybeForceBuilderInitialization(); |
} |
private void maybeForceBuilderInitialization() { |
if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { |
getMessageTypeFieldBuilder(); |
getEnumTypeFieldBuilder(); |
getServiceFieldBuilder(); |
getExtensionFieldBuilder(); |
getOptionsFieldBuilder(); |
getSourceCodeInfoFieldBuilder(); |
} |
} |
private static Builder create() { |
return new Builder(); |
} |
public Builder clear() { |
super.clear(); |
name_ = ""; |
bitField0_ = (bitField0_ & ~0x00000001); |
package_ = ""; |
bitField0_ = (bitField0_ & ~0x00000002); |
dependency_ = com.google.protobuf.LazyStringArrayList.EMPTY; |
bitField0_ = (bitField0_ & ~0x00000004); |
if (messageTypeBuilder_ == null) { |
messageType_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000008); |
} else { |
messageTypeBuilder_.clear(); |
} |
if (enumTypeBuilder_ == null) { |
enumType_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000010); |
} else { |
enumTypeBuilder_.clear(); |
} |
if (serviceBuilder_ == null) { |
service_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000020); |
} else { |
serviceBuilder_.clear(); |
} |
if (extensionBuilder_ == null) { |
extension_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000040); |
} else { |
extensionBuilder_.clear(); |
} |
if (optionsBuilder_ == null) { |
options_ = com.google.protobuf.DescriptorProtos.FileOptions.getDefaultInstance(); |
} else { |
optionsBuilder_.clear(); |
} |
bitField0_ = (bitField0_ & ~0x00000080); |
if (sourceCodeInfoBuilder_ == null) { |
sourceCodeInfo_ = com.google.protobuf.DescriptorProtos.SourceCodeInfo.getDefaultInstance(); |
} else { |
sourceCodeInfoBuilder_.clear(); |
} |
bitField0_ = (bitField0_ & ~0x00000100); |
return this; |
} |
public Builder clone() { |
return create().mergeFrom(buildPartial()); |
} |
public com.google.protobuf.Descriptors.Descriptor |
getDescriptorForType() { |
return com.google.protobuf.DescriptorProtos.FileDescriptorProto.getDescriptor(); |
} |
public com.google.protobuf.DescriptorProtos.FileDescriptorProto getDefaultInstanceForType() { |
return com.google.protobuf.DescriptorProtos.FileDescriptorProto.getDefaultInstance(); |
} |
public com.google.protobuf.DescriptorProtos.FileDescriptorProto build() { |
com.google.protobuf.DescriptorProtos.FileDescriptorProto result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException(result); |
} |
return result; |
} |
private com.google.protobuf.DescriptorProtos.FileDescriptorProto buildParsed() |
throws com.google.protobuf.InvalidProtocolBufferException { |
com.google.protobuf.DescriptorProtos.FileDescriptorProto result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException( |
result).asInvalidProtocolBufferException(); |
} |
return result; |
} |
public com.google.protobuf.DescriptorProtos.FileDescriptorProto buildPartial() { |
com.google.protobuf.DescriptorProtos.FileDescriptorProto result = new com.google.protobuf.DescriptorProtos.FileDescriptorProto(this); |
int from_bitField0_ = bitField0_; |
int to_bitField0_ = 0; |
if (((from_bitField0_ & 0x00000001) == 0x00000001)) { |
to_bitField0_ |= 0x00000001; |
} |
result.name_ = name_; |
if (((from_bitField0_ & 0x00000002) == 0x00000002)) { |
to_bitField0_ |= 0x00000002; |
} |
result.package_ = package_; |
if (((bitField0_ & 0x00000004) == 0x00000004)) { |
dependency_ = new com.google.protobuf.UnmodifiableLazyStringList( |
dependency_); |
bitField0_ = (bitField0_ & ~0x00000004); |
} |
result.dependency_ = dependency_; |
if (messageTypeBuilder_ == null) { |
if (((bitField0_ & 0x00000008) == 0x00000008)) { |
messageType_ = java.util.Collections.unmodifiableList(messageType_); |
bitField0_ = (bitField0_ & ~0x00000008); |
} |
result.messageType_ = messageType_; |
} else { |
result.messageType_ = messageTypeBuilder_.build(); |
} |
if (enumTypeBuilder_ == null) { |
if (((bitField0_ & 0x00000010) == 0x00000010)) { |
enumType_ = java.util.Collections.unmodifiableList(enumType_); |
bitField0_ = (bitField0_ & ~0x00000010); |
} |
result.enumType_ = enumType_; |
} else { |
result.enumType_ = enumTypeBuilder_.build(); |
} |
if (serviceBuilder_ == null) { |
if (((bitField0_ & 0x00000020) == 0x00000020)) { |
service_ = java.util.Collections.unmodifiableList(service_); |
bitField0_ = (bitField0_ & ~0x00000020); |
} |
result.service_ = service_; |
} else { |
result.service_ = serviceBuilder_.build(); |
} |
if (extensionBuilder_ == null) { |
if (((bitField0_ & 0x00000040) == 0x00000040)) { |
extension_ = java.util.Collections.unmodifiableList(extension_); |
bitField0_ = (bitField0_ & ~0x00000040); |
} |
result.extension_ = extension_; |
} else { |
result.extension_ = extensionBuilder_.build(); |
} |
if (((from_bitField0_ & 0x00000080) == 0x00000080)) { |
to_bitField0_ |= 0x00000004; |
} |
if (optionsBuilder_ == null) { |
result.options_ = options_; |
} else { |
result.options_ = optionsBuilder_.build(); |
} |
if (((from_bitField0_ & 0x00000100) == 0x00000100)) { |
to_bitField0_ |= 0x00000008; |
} |
if (sourceCodeInfoBuilder_ == null) { |
result.sourceCodeInfo_ = sourceCodeInfo_; |
} else { |
result.sourceCodeInfo_ = sourceCodeInfoBuilder_.build(); |
} |
result.bitField0_ = to_bitField0_; |
onBuilt(); |
return result; |
} |
public Builder mergeFrom(com.google.protobuf.Message other) { |
if (other instanceof com.google.protobuf.DescriptorProtos.FileDescriptorProto) { |
return mergeFrom((com.google.protobuf.DescriptorProtos.FileDescriptorProto)other); |
} else { |
super.mergeFrom(other); |
return this; |
} |
} |
public Builder mergeFrom(com.google.protobuf.DescriptorProtos.FileDescriptorProto other) { |
if (other == com.google.protobuf.DescriptorProtos.FileDescriptorProto.getDefaultInstance()) return this; |
if (other.hasName()) { |
setName(other.getName()); |
} |
if (other.hasPackage()) { |
setPackage(other.getPackage()); |
} |
if (!other.dependency_.isEmpty()) { |
if (dependency_.isEmpty()) { |
dependency_ = other.dependency_; |
bitField0_ = (bitField0_ & ~0x00000004); |
} else { |
ensureDependencyIsMutable(); |
dependency_.addAll(other.dependency_); |
} |
onChanged(); |
} |
if (messageTypeBuilder_ == null) { |
if (!other.messageType_.isEmpty()) { |
if (messageType_.isEmpty()) { |
messageType_ = other.messageType_; |
bitField0_ = (bitField0_ & ~0x00000008); |
} else { |
ensureMessageTypeIsMutable(); |
messageType_.addAll(other.messageType_); |
} |
onChanged(); |
} |
} else { |
if (!other.messageType_.isEmpty()) { |
if (messageTypeBuilder_.isEmpty()) { |
messageTypeBuilder_.dispose(); |
messageTypeBuilder_ = null; |
messageType_ = other.messageType_; |
bitField0_ = (bitField0_ & ~0x00000008); |
messageTypeBuilder_ = |
com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? |
getMessageTypeFieldBuilder() : null; |
} else { |
messageTypeBuilder_.addAllMessages(other.messageType_); |
} |
} |
} |
if (enumTypeBuilder_ == null) { |
if (!other.enumType_.isEmpty()) { |
if (enumType_.isEmpty()) { |
enumType_ = other.enumType_; |
bitField0_ = (bitField0_ & ~0x00000010); |
} else { |
ensureEnumTypeIsMutable(); |
enumType_.addAll(other.enumType_); |
} |
onChanged(); |
} |
} else { |
if (!other.enumType_.isEmpty()) { |
if (enumTypeBuilder_.isEmpty()) { |
enumTypeBuilder_.dispose(); |
enumTypeBuilder_ = null; |
enumType_ = other.enumType_; |
bitField0_ = (bitField0_ & ~0x00000010); |
enumTypeBuilder_ = |
com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? |
getEnumTypeFieldBuilder() : null; |
} else { |
enumTypeBuilder_.addAllMessages(other.enumType_); |
} |
} |
} |
if (serviceBuilder_ == null) { |
if (!other.service_.isEmpty()) { |
if (service_.isEmpty()) { |
service_ = other.service_; |
bitField0_ = (bitField0_ & ~0x00000020); |
} else { |
ensureServiceIsMutable(); |
service_.addAll(other.service_); |
} |
onChanged(); |
} |
} else { |
if (!other.service_.isEmpty()) { |
if (serviceBuilder_.isEmpty()) { |
serviceBuilder_.dispose(); |
serviceBuilder_ = null; |
service_ = other.service_; |
bitField0_ = (bitField0_ & ~0x00000020); |
serviceBuilder_ = |
com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? |
getServiceFieldBuilder() : null; |
} else { |
serviceBuilder_.addAllMessages(other.service_); |
} |
} |
} |
if (extensionBuilder_ == null) { |
if (!other.extension_.isEmpty()) { |
if (extension_.isEmpty()) { |
extension_ = other.extension_; |
bitField0_ = (bitField0_ & ~0x00000040); |
} else { |
ensureExtensionIsMutable(); |
extension_.addAll(other.extension_); |
} |
onChanged(); |
} |
} else { |
if (!other.extension_.isEmpty()) { |
if (extensionBuilder_.isEmpty()) { |
extensionBuilder_.dispose(); |
extensionBuilder_ = null; |
extension_ = other.extension_; |
bitField0_ = (bitField0_ & ~0x00000040); |
extensionBuilder_ = |
com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? |
getExtensionFieldBuilder() : null; |
} else { |
extensionBuilder_.addAllMessages(other.extension_); |
} |
} |
} |
if (other.hasOptions()) { |
mergeOptions(other.getOptions()); |
} |
if (other.hasSourceCodeInfo()) { |
mergeSourceCodeInfo(other.getSourceCodeInfo()); |
} |
this.mergeUnknownFields(other.getUnknownFields()); |
return this; |
} |
public final boolean isInitialized() { |
for (int i = 0; i < getMessageTypeCount(); i++) { |
if (!getMessageType(i).isInitialized()) { |
return false; |
} |
} |
for (int i = 0; i < getEnumTypeCount(); i++) { |
if (!getEnumType(i).isInitialized()) { |
return false; |
} |
} |
for (int i = 0; i < getServiceCount(); i++) { |
if (!getService(i).isInitialized()) { |
return false; |
} |
} |
for (int i = 0; i < getExtensionCount(); i++) { |
if (!getExtension(i).isInitialized()) { |
return false; |
} |
} |
if (hasOptions()) { |
if (!getOptions().isInitialized()) { |
return false; |
} |
} |
return true; |
} |
public Builder mergeFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
com.google.protobuf.UnknownFieldSet.Builder unknownFields = |
com.google.protobuf.UnknownFieldSet.newBuilder( |
this.getUnknownFields()); |
while (true) { |
int tag = input.readTag(); |
switch (tag) { |
case 0: |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
default: { |
if (!parseUnknownField(input, unknownFields, |
extensionRegistry, tag)) { |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
} |
break; |
} |
case 10: { |
bitField0_ |= 0x00000001; |
name_ = input.readBytes(); |
break; |
} |
case 18: { |
bitField0_ |= 0x00000002; |
package_ = input.readBytes(); |
break; |
} |
case 26: { |
ensureDependencyIsMutable(); |
dependency_.add(input.readBytes()); |
break; |
} |
case 34: { |
com.google.protobuf.DescriptorProtos.DescriptorProto.Builder subBuilder = com.google.protobuf.DescriptorProtos.DescriptorProto.newBuilder(); |
input.readMessage(subBuilder, extensionRegistry); |
addMessageType(subBuilder.buildPartial()); |
break; |
} |
case 42: { |
com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder subBuilder = com.google.protobuf.DescriptorProtos.EnumDescriptorProto.newBuilder(); |
input.readMessage(subBuilder, extensionRegistry); |
addEnumType(subBuilder.buildPartial()); |
break; |
} |
case 50: { |
com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.Builder subBuilder = com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.newBuilder(); |
input.readMessage(subBuilder, extensionRegistry); |
addService(subBuilder.buildPartial()); |
break; |
} |
case 58: { |
com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder subBuilder = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.newBuilder(); |
input.readMessage(subBuilder, extensionRegistry); |
addExtension(subBuilder.buildPartial()); |
break; |
} |
case 66: { |
com.google.protobuf.DescriptorProtos.FileOptions.Builder subBuilder = com.google.protobuf.DescriptorProtos.FileOptions.newBuilder(); |
if (hasOptions()) { |
subBuilder.mergeFrom(getOptions()); |
} |
input.readMessage(subBuilder, extensionRegistry); |
setOptions(subBuilder.buildPartial()); |
break; |
} |
case 74: { |
com.google.protobuf.DescriptorProtos.SourceCodeInfo.Builder subBuilder = com.google.protobuf.DescriptorProtos.SourceCodeInfo.newBuilder(); |
if (hasSourceCodeInfo()) { |
subBuilder.mergeFrom(getSourceCodeInfo()); |
} |
input.readMessage(subBuilder, extensionRegistry); |
setSourceCodeInfo(subBuilder.buildPartial()); |
break; |
} |
} |
} |
} |
private int bitField0_; |
// optional string name = 1; |
private java.lang.Object name_ = ""; |
public boolean hasName() { |
return ((bitField0_ & 0x00000001) == 0x00000001); |
} |
public String getName() { |
java.lang.Object ref = name_; |
if (!(ref instanceof String)) { |
String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); |
name_ = s; |
return s; |
} else { |
return (String) ref; |
} |
} |
public Builder setName(String value) { |
if (value == null) { |
throw new NullPointerException(); |
} |
bitField0_ |= 0x00000001; |
name_ = value; |
onChanged(); |
return this; |
} |
public Builder clearName() { |
bitField0_ = (bitField0_ & ~0x00000001); |
name_ = getDefaultInstance().getName(); |
onChanged(); |
return this; |
} |
void setName(com.google.protobuf.ByteString value) { |
bitField0_ |= 0x00000001; |
name_ = value; |
onChanged(); |
} |
// optional string package = 2; |
private java.lang.Object package_ = ""; |
public boolean hasPackage() { |
return ((bitField0_ & 0x00000002) == 0x00000002); |
} |
public String getPackage() { |
java.lang.Object ref = package_; |
if (!(ref instanceof String)) { |
String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); |
package_ = s; |
return s; |
} else { |
return (String) ref; |
} |
} |
public Builder setPackage(String value) { |
if (value == null) { |
throw new NullPointerException(); |
} |
bitField0_ |= 0x00000002; |
package_ = value; |
onChanged(); |
return this; |
} |
public Builder clearPackage() { |
bitField0_ = (bitField0_ & ~0x00000002); |
package_ = getDefaultInstance().getPackage(); |
onChanged(); |
return this; |
} |
void setPackage(com.google.protobuf.ByteString value) { |
bitField0_ |= 0x00000002; |
package_ = value; |
onChanged(); |
} |
// repeated string dependency = 3; |
private com.google.protobuf.LazyStringList dependency_ = com.google.protobuf.LazyStringArrayList.EMPTY; |
private void ensureDependencyIsMutable() { |
if (!((bitField0_ & 0x00000004) == 0x00000004)) { |
dependency_ = new com.google.protobuf.LazyStringArrayList(dependency_); |
bitField0_ |= 0x00000004; |
} |
} |
public java.util.List<String> |
getDependencyList() { |
return java.util.Collections.unmodifiableList(dependency_); |
} |
public int getDependencyCount() { |
return dependency_.size(); |
} |
public String getDependency(int index) { |
return dependency_.get(index); |
} |
public Builder setDependency( |
int index, String value) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureDependencyIsMutable(); |
dependency_.set(index, value); |
onChanged(); |
return this; |
} |
public Builder addDependency(String value) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureDependencyIsMutable(); |
dependency_.add(value); |
onChanged(); |
return this; |
} |
public Builder addAllDependency( |
java.lang.Iterable<String> values) { |
ensureDependencyIsMutable(); |
super.addAll(values, dependency_); |
onChanged(); |
return this; |
} |
public Builder clearDependency() { |
dependency_ = com.google.protobuf.LazyStringArrayList.EMPTY; |
bitField0_ = (bitField0_ & ~0x00000004); |
onChanged(); |
return this; |
} |
void addDependency(com.google.protobuf.ByteString value) { |
ensureDependencyIsMutable(); |
dependency_.add(value); |
onChanged(); |
} |
// repeated .google.protobuf.DescriptorProto message_type = 4; |
private java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto> messageType_ = |
java.util.Collections.emptyList(); |
private void ensureMessageTypeIsMutable() { |
if (!((bitField0_ & 0x00000008) == 0x00000008)) { |
messageType_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.DescriptorProto>(messageType_); |
bitField0_ |= 0x00000008; |
} |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.DescriptorProto, com.google.protobuf.DescriptorProtos.DescriptorProto.Builder, com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder> messageTypeBuilder_; |
public java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto> getMessageTypeList() { |
if (messageTypeBuilder_ == null) { |
return java.util.Collections.unmodifiableList(messageType_); |
} else { |
return messageTypeBuilder_.getMessageList(); |
} |
} |
public int getMessageTypeCount() { |
if (messageTypeBuilder_ == null) { |
return messageType_.size(); |
} else { |
return messageTypeBuilder_.getCount(); |
} |
} |
public com.google.protobuf.DescriptorProtos.DescriptorProto getMessageType(int index) { |
if (messageTypeBuilder_ == null) { |
return messageType_.get(index); |
} else { |
return messageTypeBuilder_.getMessage(index); |
} |
} |
public Builder setMessageType( |
int index, com.google.protobuf.DescriptorProtos.DescriptorProto value) { |
if (messageTypeBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureMessageTypeIsMutable(); |
messageType_.set(index, value); |
onChanged(); |
} else { |
messageTypeBuilder_.setMessage(index, value); |
} |
return this; |
} |
public Builder setMessageType( |
int index, com.google.protobuf.DescriptorProtos.DescriptorProto.Builder builderForValue) { |
if (messageTypeBuilder_ == null) { |
ensureMessageTypeIsMutable(); |
messageType_.set(index, builderForValue.build()); |
onChanged(); |
} else { |
messageTypeBuilder_.setMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addMessageType(com.google.protobuf.DescriptorProtos.DescriptorProto value) { |
if (messageTypeBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureMessageTypeIsMutable(); |
messageType_.add(value); |
onChanged(); |
} else { |
messageTypeBuilder_.addMessage(value); |
} |
return this; |
} |
public Builder addMessageType( |
int index, com.google.protobuf.DescriptorProtos.DescriptorProto value) { |
if (messageTypeBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureMessageTypeIsMutable(); |
messageType_.add(index, value); |
onChanged(); |
} else { |
messageTypeBuilder_.addMessage(index, value); |
} |
return this; |
} |
public Builder addMessageType( |
com.google.protobuf.DescriptorProtos.DescriptorProto.Builder builderForValue) { |
if (messageTypeBuilder_ == null) { |
ensureMessageTypeIsMutable(); |
messageType_.add(builderForValue.build()); |
onChanged(); |
} else { |
messageTypeBuilder_.addMessage(builderForValue.build()); |
} |
return this; |
} |
public Builder addMessageType( |
int index, com.google.protobuf.DescriptorProtos.DescriptorProto.Builder builderForValue) { |
if (messageTypeBuilder_ == null) { |
ensureMessageTypeIsMutable(); |
messageType_.add(index, builderForValue.build()); |
onChanged(); |
} else { |
messageTypeBuilder_.addMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addAllMessageType( |
java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.DescriptorProto> values) { |
if (messageTypeBuilder_ == null) { |
ensureMessageTypeIsMutable(); |
super.addAll(values, messageType_); |
onChanged(); |
} else { |
messageTypeBuilder_.addAllMessages(values); |
} |
return this; |
} |
public Builder clearMessageType() { |
if (messageTypeBuilder_ == null) { |
messageType_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000008); |
onChanged(); |
} else { |
messageTypeBuilder_.clear(); |
} |
return this; |
} |
public Builder removeMessageType(int index) { |
if (messageTypeBuilder_ == null) { |
ensureMessageTypeIsMutable(); |
messageType_.remove(index); |
onChanged(); |
} else { |
messageTypeBuilder_.remove(index); |
} |
return this; |
} |
public com.google.protobuf.DescriptorProtos.DescriptorProto.Builder getMessageTypeBuilder( |
int index) { |
return getMessageTypeFieldBuilder().getBuilder(index); |
} |
public com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder getMessageTypeOrBuilder( |
int index) { |
if (messageTypeBuilder_ == null) { |
return messageType_.get(index); } else { |
return messageTypeBuilder_.getMessageOrBuilder(index); |
} |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder> |
getMessageTypeOrBuilderList() { |
if (messageTypeBuilder_ != null) { |
return messageTypeBuilder_.getMessageOrBuilderList(); |
} else { |
return java.util.Collections.unmodifiableList(messageType_); |
} |
} |
public com.google.protobuf.DescriptorProtos.DescriptorProto.Builder addMessageTypeBuilder() { |
return getMessageTypeFieldBuilder().addBuilder( |
com.google.protobuf.DescriptorProtos.DescriptorProto.getDefaultInstance()); |
} |
public com.google.protobuf.DescriptorProtos.DescriptorProto.Builder addMessageTypeBuilder( |
int index) { |
return getMessageTypeFieldBuilder().addBuilder( |
index, com.google.protobuf.DescriptorProtos.DescriptorProto.getDefaultInstance()); |
} |
public java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto.Builder> |
getMessageTypeBuilderList() { |
return getMessageTypeFieldBuilder().getBuilderList(); |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.DescriptorProto, com.google.protobuf.DescriptorProtos.DescriptorProto.Builder, com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder> |
getMessageTypeFieldBuilder() { |
if (messageTypeBuilder_ == null) { |
messageTypeBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.DescriptorProto, com.google.protobuf.DescriptorProtos.DescriptorProto.Builder, com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder>( |
messageType_, |
((bitField0_ & 0x00000008) == 0x00000008), |
getParentForChildren(), |
isClean()); |
messageType_ = null; |
} |
return messageTypeBuilder_; |
} |
// repeated .google.protobuf.EnumDescriptorProto enum_type = 5; |
private java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto> enumType_ = |
java.util.Collections.emptyList(); |
private void ensureEnumTypeIsMutable() { |
if (!((bitField0_ & 0x00000010) == 0x00000010)) { |
enumType_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.EnumDescriptorProto>(enumType_); |
bitField0_ |= 0x00000010; |
} |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.EnumDescriptorProto, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder> enumTypeBuilder_; |
public java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto> getEnumTypeList() { |
if (enumTypeBuilder_ == null) { |
return java.util.Collections.unmodifiableList(enumType_); |
} else { |
return enumTypeBuilder_.getMessageList(); |
} |
} |
public int getEnumTypeCount() { |
if (enumTypeBuilder_ == null) { |
return enumType_.size(); |
} else { |
return enumTypeBuilder_.getCount(); |
} |
} |
public com.google.protobuf.DescriptorProtos.EnumDescriptorProto getEnumType(int index) { |
if (enumTypeBuilder_ == null) { |
return enumType_.get(index); |
} else { |
return enumTypeBuilder_.getMessage(index); |
} |
} |
public Builder setEnumType( |
int index, com.google.protobuf.DescriptorProtos.EnumDescriptorProto value) { |
if (enumTypeBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureEnumTypeIsMutable(); |
enumType_.set(index, value); |
onChanged(); |
} else { |
enumTypeBuilder_.setMessage(index, value); |
} |
return this; |
} |
public Builder setEnumType( |
int index, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder builderForValue) { |
if (enumTypeBuilder_ == null) { |
ensureEnumTypeIsMutable(); |
enumType_.set(index, builderForValue.build()); |
onChanged(); |
} else { |
enumTypeBuilder_.setMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addEnumType(com.google.protobuf.DescriptorProtos.EnumDescriptorProto value) { |
if (enumTypeBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureEnumTypeIsMutable(); |
enumType_.add(value); |
onChanged(); |
} else { |
enumTypeBuilder_.addMessage(value); |
} |
return this; |
} |
public Builder addEnumType( |
int index, com.google.protobuf.DescriptorProtos.EnumDescriptorProto value) { |
if (enumTypeBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureEnumTypeIsMutable(); |
enumType_.add(index, value); |
onChanged(); |
} else { |
enumTypeBuilder_.addMessage(index, value); |
} |
return this; |
} |
public Builder addEnumType( |
com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder builderForValue) { |
if (enumTypeBuilder_ == null) { |
ensureEnumTypeIsMutable(); |
enumType_.add(builderForValue.build()); |
onChanged(); |
} else { |
enumTypeBuilder_.addMessage(builderForValue.build()); |
} |
return this; |
} |
public Builder addEnumType( |
int index, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder builderForValue) { |
if (enumTypeBuilder_ == null) { |
ensureEnumTypeIsMutable(); |
enumType_.add(index, builderForValue.build()); |
onChanged(); |
} else { |
enumTypeBuilder_.addMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addAllEnumType( |
java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.EnumDescriptorProto> values) { |
if (enumTypeBuilder_ == null) { |
ensureEnumTypeIsMutable(); |
super.addAll(values, enumType_); |
onChanged(); |
} else { |
enumTypeBuilder_.addAllMessages(values); |
} |
return this; |
} |
public Builder clearEnumType() { |
if (enumTypeBuilder_ == null) { |
enumType_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000010); |
onChanged(); |
} else { |
enumTypeBuilder_.clear(); |
} |
return this; |
} |
public Builder removeEnumType(int index) { |
if (enumTypeBuilder_ == null) { |
ensureEnumTypeIsMutable(); |
enumType_.remove(index); |
onChanged(); |
} else { |
enumTypeBuilder_.remove(index); |
} |
return this; |
} |
public com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder getEnumTypeBuilder( |
int index) { |
return getEnumTypeFieldBuilder().getBuilder(index); |
} |
public com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder getEnumTypeOrBuilder( |
int index) { |
if (enumTypeBuilder_ == null) { |
return enumType_.get(index); } else { |
return enumTypeBuilder_.getMessageOrBuilder(index); |
} |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder> |
getEnumTypeOrBuilderList() { |
if (enumTypeBuilder_ != null) { |
return enumTypeBuilder_.getMessageOrBuilderList(); |
} else { |
return java.util.Collections.unmodifiableList(enumType_); |
} |
} |
public com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder addEnumTypeBuilder() { |
return getEnumTypeFieldBuilder().addBuilder( |
com.google.protobuf.DescriptorProtos.EnumDescriptorProto.getDefaultInstance()); |
} |
public com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder addEnumTypeBuilder( |
int index) { |
return getEnumTypeFieldBuilder().addBuilder( |
index, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.getDefaultInstance()); |
} |
public java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder> |
getEnumTypeBuilderList() { |
return getEnumTypeFieldBuilder().getBuilderList(); |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.EnumDescriptorProto, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder> |
getEnumTypeFieldBuilder() { |
if (enumTypeBuilder_ == null) { |
enumTypeBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.EnumDescriptorProto, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder>( |
enumType_, |
((bitField0_ & 0x00000010) == 0x00000010), |
getParentForChildren(), |
isClean()); |
enumType_ = null; |
} |
return enumTypeBuilder_; |
} |
// repeated .google.protobuf.ServiceDescriptorProto service = 6; |
private java.util.List<com.google.protobuf.DescriptorProtos.ServiceDescriptorProto> service_ = |
java.util.Collections.emptyList(); |
private void ensureServiceIsMutable() { |
if (!((bitField0_ & 0x00000020) == 0x00000020)) { |
service_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.ServiceDescriptorProto>(service_); |
bitField0_ |= 0x00000020; |
} |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.ServiceDescriptorProto, com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder> serviceBuilder_; |
public java.util.List<com.google.protobuf.DescriptorProtos.ServiceDescriptorProto> getServiceList() { |
if (serviceBuilder_ == null) { |
return java.util.Collections.unmodifiableList(service_); |
} else { |
return serviceBuilder_.getMessageList(); |
} |
} |
public int getServiceCount() { |
if (serviceBuilder_ == null) { |
return service_.size(); |
} else { |
return serviceBuilder_.getCount(); |
} |
} |
public com.google.protobuf.DescriptorProtos.ServiceDescriptorProto getService(int index) { |
if (serviceBuilder_ == null) { |
return service_.get(index); |
} else { |
return serviceBuilder_.getMessage(index); |
} |
} |
public Builder setService( |
int index, com.google.protobuf.DescriptorProtos.ServiceDescriptorProto value) { |
if (serviceBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureServiceIsMutable(); |
service_.set(index, value); |
onChanged(); |
} else { |
serviceBuilder_.setMessage(index, value); |
} |
return this; |
} |
public Builder setService( |
int index, com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.Builder builderForValue) { |
if (serviceBuilder_ == null) { |
ensureServiceIsMutable(); |
service_.set(index, builderForValue.build()); |
onChanged(); |
} else { |
serviceBuilder_.setMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addService(com.google.protobuf.DescriptorProtos.ServiceDescriptorProto value) { |
if (serviceBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureServiceIsMutable(); |
service_.add(value); |
onChanged(); |
} else { |
serviceBuilder_.addMessage(value); |
} |
return this; |
} |
public Builder addService( |
int index, com.google.protobuf.DescriptorProtos.ServiceDescriptorProto value) { |
if (serviceBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureServiceIsMutable(); |
service_.add(index, value); |
onChanged(); |
} else { |
serviceBuilder_.addMessage(index, value); |
} |
return this; |
} |
public Builder addService( |
com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.Builder builderForValue) { |
if (serviceBuilder_ == null) { |
ensureServiceIsMutable(); |
service_.add(builderForValue.build()); |
onChanged(); |
} else { |
serviceBuilder_.addMessage(builderForValue.build()); |
} |
return this; |
} |
public Builder addService( |
int index, com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.Builder builderForValue) { |
if (serviceBuilder_ == null) { |
ensureServiceIsMutable(); |
service_.add(index, builderForValue.build()); |
onChanged(); |
} else { |
serviceBuilder_.addMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addAllService( |
java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.ServiceDescriptorProto> values) { |
if (serviceBuilder_ == null) { |
ensureServiceIsMutable(); |
super.addAll(values, service_); |
onChanged(); |
} else { |
serviceBuilder_.addAllMessages(values); |
} |
return this; |
} |
public Builder clearService() { |
if (serviceBuilder_ == null) { |
service_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000020); |
onChanged(); |
} else { |
serviceBuilder_.clear(); |
} |
return this; |
} |
public Builder removeService(int index) { |
if (serviceBuilder_ == null) { |
ensureServiceIsMutable(); |
service_.remove(index); |
onChanged(); |
} else { |
serviceBuilder_.remove(index); |
} |
return this; |
} |
public com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.Builder getServiceBuilder( |
int index) { |
return getServiceFieldBuilder().getBuilder(index); |
} |
public com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder getServiceOrBuilder( |
int index) { |
if (serviceBuilder_ == null) { |
return service_.get(index); } else { |
return serviceBuilder_.getMessageOrBuilder(index); |
} |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder> |
getServiceOrBuilderList() { |
if (serviceBuilder_ != null) { |
return serviceBuilder_.getMessageOrBuilderList(); |
} else { |
return java.util.Collections.unmodifiableList(service_); |
} |
} |
public com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.Builder addServiceBuilder() { |
return getServiceFieldBuilder().addBuilder( |
com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.getDefaultInstance()); |
} |
public com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.Builder addServiceBuilder( |
int index) { |
return getServiceFieldBuilder().addBuilder( |
index, com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.getDefaultInstance()); |
} |
public java.util.List<com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.Builder> |
getServiceBuilderList() { |
return getServiceFieldBuilder().getBuilderList(); |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.ServiceDescriptorProto, com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder> |
getServiceFieldBuilder() { |
if (serviceBuilder_ == null) { |
serviceBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.ServiceDescriptorProto, com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder>( |
service_, |
((bitField0_ & 0x00000020) == 0x00000020), |
getParentForChildren(), |
isClean()); |
service_ = null; |
} |
return serviceBuilder_; |
} |
// repeated .google.protobuf.FieldDescriptorProto extension = 7; |
private java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> extension_ = |
java.util.Collections.emptyList(); |
private void ensureExtensionIsMutable() { |
if (!((bitField0_ & 0x00000040) == 0x00000040)) { |
extension_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.FieldDescriptorProto>(extension_); |
bitField0_ |= 0x00000040; |
} |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.FieldDescriptorProto, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> extensionBuilder_; |
public java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> getExtensionList() { |
if (extensionBuilder_ == null) { |
return java.util.Collections.unmodifiableList(extension_); |
} else { |
return extensionBuilder_.getMessageList(); |
} |
} |
public int getExtensionCount() { |
if (extensionBuilder_ == null) { |
return extension_.size(); |
} else { |
return extensionBuilder_.getCount(); |
} |
} |
public com.google.protobuf.DescriptorProtos.FieldDescriptorProto getExtension(int index) { |
if (extensionBuilder_ == null) { |
return extension_.get(index); |
} else { |
return extensionBuilder_.getMessage(index); |
} |
} |
public Builder setExtension( |
int index, com.google.protobuf.DescriptorProtos.FieldDescriptorProto value) { |
if (extensionBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureExtensionIsMutable(); |
extension_.set(index, value); |
onChanged(); |
} else { |
extensionBuilder_.setMessage(index, value); |
} |
return this; |
} |
public Builder setExtension( |
int index, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder builderForValue) { |
if (extensionBuilder_ == null) { |
ensureExtensionIsMutable(); |
extension_.set(index, builderForValue.build()); |
onChanged(); |
} else { |
extensionBuilder_.setMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addExtension(com.google.protobuf.DescriptorProtos.FieldDescriptorProto value) { |
if (extensionBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureExtensionIsMutable(); |
extension_.add(value); |
onChanged(); |
} else { |
extensionBuilder_.addMessage(value); |
} |
return this; |
} |
public Builder addExtension( |
int index, com.google.protobuf.DescriptorProtos.FieldDescriptorProto value) { |
if (extensionBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureExtensionIsMutable(); |
extension_.add(index, value); |
onChanged(); |
} else { |
extensionBuilder_.addMessage(index, value); |
} |
return this; |
} |
public Builder addExtension( |
com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder builderForValue) { |
if (extensionBuilder_ == null) { |
ensureExtensionIsMutable(); |
extension_.add(builderForValue.build()); |
onChanged(); |
} else { |
extensionBuilder_.addMessage(builderForValue.build()); |
} |
return this; |
} |
public Builder addExtension( |
int index, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder builderForValue) { |
if (extensionBuilder_ == null) { |
ensureExtensionIsMutable(); |
extension_.add(index, builderForValue.build()); |
onChanged(); |
} else { |
extensionBuilder_.addMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addAllExtension( |
java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.FieldDescriptorProto> values) { |
if (extensionBuilder_ == null) { |
ensureExtensionIsMutable(); |
super.addAll(values, extension_); |
onChanged(); |
} else { |
extensionBuilder_.addAllMessages(values); |
} |
return this; |
} |
public Builder clearExtension() { |
if (extensionBuilder_ == null) { |
extension_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000040); |
onChanged(); |
} else { |
extensionBuilder_.clear(); |
} |
return this; |
} |
public Builder removeExtension(int index) { |
if (extensionBuilder_ == null) { |
ensureExtensionIsMutable(); |
extension_.remove(index); |
onChanged(); |
} else { |
extensionBuilder_.remove(index); |
} |
return this; |
} |
public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder getExtensionBuilder( |
int index) { |
return getExtensionFieldBuilder().getBuilder(index); |
} |
public com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder getExtensionOrBuilder( |
int index) { |
if (extensionBuilder_ == null) { |
return extension_.get(index); } else { |
return extensionBuilder_.getMessageOrBuilder(index); |
} |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> |
getExtensionOrBuilderList() { |
if (extensionBuilder_ != null) { |
return extensionBuilder_.getMessageOrBuilderList(); |
} else { |
return java.util.Collections.unmodifiableList(extension_); |
} |
} |
public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder addExtensionBuilder() { |
return getExtensionFieldBuilder().addBuilder( |
com.google.protobuf.DescriptorProtos.FieldDescriptorProto.getDefaultInstance()); |
} |
public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder addExtensionBuilder( |
int index) { |
return getExtensionFieldBuilder().addBuilder( |
index, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.getDefaultInstance()); |
} |
public java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder> |
getExtensionBuilderList() { |
return getExtensionFieldBuilder().getBuilderList(); |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.FieldDescriptorProto, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> |
getExtensionFieldBuilder() { |
if (extensionBuilder_ == null) { |
extensionBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.FieldDescriptorProto, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder>( |
extension_, |
((bitField0_ & 0x00000040) == 0x00000040), |
getParentForChildren(), |
isClean()); |
extension_ = null; |
} |
return extensionBuilder_; |
} |
// optional .google.protobuf.FileOptions options = 8; |
private com.google.protobuf.DescriptorProtos.FileOptions options_ = com.google.protobuf.DescriptorProtos.FileOptions.getDefaultInstance(); |
private com.google.protobuf.SingleFieldBuilder< |
com.google.protobuf.DescriptorProtos.FileOptions, com.google.protobuf.DescriptorProtos.FileOptions.Builder, com.google.protobuf.DescriptorProtos.FileOptionsOrBuilder> optionsBuilder_; |
public boolean hasOptions() { |
return ((bitField0_ & 0x00000080) == 0x00000080); |
} |
public com.google.protobuf.DescriptorProtos.FileOptions getOptions() { |
if (optionsBuilder_ == null) { |
return options_; |
} else { |
return optionsBuilder_.getMessage(); |
} |
} |
public Builder setOptions(com.google.protobuf.DescriptorProtos.FileOptions value) { |
if (optionsBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
options_ = value; |
onChanged(); |
} else { |
optionsBuilder_.setMessage(value); |
} |
bitField0_ |= 0x00000080; |
return this; |
} |
public Builder setOptions( |
com.google.protobuf.DescriptorProtos.FileOptions.Builder builderForValue) { |
if (optionsBuilder_ == null) { |
options_ = builderForValue.build(); |
onChanged(); |
} else { |
optionsBuilder_.setMessage(builderForValue.build()); |
} |
bitField0_ |= 0x00000080; |
return this; |
} |
public Builder mergeOptions(com.google.protobuf.DescriptorProtos.FileOptions value) { |
if (optionsBuilder_ == null) { |
if (((bitField0_ & 0x00000080) == 0x00000080) && |
options_ != com.google.protobuf.DescriptorProtos.FileOptions.getDefaultInstance()) { |
options_ = |
com.google.protobuf.DescriptorProtos.FileOptions.newBuilder(options_).mergeFrom(value).buildPartial(); |
} else { |
options_ = value; |
} |
onChanged(); |
} else { |
optionsBuilder_.mergeFrom(value); |
} |
bitField0_ |= 0x00000080; |
return this; |
} |
public Builder clearOptions() { |
if (optionsBuilder_ == null) { |
options_ = com.google.protobuf.DescriptorProtos.FileOptions.getDefaultInstance(); |
onChanged(); |
} else { |
optionsBuilder_.clear(); |
} |
bitField0_ = (bitField0_ & ~0x00000080); |
return this; |
} |
public com.google.protobuf.DescriptorProtos.FileOptions.Builder getOptionsBuilder() { |
bitField0_ |= 0x00000080; |
onChanged(); |
return getOptionsFieldBuilder().getBuilder(); |
} |
public com.google.protobuf.DescriptorProtos.FileOptionsOrBuilder getOptionsOrBuilder() { |
if (optionsBuilder_ != null) { |
return optionsBuilder_.getMessageOrBuilder(); |
} else { |
return options_; |
} |
} |
private com.google.protobuf.SingleFieldBuilder< |
com.google.protobuf.DescriptorProtos.FileOptions, com.google.protobuf.DescriptorProtos.FileOptions.Builder, com.google.protobuf.DescriptorProtos.FileOptionsOrBuilder> |
getOptionsFieldBuilder() { |
if (optionsBuilder_ == null) { |
optionsBuilder_ = new com.google.protobuf.SingleFieldBuilder< |
com.google.protobuf.DescriptorProtos.FileOptions, com.google.protobuf.DescriptorProtos.FileOptions.Builder, com.google.protobuf.DescriptorProtos.FileOptionsOrBuilder>( |
options_, |
getParentForChildren(), |
isClean()); |
options_ = null; |
} |
return optionsBuilder_; |
} |
// optional .google.protobuf.SourceCodeInfo source_code_info = 9; |
private com.google.protobuf.DescriptorProtos.SourceCodeInfo sourceCodeInfo_ = com.google.protobuf.DescriptorProtos.SourceCodeInfo.getDefaultInstance(); |
private com.google.protobuf.SingleFieldBuilder< |
com.google.protobuf.DescriptorProtos.SourceCodeInfo, com.google.protobuf.DescriptorProtos.SourceCodeInfo.Builder, com.google.protobuf.DescriptorProtos.SourceCodeInfoOrBuilder> sourceCodeInfoBuilder_; |
public boolean hasSourceCodeInfo() { |
return ((bitField0_ & 0x00000100) == 0x00000100); |
} |
public com.google.protobuf.DescriptorProtos.SourceCodeInfo getSourceCodeInfo() { |
if (sourceCodeInfoBuilder_ == null) { |
return sourceCodeInfo_; |
} else { |
return sourceCodeInfoBuilder_.getMessage(); |
} |
} |
public Builder setSourceCodeInfo(com.google.protobuf.DescriptorProtos.SourceCodeInfo value) { |
if (sourceCodeInfoBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
sourceCodeInfo_ = value; |
onChanged(); |
} else { |
sourceCodeInfoBuilder_.setMessage(value); |
} |
bitField0_ |= 0x00000100; |
return this; |
} |
public Builder setSourceCodeInfo( |
com.google.protobuf.DescriptorProtos.SourceCodeInfo.Builder builderForValue) { |
if (sourceCodeInfoBuilder_ == null) { |
sourceCodeInfo_ = builderForValue.build(); |
onChanged(); |
} else { |
sourceCodeInfoBuilder_.setMessage(builderForValue.build()); |
} |
bitField0_ |= 0x00000100; |
return this; |
} |
public Builder mergeSourceCodeInfo(com.google.protobuf.DescriptorProtos.SourceCodeInfo value) { |
if (sourceCodeInfoBuilder_ == null) { |
if (((bitField0_ & 0x00000100) == 0x00000100) && |
sourceCodeInfo_ != com.google.protobuf.DescriptorProtos.SourceCodeInfo.getDefaultInstance()) { |
sourceCodeInfo_ = |
com.google.protobuf.DescriptorProtos.SourceCodeInfo.newBuilder(sourceCodeInfo_).mergeFrom(value).buildPartial(); |
} else { |
sourceCodeInfo_ = value; |
} |
onChanged(); |
} else { |
sourceCodeInfoBuilder_.mergeFrom(value); |
} |
bitField0_ |= 0x00000100; |
return this; |
} |
public Builder clearSourceCodeInfo() { |
if (sourceCodeInfoBuilder_ == null) { |
sourceCodeInfo_ = com.google.protobuf.DescriptorProtos.SourceCodeInfo.getDefaultInstance(); |
onChanged(); |
} else { |
sourceCodeInfoBuilder_.clear(); |
} |
bitField0_ = (bitField0_ & ~0x00000100); |
return this; |
} |
public com.google.protobuf.DescriptorProtos.SourceCodeInfo.Builder getSourceCodeInfoBuilder() { |
bitField0_ |= 0x00000100; |
onChanged(); |
return getSourceCodeInfoFieldBuilder().getBuilder(); |
} |
public com.google.protobuf.DescriptorProtos.SourceCodeInfoOrBuilder getSourceCodeInfoOrBuilder() { |
if (sourceCodeInfoBuilder_ != null) { |
return sourceCodeInfoBuilder_.getMessageOrBuilder(); |
} else { |
return sourceCodeInfo_; |
} |
} |
private com.google.protobuf.SingleFieldBuilder< |
com.google.protobuf.DescriptorProtos.SourceCodeInfo, com.google.protobuf.DescriptorProtos.SourceCodeInfo.Builder, com.google.protobuf.DescriptorProtos.SourceCodeInfoOrBuilder> |
getSourceCodeInfoFieldBuilder() { |
if (sourceCodeInfoBuilder_ == null) { |
sourceCodeInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder< |
com.google.protobuf.DescriptorProtos.SourceCodeInfo, com.google.protobuf.DescriptorProtos.SourceCodeInfo.Builder, com.google.protobuf.DescriptorProtos.SourceCodeInfoOrBuilder>( |
sourceCodeInfo_, |
getParentForChildren(), |
isClean()); |
sourceCodeInfo_ = null; |
} |
return sourceCodeInfoBuilder_; |
} |
// @@protoc_insertion_point(builder_scope:google.protobuf.FileDescriptorProto) |
} |
static { |
defaultInstance = new FileDescriptorProto(true); |
defaultInstance.initFields(); |
} |
// @@protoc_insertion_point(class_scope:google.protobuf.FileDescriptorProto) |
} |
public interface DescriptorProtoOrBuilder |
extends com.google.protobuf.MessageOrBuilder { |
// optional string name = 1; |
boolean hasName(); |
String getName(); |
// repeated .google.protobuf.FieldDescriptorProto field = 2; |
java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> |
getFieldList(); |
com.google.protobuf.DescriptorProtos.FieldDescriptorProto getField(int index); |
int getFieldCount(); |
java.util.List<? extends com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> |
getFieldOrBuilderList(); |
com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder getFieldOrBuilder( |
int index); |
// repeated .google.protobuf.FieldDescriptorProto extension = 6; |
java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> |
getExtensionList(); |
com.google.protobuf.DescriptorProtos.FieldDescriptorProto getExtension(int index); |
int getExtensionCount(); |
java.util.List<? extends com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> |
getExtensionOrBuilderList(); |
com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder getExtensionOrBuilder( |
int index); |
// repeated .google.protobuf.DescriptorProto nested_type = 3; |
java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto> |
getNestedTypeList(); |
com.google.protobuf.DescriptorProtos.DescriptorProto getNestedType(int index); |
int getNestedTypeCount(); |
java.util.List<? extends com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder> |
getNestedTypeOrBuilderList(); |
com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder getNestedTypeOrBuilder( |
int index); |
// repeated .google.protobuf.EnumDescriptorProto enum_type = 4; |
java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto> |
getEnumTypeList(); |
com.google.protobuf.DescriptorProtos.EnumDescriptorProto getEnumType(int index); |
int getEnumTypeCount(); |
java.util.List<? extends com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder> |
getEnumTypeOrBuilderList(); |
com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder getEnumTypeOrBuilder( |
int index); |
// repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5; |
java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange> |
getExtensionRangeList(); |
com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange getExtensionRange(int index); |
int getExtensionRangeCount(); |
java.util.List<? extends com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder> |
getExtensionRangeOrBuilderList(); |
com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder getExtensionRangeOrBuilder( |
int index); |
// optional .google.protobuf.MessageOptions options = 7; |
boolean hasOptions(); |
com.google.protobuf.DescriptorProtos.MessageOptions getOptions(); |
com.google.protobuf.DescriptorProtos.MessageOptionsOrBuilder getOptionsOrBuilder(); |
} |
public static final class DescriptorProto extends |
com.google.protobuf.GeneratedMessage |
implements DescriptorProtoOrBuilder { |
// Use DescriptorProto.newBuilder() to construct. |
private DescriptorProto(Builder builder) { |
super(builder); |
} |
private DescriptorProto(boolean noInit) {} |
private static final DescriptorProto defaultInstance; |
public static DescriptorProto getDefaultInstance() { |
return defaultInstance; |
} |
public DescriptorProto getDefaultInstanceForType() { |
return defaultInstance; |
} |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_fieldAccessorTable; |
} |
public interface ExtensionRangeOrBuilder |
extends com.google.protobuf.MessageOrBuilder { |
// optional int32 start = 1; |
boolean hasStart(); |
int getStart(); |
// optional int32 end = 2; |
boolean hasEnd(); |
int getEnd(); |
} |
public static final class ExtensionRange extends |
com.google.protobuf.GeneratedMessage |
implements ExtensionRangeOrBuilder { |
// Use ExtensionRange.newBuilder() to construct. |
private ExtensionRange(Builder builder) { |
super(builder); |
} |
private ExtensionRange(boolean noInit) {} |
private static final ExtensionRange defaultInstance; |
public static ExtensionRange getDefaultInstance() { |
return defaultInstance; |
} |
public ExtensionRange getDefaultInstanceForType() { |
return defaultInstance; |
} |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_ExtensionRange_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_ExtensionRange_fieldAccessorTable; |
} |
private int bitField0_; |
// optional int32 start = 1; |
public static final int START_FIELD_NUMBER = 1; |
private int start_; |
public boolean hasStart() { |
return ((bitField0_ & 0x00000001) == 0x00000001); |
} |
public int getStart() { |
return start_; |
} |
// optional int32 end = 2; |
public static final int END_FIELD_NUMBER = 2; |
private int end_; |
public boolean hasEnd() { |
return ((bitField0_ & 0x00000002) == 0x00000002); |
} |
public int getEnd() { |
return end_; |
} |
private void initFields() { |
start_ = 0; |
end_ = 0; |
} |
private byte memoizedIsInitialized = -1; |
public final boolean isInitialized() { |
byte isInitialized = memoizedIsInitialized; |
if (isInitialized != -1) return isInitialized == 1; |
memoizedIsInitialized = 1; |
return true; |
} |
public void writeTo(com.google.protobuf.CodedOutputStream output) |
throws java.io.IOException { |
getSerializedSize(); |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
output.writeInt32(1, start_); |
} |
if (((bitField0_ & 0x00000002) == 0x00000002)) { |
output.writeInt32(2, end_); |
} |
getUnknownFields().writeTo(output); |
} |
private int memoizedSerializedSize = -1; |
public int getSerializedSize() { |
int size = memoizedSerializedSize; |
if (size != -1) return size; |
size = 0; |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
size += com.google.protobuf.CodedOutputStream |
.computeInt32Size(1, start_); |
} |
if (((bitField0_ & 0x00000002) == 0x00000002)) { |
size += com.google.protobuf.CodedOutputStream |
.computeInt32Size(2, end_); |
} |
size += getUnknownFields().getSerializedSize(); |
memoizedSerializedSize = size; |
return size; |
} |
private static final long serialVersionUID = 0L; |
@java.lang.Override |
protected java.lang.Object writeReplace() |
throws java.io.ObjectStreamException { |
return super.writeReplace(); |
} |
public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom( |
com.google.protobuf.ByteString data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom( |
com.google.protobuf.ByteString data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom(byte[] data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom( |
byte[] data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom(java.io.InputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseDelimitedFrom(java.io.InputStream input) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseDelimitedFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input, extensionRegistry)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom( |
com.google.protobuf.CodedInputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange parseFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static Builder newBuilder() { return Builder.create(); } |
public Builder newBuilderForType() { return newBuilder(); } |
public static Builder newBuilder(com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange prototype) { |
return newBuilder().mergeFrom(prototype); |
} |
public Builder toBuilder() { return newBuilder(this); } |
@java.lang.Override |
protected Builder newBuilderForType( |
com.google.protobuf.GeneratedMessage.BuilderParent parent) { |
Builder builder = new Builder(parent); |
return builder; |
} |
public static final class Builder extends |
com.google.protobuf.GeneratedMessage.Builder<Builder> |
implements com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder { |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_ExtensionRange_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_ExtensionRange_fieldAccessorTable; |
} |
// Construct using com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.newBuilder() |
private Builder() { |
maybeForceBuilderInitialization(); |
} |
private Builder(BuilderParent parent) { |
super(parent); |
maybeForceBuilderInitialization(); |
} |
private void maybeForceBuilderInitialization() { |
if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { |
} |
} |
private static Builder create() { |
return new Builder(); |
} |
public Builder clear() { |
super.clear(); |
start_ = 0; |
bitField0_ = (bitField0_ & ~0x00000001); |
end_ = 0; |
bitField0_ = (bitField0_ & ~0x00000002); |
return this; |
} |
public Builder clone() { |
return create().mergeFrom(buildPartial()); |
} |
public com.google.protobuf.Descriptors.Descriptor |
getDescriptorForType() { |
return com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.getDescriptor(); |
} |
public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange getDefaultInstanceForType() { |
return com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.getDefaultInstance(); |
} |
public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange build() { |
com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException(result); |
} |
return result; |
} |
private com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange buildParsed() |
throws com.google.protobuf.InvalidProtocolBufferException { |
com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException( |
result).asInvalidProtocolBufferException(); |
} |
return result; |
} |
public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange buildPartial() { |
com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange result = new com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange(this); |
int from_bitField0_ = bitField0_; |
int to_bitField0_ = 0; |
if (((from_bitField0_ & 0x00000001) == 0x00000001)) { |
to_bitField0_ |= 0x00000001; |
} |
result.start_ = start_; |
if (((from_bitField0_ & 0x00000002) == 0x00000002)) { |
to_bitField0_ |= 0x00000002; |
} |
result.end_ = end_; |
result.bitField0_ = to_bitField0_; |
onBuilt(); |
return result; |
} |
public Builder mergeFrom(com.google.protobuf.Message other) { |
if (other instanceof com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange) { |
return mergeFrom((com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange)other); |
} else { |
super.mergeFrom(other); |
return this; |
} |
} |
public Builder mergeFrom(com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange other) { |
if (other == com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.getDefaultInstance()) return this; |
if (other.hasStart()) { |
setStart(other.getStart()); |
} |
if (other.hasEnd()) { |
setEnd(other.getEnd()); |
} |
this.mergeUnknownFields(other.getUnknownFields()); |
return this; |
} |
public final boolean isInitialized() { |
return true; |
} |
public Builder mergeFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
com.google.protobuf.UnknownFieldSet.Builder unknownFields = |
com.google.protobuf.UnknownFieldSet.newBuilder( |
this.getUnknownFields()); |
while (true) { |
int tag = input.readTag(); |
switch (tag) { |
case 0: |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
default: { |
if (!parseUnknownField(input, unknownFields, |
extensionRegistry, tag)) { |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
} |
break; |
} |
case 8: { |
bitField0_ |= 0x00000001; |
start_ = input.readInt32(); |
break; |
} |
case 16: { |
bitField0_ |= 0x00000002; |
end_ = input.readInt32(); |
break; |
} |
} |
} |
} |
private int bitField0_; |
// optional int32 start = 1; |
private int start_ ; |
public boolean hasStart() { |
return ((bitField0_ & 0x00000001) == 0x00000001); |
} |
public int getStart() { |
return start_; |
} |
public Builder setStart(int value) { |
bitField0_ |= 0x00000001; |
start_ = value; |
onChanged(); |
return this; |
} |
public Builder clearStart() { |
bitField0_ = (bitField0_ & ~0x00000001); |
start_ = 0; |
onChanged(); |
return this; |
} |
// optional int32 end = 2; |
private int end_ ; |
public boolean hasEnd() { |
return ((bitField0_ & 0x00000002) == 0x00000002); |
} |
public int getEnd() { |
return end_; |
} |
public Builder setEnd(int value) { |
bitField0_ |= 0x00000002; |
end_ = value; |
onChanged(); |
return this; |
} |
public Builder clearEnd() { |
bitField0_ = (bitField0_ & ~0x00000002); |
end_ = 0; |
onChanged(); |
return this; |
} |
// @@protoc_insertion_point(builder_scope:google.protobuf.DescriptorProto.ExtensionRange) |
} |
static { |
defaultInstance = new ExtensionRange(true); |
defaultInstance.initFields(); |
} |
// @@protoc_insertion_point(class_scope:google.protobuf.DescriptorProto.ExtensionRange) |
} |
private int bitField0_; |
// optional string name = 1; |
public static final int NAME_FIELD_NUMBER = 1; |
private java.lang.Object name_; |
public boolean hasName() { |
return ((bitField0_ & 0x00000001) == 0x00000001); |
} |
public String getName() { |
java.lang.Object ref = name_; |
if (ref instanceof String) { |
return (String) ref; |
} else { |
com.google.protobuf.ByteString bs = |
(com.google.protobuf.ByteString) ref; |
String s = bs.toStringUtf8(); |
if (com.google.protobuf.Internal.isValidUtf8(bs)) { |
name_ = s; |
} |
return s; |
} |
} |
private com.google.protobuf.ByteString getNameBytes() { |
java.lang.Object ref = name_; |
if (ref instanceof String) { |
com.google.protobuf.ByteString b = |
com.google.protobuf.ByteString.copyFromUtf8((String) ref); |
name_ = b; |
return b; |
} else { |
return (com.google.protobuf.ByteString) ref; |
} |
} |
// repeated .google.protobuf.FieldDescriptorProto field = 2; |
public static final int FIELD_FIELD_NUMBER = 2; |
private java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> field_; |
public java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> getFieldList() { |
return field_; |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> |
getFieldOrBuilderList() { |
return field_; |
} |
public int getFieldCount() { |
return field_.size(); |
} |
public com.google.protobuf.DescriptorProtos.FieldDescriptorProto getField(int index) { |
return field_.get(index); |
} |
public com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder getFieldOrBuilder( |
int index) { |
return field_.get(index); |
} |
// repeated .google.protobuf.FieldDescriptorProto extension = 6; |
public static final int EXTENSION_FIELD_NUMBER = 6; |
private java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> extension_; |
public java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> getExtensionList() { |
return extension_; |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> |
getExtensionOrBuilderList() { |
return extension_; |
} |
public int getExtensionCount() { |
return extension_.size(); |
} |
public com.google.protobuf.DescriptorProtos.FieldDescriptorProto getExtension(int index) { |
return extension_.get(index); |
} |
public com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder getExtensionOrBuilder( |
int index) { |
return extension_.get(index); |
} |
// repeated .google.protobuf.DescriptorProto nested_type = 3; |
public static final int NESTED_TYPE_FIELD_NUMBER = 3; |
private java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto> nestedType_; |
public java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto> getNestedTypeList() { |
return nestedType_; |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder> |
getNestedTypeOrBuilderList() { |
return nestedType_; |
} |
public int getNestedTypeCount() { |
return nestedType_.size(); |
} |
public com.google.protobuf.DescriptorProtos.DescriptorProto getNestedType(int index) { |
return nestedType_.get(index); |
} |
public com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder getNestedTypeOrBuilder( |
int index) { |
return nestedType_.get(index); |
} |
// repeated .google.protobuf.EnumDescriptorProto enum_type = 4; |
public static final int ENUM_TYPE_FIELD_NUMBER = 4; |
private java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto> enumType_; |
public java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto> getEnumTypeList() { |
return enumType_; |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder> |
getEnumTypeOrBuilderList() { |
return enumType_; |
} |
public int getEnumTypeCount() { |
return enumType_.size(); |
} |
public com.google.protobuf.DescriptorProtos.EnumDescriptorProto getEnumType(int index) { |
return enumType_.get(index); |
} |
public com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder getEnumTypeOrBuilder( |
int index) { |
return enumType_.get(index); |
} |
// repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5; |
public static final int EXTENSION_RANGE_FIELD_NUMBER = 5; |
private java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange> extensionRange_; |
public java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange> getExtensionRangeList() { |
return extensionRange_; |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder> |
getExtensionRangeOrBuilderList() { |
return extensionRange_; |
} |
public int getExtensionRangeCount() { |
return extensionRange_.size(); |
} |
public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange getExtensionRange(int index) { |
return extensionRange_.get(index); |
} |
public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder getExtensionRangeOrBuilder( |
int index) { |
return extensionRange_.get(index); |
} |
// optional .google.protobuf.MessageOptions options = 7; |
public static final int OPTIONS_FIELD_NUMBER = 7; |
private com.google.protobuf.DescriptorProtos.MessageOptions options_; |
public boolean hasOptions() { |
return ((bitField0_ & 0x00000002) == 0x00000002); |
} |
public com.google.protobuf.DescriptorProtos.MessageOptions getOptions() { |
return options_; |
} |
public com.google.protobuf.DescriptorProtos.MessageOptionsOrBuilder getOptionsOrBuilder() { |
return options_; |
} |
private void initFields() { |
name_ = ""; |
field_ = java.util.Collections.emptyList(); |
extension_ = java.util.Collections.emptyList(); |
nestedType_ = java.util.Collections.emptyList(); |
enumType_ = java.util.Collections.emptyList(); |
extensionRange_ = java.util.Collections.emptyList(); |
options_ = com.google.protobuf.DescriptorProtos.MessageOptions.getDefaultInstance(); |
} |
private byte memoizedIsInitialized = -1; |
public final boolean isInitialized() { |
byte isInitialized = memoizedIsInitialized; |
if (isInitialized != -1) return isInitialized == 1; |
for (int i = 0; i < getFieldCount(); i++) { |
if (!getField(i).isInitialized()) { |
memoizedIsInitialized = 0; |
return false; |
} |
} |
for (int i = 0; i < getExtensionCount(); i++) { |
if (!getExtension(i).isInitialized()) { |
memoizedIsInitialized = 0; |
return false; |
} |
} |
for (int i = 0; i < getNestedTypeCount(); i++) { |
if (!getNestedType(i).isInitialized()) { |
memoizedIsInitialized = 0; |
return false; |
} |
} |
for (int i = 0; i < getEnumTypeCount(); i++) { |
if (!getEnumType(i).isInitialized()) { |
memoizedIsInitialized = 0; |
return false; |
} |
} |
if (hasOptions()) { |
if (!getOptions().isInitialized()) { |
memoizedIsInitialized = 0; |
return false; |
} |
} |
memoizedIsInitialized = 1; |
return true; |
} |
public void writeTo(com.google.protobuf.CodedOutputStream output) |
throws java.io.IOException { |
getSerializedSize(); |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
output.writeBytes(1, getNameBytes()); |
} |
for (int i = 0; i < field_.size(); i++) { |
output.writeMessage(2, field_.get(i)); |
} |
for (int i = 0; i < nestedType_.size(); i++) { |
output.writeMessage(3, nestedType_.get(i)); |
} |
for (int i = 0; i < enumType_.size(); i++) { |
output.writeMessage(4, enumType_.get(i)); |
} |
for (int i = 0; i < extensionRange_.size(); i++) { |
output.writeMessage(5, extensionRange_.get(i)); |
} |
for (int i = 0; i < extension_.size(); i++) { |
output.writeMessage(6, extension_.get(i)); |
} |
if (((bitField0_ & 0x00000002) == 0x00000002)) { |
output.writeMessage(7, options_); |
} |
getUnknownFields().writeTo(output); |
} |
private int memoizedSerializedSize = -1; |
public int getSerializedSize() { |
int size = memoizedSerializedSize; |
if (size != -1) return size; |
size = 0; |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
size += com.google.protobuf.CodedOutputStream |
.computeBytesSize(1, getNameBytes()); |
} |
for (int i = 0; i < field_.size(); i++) { |
size += com.google.protobuf.CodedOutputStream |
.computeMessageSize(2, field_.get(i)); |
} |
for (int i = 0; i < nestedType_.size(); i++) { |
size += com.google.protobuf.CodedOutputStream |
.computeMessageSize(3, nestedType_.get(i)); |
} |
for (int i = 0; i < enumType_.size(); i++) { |
size += com.google.protobuf.CodedOutputStream |
.computeMessageSize(4, enumType_.get(i)); |
} |
for (int i = 0; i < extensionRange_.size(); i++) { |
size += com.google.protobuf.CodedOutputStream |
.computeMessageSize(5, extensionRange_.get(i)); |
} |
for (int i = 0; i < extension_.size(); i++) { |
size += com.google.protobuf.CodedOutputStream |
.computeMessageSize(6, extension_.get(i)); |
} |
if (((bitField0_ & 0x00000002) == 0x00000002)) { |
size += com.google.protobuf.CodedOutputStream |
.computeMessageSize(7, options_); |
} |
size += getUnknownFields().getSerializedSize(); |
memoizedSerializedSize = size; |
return size; |
} |
private static final long serialVersionUID = 0L; |
@java.lang.Override |
protected java.lang.Object writeReplace() |
throws java.io.ObjectStreamException { |
return super.writeReplace(); |
} |
public static com.google.protobuf.DescriptorProtos.DescriptorProto parseFrom( |
com.google.protobuf.ByteString data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.DescriptorProto parseFrom( |
com.google.protobuf.ByteString data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.DescriptorProto parseFrom(byte[] data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.DescriptorProto parseFrom( |
byte[] data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.DescriptorProto parseFrom(java.io.InputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.DescriptorProto parseFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.DescriptorProto parseDelimitedFrom(java.io.InputStream input) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.DescriptorProto parseDelimitedFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input, extensionRegistry)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.DescriptorProto parseFrom( |
com.google.protobuf.CodedInputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.DescriptorProto parseFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static Builder newBuilder() { return Builder.create(); } |
public Builder newBuilderForType() { return newBuilder(); } |
public static Builder newBuilder(com.google.protobuf.DescriptorProtos.DescriptorProto prototype) { |
return newBuilder().mergeFrom(prototype); |
} |
public Builder toBuilder() { return newBuilder(this); } |
@java.lang.Override |
protected Builder newBuilderForType( |
com.google.protobuf.GeneratedMessage.BuilderParent parent) { |
Builder builder = new Builder(parent); |
return builder; |
} |
public static final class Builder extends |
com.google.protobuf.GeneratedMessage.Builder<Builder> |
implements com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder { |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_DescriptorProto_fieldAccessorTable; |
} |
// Construct using com.google.protobuf.DescriptorProtos.DescriptorProto.newBuilder() |
private Builder() { |
maybeForceBuilderInitialization(); |
} |
private Builder(BuilderParent parent) { |
super(parent); |
maybeForceBuilderInitialization(); |
} |
private void maybeForceBuilderInitialization() { |
if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { |
getFieldFieldBuilder(); |
getExtensionFieldBuilder(); |
getNestedTypeFieldBuilder(); |
getEnumTypeFieldBuilder(); |
getExtensionRangeFieldBuilder(); |
getOptionsFieldBuilder(); |
} |
} |
private static Builder create() { |
return new Builder(); |
} |
public Builder clear() { |
super.clear(); |
name_ = ""; |
bitField0_ = (bitField0_ & ~0x00000001); |
if (fieldBuilder_ == null) { |
field_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000002); |
} else { |
fieldBuilder_.clear(); |
} |
if (extensionBuilder_ == null) { |
extension_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000004); |
} else { |
extensionBuilder_.clear(); |
} |
if (nestedTypeBuilder_ == null) { |
nestedType_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000008); |
} else { |
nestedTypeBuilder_.clear(); |
} |
if (enumTypeBuilder_ == null) { |
enumType_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000010); |
} else { |
enumTypeBuilder_.clear(); |
} |
if (extensionRangeBuilder_ == null) { |
extensionRange_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000020); |
} else { |
extensionRangeBuilder_.clear(); |
} |
if (optionsBuilder_ == null) { |
options_ = com.google.protobuf.DescriptorProtos.MessageOptions.getDefaultInstance(); |
} else { |
optionsBuilder_.clear(); |
} |
bitField0_ = (bitField0_ & ~0x00000040); |
return this; |
} |
public Builder clone() { |
return create().mergeFrom(buildPartial()); |
} |
public com.google.protobuf.Descriptors.Descriptor |
getDescriptorForType() { |
return com.google.protobuf.DescriptorProtos.DescriptorProto.getDescriptor(); |
} |
public com.google.protobuf.DescriptorProtos.DescriptorProto getDefaultInstanceForType() { |
return com.google.protobuf.DescriptorProtos.DescriptorProto.getDefaultInstance(); |
} |
public com.google.protobuf.DescriptorProtos.DescriptorProto build() { |
com.google.protobuf.DescriptorProtos.DescriptorProto result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException(result); |
} |
return result; |
} |
private com.google.protobuf.DescriptorProtos.DescriptorProto buildParsed() |
throws com.google.protobuf.InvalidProtocolBufferException { |
com.google.protobuf.DescriptorProtos.DescriptorProto result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException( |
result).asInvalidProtocolBufferException(); |
} |
return result; |
} |
public com.google.protobuf.DescriptorProtos.DescriptorProto buildPartial() { |
com.google.protobuf.DescriptorProtos.DescriptorProto result = new com.google.protobuf.DescriptorProtos.DescriptorProto(this); |
int from_bitField0_ = bitField0_; |
int to_bitField0_ = 0; |
if (((from_bitField0_ & 0x00000001) == 0x00000001)) { |
to_bitField0_ |= 0x00000001; |
} |
result.name_ = name_; |
if (fieldBuilder_ == null) { |
if (((bitField0_ & 0x00000002) == 0x00000002)) { |
field_ = java.util.Collections.unmodifiableList(field_); |
bitField0_ = (bitField0_ & ~0x00000002); |
} |
result.field_ = field_; |
} else { |
result.field_ = fieldBuilder_.build(); |
} |
if (extensionBuilder_ == null) { |
if (((bitField0_ & 0x00000004) == 0x00000004)) { |
extension_ = java.util.Collections.unmodifiableList(extension_); |
bitField0_ = (bitField0_ & ~0x00000004); |
} |
result.extension_ = extension_; |
} else { |
result.extension_ = extensionBuilder_.build(); |
} |
if (nestedTypeBuilder_ == null) { |
if (((bitField0_ & 0x00000008) == 0x00000008)) { |
nestedType_ = java.util.Collections.unmodifiableList(nestedType_); |
bitField0_ = (bitField0_ & ~0x00000008); |
} |
result.nestedType_ = nestedType_; |
} else { |
result.nestedType_ = nestedTypeBuilder_.build(); |
} |
if (enumTypeBuilder_ == null) { |
if (((bitField0_ & 0x00000010) == 0x00000010)) { |
enumType_ = java.util.Collections.unmodifiableList(enumType_); |
bitField0_ = (bitField0_ & ~0x00000010); |
} |
result.enumType_ = enumType_; |
} else { |
result.enumType_ = enumTypeBuilder_.build(); |
} |
if (extensionRangeBuilder_ == null) { |
if (((bitField0_ & 0x00000020) == 0x00000020)) { |
extensionRange_ = java.util.Collections.unmodifiableList(extensionRange_); |
bitField0_ = (bitField0_ & ~0x00000020); |
} |
result.extensionRange_ = extensionRange_; |
} else { |
result.extensionRange_ = extensionRangeBuilder_.build(); |
} |
if (((from_bitField0_ & 0x00000040) == 0x00000040)) { |
to_bitField0_ |= 0x00000002; |
} |
if (optionsBuilder_ == null) { |
result.options_ = options_; |
} else { |
result.options_ = optionsBuilder_.build(); |
} |
result.bitField0_ = to_bitField0_; |
onBuilt(); |
return result; |
} |
public Builder mergeFrom(com.google.protobuf.Message other) { |
if (other instanceof com.google.protobuf.DescriptorProtos.DescriptorProto) { |
return mergeFrom((com.google.protobuf.DescriptorProtos.DescriptorProto)other); |
} else { |
super.mergeFrom(other); |
return this; |
} |
} |
public Builder mergeFrom(com.google.protobuf.DescriptorProtos.DescriptorProto other) { |
if (other == com.google.protobuf.DescriptorProtos.DescriptorProto.getDefaultInstance()) return this; |
if (other.hasName()) { |
setName(other.getName()); |
} |
if (fieldBuilder_ == null) { |
if (!other.field_.isEmpty()) { |
if (field_.isEmpty()) { |
field_ = other.field_; |
bitField0_ = (bitField0_ & ~0x00000002); |
} else { |
ensureFieldIsMutable(); |
field_.addAll(other.field_); |
} |
onChanged(); |
} |
} else { |
if (!other.field_.isEmpty()) { |
if (fieldBuilder_.isEmpty()) { |
fieldBuilder_.dispose(); |
fieldBuilder_ = null; |
field_ = other.field_; |
bitField0_ = (bitField0_ & ~0x00000002); |
fieldBuilder_ = |
com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? |
getFieldFieldBuilder() : null; |
} else { |
fieldBuilder_.addAllMessages(other.field_); |
} |
} |
} |
if (extensionBuilder_ == null) { |
if (!other.extension_.isEmpty()) { |
if (extension_.isEmpty()) { |
extension_ = other.extension_; |
bitField0_ = (bitField0_ & ~0x00000004); |
} else { |
ensureExtensionIsMutable(); |
extension_.addAll(other.extension_); |
} |
onChanged(); |
} |
} else { |
if (!other.extension_.isEmpty()) { |
if (extensionBuilder_.isEmpty()) { |
extensionBuilder_.dispose(); |
extensionBuilder_ = null; |
extension_ = other.extension_; |
bitField0_ = (bitField0_ & ~0x00000004); |
extensionBuilder_ = |
com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? |
getExtensionFieldBuilder() : null; |
} else { |
extensionBuilder_.addAllMessages(other.extension_); |
} |
} |
} |
if (nestedTypeBuilder_ == null) { |
if (!other.nestedType_.isEmpty()) { |
if (nestedType_.isEmpty()) { |
nestedType_ = other.nestedType_; |
bitField0_ = (bitField0_ & ~0x00000008); |
} else { |
ensureNestedTypeIsMutable(); |
nestedType_.addAll(other.nestedType_); |
} |
onChanged(); |
} |
} else { |
if (!other.nestedType_.isEmpty()) { |
if (nestedTypeBuilder_.isEmpty()) { |
nestedTypeBuilder_.dispose(); |
nestedTypeBuilder_ = null; |
nestedType_ = other.nestedType_; |
bitField0_ = (bitField0_ & ~0x00000008); |
nestedTypeBuilder_ = |
com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? |
getNestedTypeFieldBuilder() : null; |
} else { |
nestedTypeBuilder_.addAllMessages(other.nestedType_); |
} |
} |
} |
if (enumTypeBuilder_ == null) { |
if (!other.enumType_.isEmpty()) { |
if (enumType_.isEmpty()) { |
enumType_ = other.enumType_; |
bitField0_ = (bitField0_ & ~0x00000010); |
} else { |
ensureEnumTypeIsMutable(); |
enumType_.addAll(other.enumType_); |
} |
onChanged(); |
} |
} else { |
if (!other.enumType_.isEmpty()) { |
if (enumTypeBuilder_.isEmpty()) { |
enumTypeBuilder_.dispose(); |
enumTypeBuilder_ = null; |
enumType_ = other.enumType_; |
bitField0_ = (bitField0_ & ~0x00000010); |
enumTypeBuilder_ = |
com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? |
getEnumTypeFieldBuilder() : null; |
} else { |
enumTypeBuilder_.addAllMessages(other.enumType_); |
} |
} |
} |
if (extensionRangeBuilder_ == null) { |
if (!other.extensionRange_.isEmpty()) { |
if (extensionRange_.isEmpty()) { |
extensionRange_ = other.extensionRange_; |
bitField0_ = (bitField0_ & ~0x00000020); |
} else { |
ensureExtensionRangeIsMutable(); |
extensionRange_.addAll(other.extensionRange_); |
} |
onChanged(); |
} |
} else { |
if (!other.extensionRange_.isEmpty()) { |
if (extensionRangeBuilder_.isEmpty()) { |
extensionRangeBuilder_.dispose(); |
extensionRangeBuilder_ = null; |
extensionRange_ = other.extensionRange_; |
bitField0_ = (bitField0_ & ~0x00000020); |
extensionRangeBuilder_ = |
com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? |
getExtensionRangeFieldBuilder() : null; |
} else { |
extensionRangeBuilder_.addAllMessages(other.extensionRange_); |
} |
} |
} |
if (other.hasOptions()) { |
mergeOptions(other.getOptions()); |
} |
this.mergeUnknownFields(other.getUnknownFields()); |
return this; |
} |
public final boolean isInitialized() { |
for (int i = 0; i < getFieldCount(); i++) { |
if (!getField(i).isInitialized()) { |
return false; |
} |
} |
for (int i = 0; i < getExtensionCount(); i++) { |
if (!getExtension(i).isInitialized()) { |
return false; |
} |
} |
for (int i = 0; i < getNestedTypeCount(); i++) { |
if (!getNestedType(i).isInitialized()) { |
return false; |
} |
} |
for (int i = 0; i < getEnumTypeCount(); i++) { |
if (!getEnumType(i).isInitialized()) { |
return false; |
} |
} |
if (hasOptions()) { |
if (!getOptions().isInitialized()) { |
return false; |
} |
} |
return true; |
} |
public Builder mergeFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
com.google.protobuf.UnknownFieldSet.Builder unknownFields = |
com.google.protobuf.UnknownFieldSet.newBuilder( |
this.getUnknownFields()); |
while (true) { |
int tag = input.readTag(); |
switch (tag) { |
case 0: |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
default: { |
if (!parseUnknownField(input, unknownFields, |
extensionRegistry, tag)) { |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
} |
break; |
} |
case 10: { |
bitField0_ |= 0x00000001; |
name_ = input.readBytes(); |
break; |
} |
case 18: { |
com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder subBuilder = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.newBuilder(); |
input.readMessage(subBuilder, extensionRegistry); |
addField(subBuilder.buildPartial()); |
break; |
} |
case 26: { |
com.google.protobuf.DescriptorProtos.DescriptorProto.Builder subBuilder = com.google.protobuf.DescriptorProtos.DescriptorProto.newBuilder(); |
input.readMessage(subBuilder, extensionRegistry); |
addNestedType(subBuilder.buildPartial()); |
break; |
} |
case 34: { |
com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder subBuilder = com.google.protobuf.DescriptorProtos.EnumDescriptorProto.newBuilder(); |
input.readMessage(subBuilder, extensionRegistry); |
addEnumType(subBuilder.buildPartial()); |
break; |
} |
case 42: { |
com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder subBuilder = com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.newBuilder(); |
input.readMessage(subBuilder, extensionRegistry); |
addExtensionRange(subBuilder.buildPartial()); |
break; |
} |
case 50: { |
com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder subBuilder = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.newBuilder(); |
input.readMessage(subBuilder, extensionRegistry); |
addExtension(subBuilder.buildPartial()); |
break; |
} |
case 58: { |
com.google.protobuf.DescriptorProtos.MessageOptions.Builder subBuilder = com.google.protobuf.DescriptorProtos.MessageOptions.newBuilder(); |
if (hasOptions()) { |
subBuilder.mergeFrom(getOptions()); |
} |
input.readMessage(subBuilder, extensionRegistry); |
setOptions(subBuilder.buildPartial()); |
break; |
} |
} |
} |
} |
private int bitField0_; |
// optional string name = 1; |
private java.lang.Object name_ = ""; |
public boolean hasName() { |
return ((bitField0_ & 0x00000001) == 0x00000001); |
} |
public String getName() { |
java.lang.Object ref = name_; |
if (!(ref instanceof String)) { |
String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); |
name_ = s; |
return s; |
} else { |
return (String) ref; |
} |
} |
public Builder setName(String value) { |
if (value == null) { |
throw new NullPointerException(); |
} |
bitField0_ |= 0x00000001; |
name_ = value; |
onChanged(); |
return this; |
} |
public Builder clearName() { |
bitField0_ = (bitField0_ & ~0x00000001); |
name_ = getDefaultInstance().getName(); |
onChanged(); |
return this; |
} |
void setName(com.google.protobuf.ByteString value) { |
bitField0_ |= 0x00000001; |
name_ = value; |
onChanged(); |
} |
// repeated .google.protobuf.FieldDescriptorProto field = 2; |
private java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> field_ = |
java.util.Collections.emptyList(); |
private void ensureFieldIsMutable() { |
if (!((bitField0_ & 0x00000002) == 0x00000002)) { |
field_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.FieldDescriptorProto>(field_); |
bitField0_ |= 0x00000002; |
} |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.FieldDescriptorProto, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> fieldBuilder_; |
public java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> getFieldList() { |
if (fieldBuilder_ == null) { |
return java.util.Collections.unmodifiableList(field_); |
} else { |
return fieldBuilder_.getMessageList(); |
} |
} |
public int getFieldCount() { |
if (fieldBuilder_ == null) { |
return field_.size(); |
} else { |
return fieldBuilder_.getCount(); |
} |
} |
public com.google.protobuf.DescriptorProtos.FieldDescriptorProto getField(int index) { |
if (fieldBuilder_ == null) { |
return field_.get(index); |
} else { |
return fieldBuilder_.getMessage(index); |
} |
} |
public Builder setField( |
int index, com.google.protobuf.DescriptorProtos.FieldDescriptorProto value) { |
if (fieldBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureFieldIsMutable(); |
field_.set(index, value); |
onChanged(); |
} else { |
fieldBuilder_.setMessage(index, value); |
} |
return this; |
} |
public Builder setField( |
int index, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder builderForValue) { |
if (fieldBuilder_ == null) { |
ensureFieldIsMutable(); |
field_.set(index, builderForValue.build()); |
onChanged(); |
} else { |
fieldBuilder_.setMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addField(com.google.protobuf.DescriptorProtos.FieldDescriptorProto value) { |
if (fieldBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureFieldIsMutable(); |
field_.add(value); |
onChanged(); |
} else { |
fieldBuilder_.addMessage(value); |
} |
return this; |
} |
public Builder addField( |
int index, com.google.protobuf.DescriptorProtos.FieldDescriptorProto value) { |
if (fieldBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureFieldIsMutable(); |
field_.add(index, value); |
onChanged(); |
} else { |
fieldBuilder_.addMessage(index, value); |
} |
return this; |
} |
public Builder addField( |
com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder builderForValue) { |
if (fieldBuilder_ == null) { |
ensureFieldIsMutable(); |
field_.add(builderForValue.build()); |
onChanged(); |
} else { |
fieldBuilder_.addMessage(builderForValue.build()); |
} |
return this; |
} |
public Builder addField( |
int index, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder builderForValue) { |
if (fieldBuilder_ == null) { |
ensureFieldIsMutable(); |
field_.add(index, builderForValue.build()); |
onChanged(); |
} else { |
fieldBuilder_.addMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addAllField( |
java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.FieldDescriptorProto> values) { |
if (fieldBuilder_ == null) { |
ensureFieldIsMutable(); |
super.addAll(values, field_); |
onChanged(); |
} else { |
fieldBuilder_.addAllMessages(values); |
} |
return this; |
} |
public Builder clearField() { |
if (fieldBuilder_ == null) { |
field_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000002); |
onChanged(); |
} else { |
fieldBuilder_.clear(); |
} |
return this; |
} |
public Builder removeField(int index) { |
if (fieldBuilder_ == null) { |
ensureFieldIsMutable(); |
field_.remove(index); |
onChanged(); |
} else { |
fieldBuilder_.remove(index); |
} |
return this; |
} |
public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder getFieldBuilder( |
int index) { |
return getFieldFieldBuilder().getBuilder(index); |
} |
public com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder getFieldOrBuilder( |
int index) { |
if (fieldBuilder_ == null) { |
return field_.get(index); } else { |
return fieldBuilder_.getMessageOrBuilder(index); |
} |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> |
getFieldOrBuilderList() { |
if (fieldBuilder_ != null) { |
return fieldBuilder_.getMessageOrBuilderList(); |
} else { |
return java.util.Collections.unmodifiableList(field_); |
} |
} |
public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder addFieldBuilder() { |
return getFieldFieldBuilder().addBuilder( |
com.google.protobuf.DescriptorProtos.FieldDescriptorProto.getDefaultInstance()); |
} |
public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder addFieldBuilder( |
int index) { |
return getFieldFieldBuilder().addBuilder( |
index, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.getDefaultInstance()); |
} |
public java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder> |
getFieldBuilderList() { |
return getFieldFieldBuilder().getBuilderList(); |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.FieldDescriptorProto, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> |
getFieldFieldBuilder() { |
if (fieldBuilder_ == null) { |
fieldBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.FieldDescriptorProto, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder>( |
field_, |
((bitField0_ & 0x00000002) == 0x00000002), |
getParentForChildren(), |
isClean()); |
field_ = null; |
} |
return fieldBuilder_; |
} |
// repeated .google.protobuf.FieldDescriptorProto extension = 6; |
private java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> extension_ = |
java.util.Collections.emptyList(); |
private void ensureExtensionIsMutable() { |
if (!((bitField0_ & 0x00000004) == 0x00000004)) { |
extension_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.FieldDescriptorProto>(extension_); |
bitField0_ |= 0x00000004; |
} |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.FieldDescriptorProto, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> extensionBuilder_; |
public java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto> getExtensionList() { |
if (extensionBuilder_ == null) { |
return java.util.Collections.unmodifiableList(extension_); |
} else { |
return extensionBuilder_.getMessageList(); |
} |
} |
public int getExtensionCount() { |
if (extensionBuilder_ == null) { |
return extension_.size(); |
} else { |
return extensionBuilder_.getCount(); |
} |
} |
public com.google.protobuf.DescriptorProtos.FieldDescriptorProto getExtension(int index) { |
if (extensionBuilder_ == null) { |
return extension_.get(index); |
} else { |
return extensionBuilder_.getMessage(index); |
} |
} |
public Builder setExtension( |
int index, com.google.protobuf.DescriptorProtos.FieldDescriptorProto value) { |
if (extensionBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureExtensionIsMutable(); |
extension_.set(index, value); |
onChanged(); |
} else { |
extensionBuilder_.setMessage(index, value); |
} |
return this; |
} |
public Builder setExtension( |
int index, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder builderForValue) { |
if (extensionBuilder_ == null) { |
ensureExtensionIsMutable(); |
extension_.set(index, builderForValue.build()); |
onChanged(); |
} else { |
extensionBuilder_.setMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addExtension(com.google.protobuf.DescriptorProtos.FieldDescriptorProto value) { |
if (extensionBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureExtensionIsMutable(); |
extension_.add(value); |
onChanged(); |
} else { |
extensionBuilder_.addMessage(value); |
} |
return this; |
} |
public Builder addExtension( |
int index, com.google.protobuf.DescriptorProtos.FieldDescriptorProto value) { |
if (extensionBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureExtensionIsMutable(); |
extension_.add(index, value); |
onChanged(); |
} else { |
extensionBuilder_.addMessage(index, value); |
} |
return this; |
} |
public Builder addExtension( |
com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder builderForValue) { |
if (extensionBuilder_ == null) { |
ensureExtensionIsMutable(); |
extension_.add(builderForValue.build()); |
onChanged(); |
} else { |
extensionBuilder_.addMessage(builderForValue.build()); |
} |
return this; |
} |
public Builder addExtension( |
int index, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder builderForValue) { |
if (extensionBuilder_ == null) { |
ensureExtensionIsMutable(); |
extension_.add(index, builderForValue.build()); |
onChanged(); |
} else { |
extensionBuilder_.addMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addAllExtension( |
java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.FieldDescriptorProto> values) { |
if (extensionBuilder_ == null) { |
ensureExtensionIsMutable(); |
super.addAll(values, extension_); |
onChanged(); |
} else { |
extensionBuilder_.addAllMessages(values); |
} |
return this; |
} |
public Builder clearExtension() { |
if (extensionBuilder_ == null) { |
extension_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000004); |
onChanged(); |
} else { |
extensionBuilder_.clear(); |
} |
return this; |
} |
public Builder removeExtension(int index) { |
if (extensionBuilder_ == null) { |
ensureExtensionIsMutable(); |
extension_.remove(index); |
onChanged(); |
} else { |
extensionBuilder_.remove(index); |
} |
return this; |
} |
public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder getExtensionBuilder( |
int index) { |
return getExtensionFieldBuilder().getBuilder(index); |
} |
public com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder getExtensionOrBuilder( |
int index) { |
if (extensionBuilder_ == null) { |
return extension_.get(index); } else { |
return extensionBuilder_.getMessageOrBuilder(index); |
} |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> |
getExtensionOrBuilderList() { |
if (extensionBuilder_ != null) { |
return extensionBuilder_.getMessageOrBuilderList(); |
} else { |
return java.util.Collections.unmodifiableList(extension_); |
} |
} |
public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder addExtensionBuilder() { |
return getExtensionFieldBuilder().addBuilder( |
com.google.protobuf.DescriptorProtos.FieldDescriptorProto.getDefaultInstance()); |
} |
public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder addExtensionBuilder( |
int index) { |
return getExtensionFieldBuilder().addBuilder( |
index, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.getDefaultInstance()); |
} |
public java.util.List<com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder> |
getExtensionBuilderList() { |
return getExtensionFieldBuilder().getBuilderList(); |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.FieldDescriptorProto, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder> |
getExtensionFieldBuilder() { |
if (extensionBuilder_ == null) { |
extensionBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.FieldDescriptorProto, com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder>( |
extension_, |
((bitField0_ & 0x00000004) == 0x00000004), |
getParentForChildren(), |
isClean()); |
extension_ = null; |
} |
return extensionBuilder_; |
} |
// repeated .google.protobuf.DescriptorProto nested_type = 3; |
private java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto> nestedType_ = |
java.util.Collections.emptyList(); |
private void ensureNestedTypeIsMutable() { |
if (!((bitField0_ & 0x00000008) == 0x00000008)) { |
nestedType_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.DescriptorProto>(nestedType_); |
bitField0_ |= 0x00000008; |
} |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.DescriptorProto, com.google.protobuf.DescriptorProtos.DescriptorProto.Builder, com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder> nestedTypeBuilder_; |
public java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto> getNestedTypeList() { |
if (nestedTypeBuilder_ == null) { |
return java.util.Collections.unmodifiableList(nestedType_); |
} else { |
return nestedTypeBuilder_.getMessageList(); |
} |
} |
public int getNestedTypeCount() { |
if (nestedTypeBuilder_ == null) { |
return nestedType_.size(); |
} else { |
return nestedTypeBuilder_.getCount(); |
} |
} |
public com.google.protobuf.DescriptorProtos.DescriptorProto getNestedType(int index) { |
if (nestedTypeBuilder_ == null) { |
return nestedType_.get(index); |
} else { |
return nestedTypeBuilder_.getMessage(index); |
} |
} |
public Builder setNestedType( |
int index, com.google.protobuf.DescriptorProtos.DescriptorProto value) { |
if (nestedTypeBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureNestedTypeIsMutable(); |
nestedType_.set(index, value); |
onChanged(); |
} else { |
nestedTypeBuilder_.setMessage(index, value); |
} |
return this; |
} |
public Builder setNestedType( |
int index, com.google.protobuf.DescriptorProtos.DescriptorProto.Builder builderForValue) { |
if (nestedTypeBuilder_ == null) { |
ensureNestedTypeIsMutable(); |
nestedType_.set(index, builderForValue.build()); |
onChanged(); |
} else { |
nestedTypeBuilder_.setMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addNestedType(com.google.protobuf.DescriptorProtos.DescriptorProto value) { |
if (nestedTypeBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureNestedTypeIsMutable(); |
nestedType_.add(value); |
onChanged(); |
} else { |
nestedTypeBuilder_.addMessage(value); |
} |
return this; |
} |
public Builder addNestedType( |
int index, com.google.protobuf.DescriptorProtos.DescriptorProto value) { |
if (nestedTypeBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureNestedTypeIsMutable(); |
nestedType_.add(index, value); |
onChanged(); |
} else { |
nestedTypeBuilder_.addMessage(index, value); |
} |
return this; |
} |
public Builder addNestedType( |
com.google.protobuf.DescriptorProtos.DescriptorProto.Builder builderForValue) { |
if (nestedTypeBuilder_ == null) { |
ensureNestedTypeIsMutable(); |
nestedType_.add(builderForValue.build()); |
onChanged(); |
} else { |
nestedTypeBuilder_.addMessage(builderForValue.build()); |
} |
return this; |
} |
public Builder addNestedType( |
int index, com.google.protobuf.DescriptorProtos.DescriptorProto.Builder builderForValue) { |
if (nestedTypeBuilder_ == null) { |
ensureNestedTypeIsMutable(); |
nestedType_.add(index, builderForValue.build()); |
onChanged(); |
} else { |
nestedTypeBuilder_.addMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addAllNestedType( |
java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.DescriptorProto> values) { |
if (nestedTypeBuilder_ == null) { |
ensureNestedTypeIsMutable(); |
super.addAll(values, nestedType_); |
onChanged(); |
} else { |
nestedTypeBuilder_.addAllMessages(values); |
} |
return this; |
} |
public Builder clearNestedType() { |
if (nestedTypeBuilder_ == null) { |
nestedType_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000008); |
onChanged(); |
} else { |
nestedTypeBuilder_.clear(); |
} |
return this; |
} |
public Builder removeNestedType(int index) { |
if (nestedTypeBuilder_ == null) { |
ensureNestedTypeIsMutable(); |
nestedType_.remove(index); |
onChanged(); |
} else { |
nestedTypeBuilder_.remove(index); |
} |
return this; |
} |
public com.google.protobuf.DescriptorProtos.DescriptorProto.Builder getNestedTypeBuilder( |
int index) { |
return getNestedTypeFieldBuilder().getBuilder(index); |
} |
public com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder getNestedTypeOrBuilder( |
int index) { |
if (nestedTypeBuilder_ == null) { |
return nestedType_.get(index); } else { |
return nestedTypeBuilder_.getMessageOrBuilder(index); |
} |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder> |
getNestedTypeOrBuilderList() { |
if (nestedTypeBuilder_ != null) { |
return nestedTypeBuilder_.getMessageOrBuilderList(); |
} else { |
return java.util.Collections.unmodifiableList(nestedType_); |
} |
} |
public com.google.protobuf.DescriptorProtos.DescriptorProto.Builder addNestedTypeBuilder() { |
return getNestedTypeFieldBuilder().addBuilder( |
com.google.protobuf.DescriptorProtos.DescriptorProto.getDefaultInstance()); |
} |
public com.google.protobuf.DescriptorProtos.DescriptorProto.Builder addNestedTypeBuilder( |
int index) { |
return getNestedTypeFieldBuilder().addBuilder( |
index, com.google.protobuf.DescriptorProtos.DescriptorProto.getDefaultInstance()); |
} |
public java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto.Builder> |
getNestedTypeBuilderList() { |
return getNestedTypeFieldBuilder().getBuilderList(); |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.DescriptorProto, com.google.protobuf.DescriptorProtos.DescriptorProto.Builder, com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder> |
getNestedTypeFieldBuilder() { |
if (nestedTypeBuilder_ == null) { |
nestedTypeBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.DescriptorProto, com.google.protobuf.DescriptorProtos.DescriptorProto.Builder, com.google.protobuf.DescriptorProtos.DescriptorProtoOrBuilder>( |
nestedType_, |
((bitField0_ & 0x00000008) == 0x00000008), |
getParentForChildren(), |
isClean()); |
nestedType_ = null; |
} |
return nestedTypeBuilder_; |
} |
// repeated .google.protobuf.EnumDescriptorProto enum_type = 4; |
private java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto> enumType_ = |
java.util.Collections.emptyList(); |
private void ensureEnumTypeIsMutable() { |
if (!((bitField0_ & 0x00000010) == 0x00000010)) { |
enumType_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.EnumDescriptorProto>(enumType_); |
bitField0_ |= 0x00000010; |
} |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.EnumDescriptorProto, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder> enumTypeBuilder_; |
public java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto> getEnumTypeList() { |
if (enumTypeBuilder_ == null) { |
return java.util.Collections.unmodifiableList(enumType_); |
} else { |
return enumTypeBuilder_.getMessageList(); |
} |
} |
public int getEnumTypeCount() { |
if (enumTypeBuilder_ == null) { |
return enumType_.size(); |
} else { |
return enumTypeBuilder_.getCount(); |
} |
} |
public com.google.protobuf.DescriptorProtos.EnumDescriptorProto getEnumType(int index) { |
if (enumTypeBuilder_ == null) { |
return enumType_.get(index); |
} else { |
return enumTypeBuilder_.getMessage(index); |
} |
} |
public Builder setEnumType( |
int index, com.google.protobuf.DescriptorProtos.EnumDescriptorProto value) { |
if (enumTypeBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureEnumTypeIsMutable(); |
enumType_.set(index, value); |
onChanged(); |
} else { |
enumTypeBuilder_.setMessage(index, value); |
} |
return this; |
} |
public Builder setEnumType( |
int index, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder builderForValue) { |
if (enumTypeBuilder_ == null) { |
ensureEnumTypeIsMutable(); |
enumType_.set(index, builderForValue.build()); |
onChanged(); |
} else { |
enumTypeBuilder_.setMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addEnumType(com.google.protobuf.DescriptorProtos.EnumDescriptorProto value) { |
if (enumTypeBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureEnumTypeIsMutable(); |
enumType_.add(value); |
onChanged(); |
} else { |
enumTypeBuilder_.addMessage(value); |
} |
return this; |
} |
public Builder addEnumType( |
int index, com.google.protobuf.DescriptorProtos.EnumDescriptorProto value) { |
if (enumTypeBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureEnumTypeIsMutable(); |
enumType_.add(index, value); |
onChanged(); |
} else { |
enumTypeBuilder_.addMessage(index, value); |
} |
return this; |
} |
public Builder addEnumType( |
com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder builderForValue) { |
if (enumTypeBuilder_ == null) { |
ensureEnumTypeIsMutable(); |
enumType_.add(builderForValue.build()); |
onChanged(); |
} else { |
enumTypeBuilder_.addMessage(builderForValue.build()); |
} |
return this; |
} |
public Builder addEnumType( |
int index, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder builderForValue) { |
if (enumTypeBuilder_ == null) { |
ensureEnumTypeIsMutable(); |
enumType_.add(index, builderForValue.build()); |
onChanged(); |
} else { |
enumTypeBuilder_.addMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addAllEnumType( |
java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.EnumDescriptorProto> values) { |
if (enumTypeBuilder_ == null) { |
ensureEnumTypeIsMutable(); |
super.addAll(values, enumType_); |
onChanged(); |
} else { |
enumTypeBuilder_.addAllMessages(values); |
} |
return this; |
} |
public Builder clearEnumType() { |
if (enumTypeBuilder_ == null) { |
enumType_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000010); |
onChanged(); |
} else { |
enumTypeBuilder_.clear(); |
} |
return this; |
} |
public Builder removeEnumType(int index) { |
if (enumTypeBuilder_ == null) { |
ensureEnumTypeIsMutable(); |
enumType_.remove(index); |
onChanged(); |
} else { |
enumTypeBuilder_.remove(index); |
} |
return this; |
} |
public com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder getEnumTypeBuilder( |
int index) { |
return getEnumTypeFieldBuilder().getBuilder(index); |
} |
public com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder getEnumTypeOrBuilder( |
int index) { |
if (enumTypeBuilder_ == null) { |
return enumType_.get(index); } else { |
return enumTypeBuilder_.getMessageOrBuilder(index); |
} |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder> |
getEnumTypeOrBuilderList() { |
if (enumTypeBuilder_ != null) { |
return enumTypeBuilder_.getMessageOrBuilderList(); |
} else { |
return java.util.Collections.unmodifiableList(enumType_); |
} |
} |
public com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder addEnumTypeBuilder() { |
return getEnumTypeFieldBuilder().addBuilder( |
com.google.protobuf.DescriptorProtos.EnumDescriptorProto.getDefaultInstance()); |
} |
public com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder addEnumTypeBuilder( |
int index) { |
return getEnumTypeFieldBuilder().addBuilder( |
index, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.getDefaultInstance()); |
} |
public java.util.List<com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder> |
getEnumTypeBuilderList() { |
return getEnumTypeFieldBuilder().getBuilderList(); |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.EnumDescriptorProto, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder> |
getEnumTypeFieldBuilder() { |
if (enumTypeBuilder_ == null) { |
enumTypeBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.EnumDescriptorProto, com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder>( |
enumType_, |
((bitField0_ & 0x00000010) == 0x00000010), |
getParentForChildren(), |
isClean()); |
enumType_ = null; |
} |
return enumTypeBuilder_; |
} |
// repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5; |
private java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange> extensionRange_ = |
java.util.Collections.emptyList(); |
private void ensureExtensionRangeIsMutable() { |
if (!((bitField0_ & 0x00000020) == 0x00000020)) { |
extensionRange_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange>(extensionRange_); |
bitField0_ |= 0x00000020; |
} |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder> extensionRangeBuilder_; |
public java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange> getExtensionRangeList() { |
if (extensionRangeBuilder_ == null) { |
return java.util.Collections.unmodifiableList(extensionRange_); |
} else { |
return extensionRangeBuilder_.getMessageList(); |
} |
} |
public int getExtensionRangeCount() { |
if (extensionRangeBuilder_ == null) { |
return extensionRange_.size(); |
} else { |
return extensionRangeBuilder_.getCount(); |
} |
} |
public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange getExtensionRange(int index) { |
if (extensionRangeBuilder_ == null) { |
return extensionRange_.get(index); |
} else { |
return extensionRangeBuilder_.getMessage(index); |
} |
} |
public Builder setExtensionRange( |
int index, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange value) { |
if (extensionRangeBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureExtensionRangeIsMutable(); |
extensionRange_.set(index, value); |
onChanged(); |
} else { |
extensionRangeBuilder_.setMessage(index, value); |
} |
return this; |
} |
public Builder setExtensionRange( |
int index, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder builderForValue) { |
if (extensionRangeBuilder_ == null) { |
ensureExtensionRangeIsMutable(); |
extensionRange_.set(index, builderForValue.build()); |
onChanged(); |
} else { |
extensionRangeBuilder_.setMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addExtensionRange(com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange value) { |
if (extensionRangeBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureExtensionRangeIsMutable(); |
extensionRange_.add(value); |
onChanged(); |
} else { |
extensionRangeBuilder_.addMessage(value); |
} |
return this; |
} |
public Builder addExtensionRange( |
int index, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange value) { |
if (extensionRangeBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureExtensionRangeIsMutable(); |
extensionRange_.add(index, value); |
onChanged(); |
} else { |
extensionRangeBuilder_.addMessage(index, value); |
} |
return this; |
} |
public Builder addExtensionRange( |
com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder builderForValue) { |
if (extensionRangeBuilder_ == null) { |
ensureExtensionRangeIsMutable(); |
extensionRange_.add(builderForValue.build()); |
onChanged(); |
} else { |
extensionRangeBuilder_.addMessage(builderForValue.build()); |
} |
return this; |
} |
public Builder addExtensionRange( |
int index, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder builderForValue) { |
if (extensionRangeBuilder_ == null) { |
ensureExtensionRangeIsMutable(); |
extensionRange_.add(index, builderForValue.build()); |
onChanged(); |
} else { |
extensionRangeBuilder_.addMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addAllExtensionRange( |
java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange> values) { |
if (extensionRangeBuilder_ == null) { |
ensureExtensionRangeIsMutable(); |
super.addAll(values, extensionRange_); |
onChanged(); |
} else { |
extensionRangeBuilder_.addAllMessages(values); |
} |
return this; |
} |
public Builder clearExtensionRange() { |
if (extensionRangeBuilder_ == null) { |
extensionRange_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000020); |
onChanged(); |
} else { |
extensionRangeBuilder_.clear(); |
} |
return this; |
} |
public Builder removeExtensionRange(int index) { |
if (extensionRangeBuilder_ == null) { |
ensureExtensionRangeIsMutable(); |
extensionRange_.remove(index); |
onChanged(); |
} else { |
extensionRangeBuilder_.remove(index); |
} |
return this; |
} |
public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder getExtensionRangeBuilder( |
int index) { |
return getExtensionRangeFieldBuilder().getBuilder(index); |
} |
public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder getExtensionRangeOrBuilder( |
int index) { |
if (extensionRangeBuilder_ == null) { |
return extensionRange_.get(index); } else { |
return extensionRangeBuilder_.getMessageOrBuilder(index); |
} |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder> |
getExtensionRangeOrBuilderList() { |
if (extensionRangeBuilder_ != null) { |
return extensionRangeBuilder_.getMessageOrBuilderList(); |
} else { |
return java.util.Collections.unmodifiableList(extensionRange_); |
} |
} |
public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder addExtensionRangeBuilder() { |
return getExtensionRangeFieldBuilder().addBuilder( |
com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.getDefaultInstance()); |
} |
public com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder addExtensionRangeBuilder( |
int index) { |
return getExtensionRangeFieldBuilder().addBuilder( |
index, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.getDefaultInstance()); |
} |
public java.util.List<com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder> |
getExtensionRangeBuilderList() { |
return getExtensionRangeFieldBuilder().getBuilderList(); |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder> |
getExtensionRangeFieldBuilder() { |
if (extensionRangeBuilder_ == null) { |
extensionRangeBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder, com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRangeOrBuilder>( |
extensionRange_, |
((bitField0_ & 0x00000020) == 0x00000020), |
getParentForChildren(), |
isClean()); |
extensionRange_ = null; |
} |
return extensionRangeBuilder_; |
} |
// optional .google.protobuf.MessageOptions options = 7; |
private com.google.protobuf.DescriptorProtos.MessageOptions options_ = com.google.protobuf.DescriptorProtos.MessageOptions.getDefaultInstance(); |
private com.google.protobuf.SingleFieldBuilder< |
com.google.protobuf.DescriptorProtos.MessageOptions, com.google.protobuf.DescriptorProtos.MessageOptions.Builder, com.google.protobuf.DescriptorProtos.MessageOptionsOrBuilder> optionsBuilder_; |
public boolean hasOptions() { |
return ((bitField0_ & 0x00000040) == 0x00000040); |
} |
public com.google.protobuf.DescriptorProtos.MessageOptions getOptions() { |
if (optionsBuilder_ == null) { |
return options_; |
} else { |
return optionsBuilder_.getMessage(); |
} |
} |
public Builder setOptions(com.google.protobuf.DescriptorProtos.MessageOptions value) { |
if (optionsBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
options_ = value; |
onChanged(); |
} else { |
optionsBuilder_.setMessage(value); |
} |
bitField0_ |= 0x00000040; |
return this; |
} |
public Builder setOptions( |
com.google.protobuf.DescriptorProtos.MessageOptions.Builder builderForValue) { |
if (optionsBuilder_ == null) { |
options_ = builderForValue.build(); |
onChanged(); |
} else { |
optionsBuilder_.setMessage(builderForValue.build()); |
} |
bitField0_ |= 0x00000040; |
return this; |
} |
public Builder mergeOptions(com.google.protobuf.DescriptorProtos.MessageOptions value) { |
if (optionsBuilder_ == null) { |
if (((bitField0_ & 0x00000040) == 0x00000040) && |
options_ != com.google.protobuf.DescriptorProtos.MessageOptions.getDefaultInstance()) { |
options_ = |
com.google.protobuf.DescriptorProtos.MessageOptions.newBuilder(options_).mergeFrom(value).buildPartial(); |
} else { |
options_ = value; |
} |
onChanged(); |
} else { |
optionsBuilder_.mergeFrom(value); |
} |
bitField0_ |= 0x00000040; |
return this; |
} |
public Builder clearOptions() { |
if (optionsBuilder_ == null) { |
options_ = com.google.protobuf.DescriptorProtos.MessageOptions.getDefaultInstance(); |
onChanged(); |
} else { |
optionsBuilder_.clear(); |
} |
bitField0_ = (bitField0_ & ~0x00000040); |
return this; |
} |
public com.google.protobuf.DescriptorProtos.MessageOptions.Builder getOptionsBuilder() { |
bitField0_ |= 0x00000040; |
onChanged(); |
return getOptionsFieldBuilder().getBuilder(); |
} |
public com.google.protobuf.DescriptorProtos.MessageOptionsOrBuilder getOptionsOrBuilder() { |
if (optionsBuilder_ != null) { |
return optionsBuilder_.getMessageOrBuilder(); |
} else { |
return options_; |
} |
} |
private com.google.protobuf.SingleFieldBuilder< |
com.google.protobuf.DescriptorProtos.MessageOptions, com.google.protobuf.DescriptorProtos.MessageOptions.Builder, com.google.protobuf.DescriptorProtos.MessageOptionsOrBuilder> |
getOptionsFieldBuilder() { |
if (optionsBuilder_ == null) { |
optionsBuilder_ = new com.google.protobuf.SingleFieldBuilder< |
com.google.protobuf.DescriptorProtos.MessageOptions, com.google.protobuf.DescriptorProtos.MessageOptions.Builder, com.google.protobuf.DescriptorProtos.MessageOptionsOrBuilder>( |
options_, |
getParentForChildren(), |
isClean()); |
options_ = null; |
} |
return optionsBuilder_; |
} |
// @@protoc_insertion_point(builder_scope:google.protobuf.DescriptorProto) |
} |
static { |
defaultInstance = new DescriptorProto(true); |
defaultInstance.initFields(); |
} |
// @@protoc_insertion_point(class_scope:google.protobuf.DescriptorProto) |
} |
public interface FieldDescriptorProtoOrBuilder |
extends com.google.protobuf.MessageOrBuilder { |
// optional string name = 1; |
boolean hasName(); |
String getName(); |
// optional int32 number = 3; |
boolean hasNumber(); |
int getNumber(); |
// optional .google.protobuf.FieldDescriptorProto.Label label = 4; |
boolean hasLabel(); |
com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label getLabel(); |
// optional .google.protobuf.FieldDescriptorProto.Type type = 5; |
boolean hasType(); |
com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type getType(); |
// optional string type_name = 6; |
boolean hasTypeName(); |
String getTypeName(); |
// optional string extendee = 2; |
boolean hasExtendee(); |
String getExtendee(); |
// optional string default_value = 7; |
boolean hasDefaultValue(); |
String getDefaultValue(); |
// optional .google.protobuf.FieldOptions options = 8; |
boolean hasOptions(); |
com.google.protobuf.DescriptorProtos.FieldOptions getOptions(); |
com.google.protobuf.DescriptorProtos.FieldOptionsOrBuilder getOptionsOrBuilder(); |
} |
public static final class FieldDescriptorProto extends |
com.google.protobuf.GeneratedMessage |
implements FieldDescriptorProtoOrBuilder { |
// Use FieldDescriptorProto.newBuilder() to construct. |
private FieldDescriptorProto(Builder builder) { |
super(builder); |
} |
private FieldDescriptorProto(boolean noInit) {} |
private static final FieldDescriptorProto defaultInstance; |
public static FieldDescriptorProto getDefaultInstance() { |
return defaultInstance; |
} |
public FieldDescriptorProto getDefaultInstanceForType() { |
return defaultInstance; |
} |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FieldDescriptorProto_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FieldDescriptorProto_fieldAccessorTable; |
} |
public enum Type |
implements com.google.protobuf.ProtocolMessageEnum { |
TYPE_DOUBLE(0, 1), |
TYPE_FLOAT(1, 2), |
TYPE_INT64(2, 3), |
TYPE_UINT64(3, 4), |
TYPE_INT32(4, 5), |
TYPE_FIXED64(5, 6), |
TYPE_FIXED32(6, 7), |
TYPE_BOOL(7, 8), |
TYPE_STRING(8, 9), |
TYPE_GROUP(9, 10), |
TYPE_MESSAGE(10, 11), |
TYPE_BYTES(11, 12), |
TYPE_UINT32(12, 13), |
TYPE_ENUM(13, 14), |
TYPE_SFIXED32(14, 15), |
TYPE_SFIXED64(15, 16), |
TYPE_SINT32(16, 17), |
TYPE_SINT64(17, 18), |
; |
public static final int TYPE_DOUBLE_VALUE = 1; |
public static final int TYPE_FLOAT_VALUE = 2; |
public static final int TYPE_INT64_VALUE = 3; |
public static final int TYPE_UINT64_VALUE = 4; |
public static final int TYPE_INT32_VALUE = 5; |
public static final int TYPE_FIXED64_VALUE = 6; |
public static final int TYPE_FIXED32_VALUE = 7; |
public static final int TYPE_BOOL_VALUE = 8; |
public static final int TYPE_STRING_VALUE = 9; |
public static final int TYPE_GROUP_VALUE = 10; |
public static final int TYPE_MESSAGE_VALUE = 11; |
public static final int TYPE_BYTES_VALUE = 12; |
public static final int TYPE_UINT32_VALUE = 13; |
public static final int TYPE_ENUM_VALUE = 14; |
public static final int TYPE_SFIXED32_VALUE = 15; |
public static final int TYPE_SFIXED64_VALUE = 16; |
public static final int TYPE_SINT32_VALUE = 17; |
public static final int TYPE_SINT64_VALUE = 18; |
public final int getNumber() { return value; } |
public static Type valueOf(int value) { |
switch (value) { |
case 1: return TYPE_DOUBLE; |
case 2: return TYPE_FLOAT; |
case 3: return TYPE_INT64; |
case 4: return TYPE_UINT64; |
case 5: return TYPE_INT32; |
case 6: return TYPE_FIXED64; |
case 7: return TYPE_FIXED32; |
case 8: return TYPE_BOOL; |
case 9: return TYPE_STRING; |
case 10: return TYPE_GROUP; |
case 11: return TYPE_MESSAGE; |
case 12: return TYPE_BYTES; |
case 13: return TYPE_UINT32; |
case 14: return TYPE_ENUM; |
case 15: return TYPE_SFIXED32; |
case 16: return TYPE_SFIXED64; |
case 17: return TYPE_SINT32; |
case 18: return TYPE_SINT64; |
default: return null; |
} |
} |
public static com.google.protobuf.Internal.EnumLiteMap<Type> |
internalGetValueMap() { |
return internalValueMap; |
} |
private static com.google.protobuf.Internal.EnumLiteMap<Type> |
internalValueMap = |
new com.google.protobuf.Internal.EnumLiteMap<Type>() { |
public Type findValueByNumber(int number) { |
return Type.valueOf(number); |
} |
}; |
public final com.google.protobuf.Descriptors.EnumValueDescriptor |
getValueDescriptor() { |
return getDescriptor().getValues().get(index); |
} |
public final com.google.protobuf.Descriptors.EnumDescriptor |
getDescriptorForType() { |
return getDescriptor(); |
} |
public static final com.google.protobuf.Descriptors.EnumDescriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.FieldDescriptorProto.getDescriptor().getEnumTypes().get(0); |
} |
private static final Type[] VALUES = { |
TYPE_DOUBLE, TYPE_FLOAT, TYPE_INT64, TYPE_UINT64, TYPE_INT32, TYPE_FIXED64, TYPE_FIXED32, TYPE_BOOL, TYPE_STRING, TYPE_GROUP, TYPE_MESSAGE, TYPE_BYTES, TYPE_UINT32, TYPE_ENUM, TYPE_SFIXED32, TYPE_SFIXED64, TYPE_SINT32, TYPE_SINT64, |
}; |
public static Type valueOf( |
com.google.protobuf.Descriptors.EnumValueDescriptor desc) { |
if (desc.getType() != getDescriptor()) { |
throw new java.lang.IllegalArgumentException( |
"EnumValueDescriptor is not for this type."); |
} |
return VALUES[desc.getIndex()]; |
} |
private final int index; |
private final int value; |
private Type(int index, int value) { |
this.index = index; |
this.value = value; |
} |
// @@protoc_insertion_point(enum_scope:google.protobuf.FieldDescriptorProto.Type) |
} |
public enum Label |
implements com.google.protobuf.ProtocolMessageEnum { |
LABEL_OPTIONAL(0, 1), |
LABEL_REQUIRED(1, 2), |
LABEL_REPEATED(2, 3), |
; |
public static final int LABEL_OPTIONAL_VALUE = 1; |
public static final int LABEL_REQUIRED_VALUE = 2; |
public static final int LABEL_REPEATED_VALUE = 3; |
public final int getNumber() { return value; } |
public static Label valueOf(int value) { |
switch (value) { |
case 1: return LABEL_OPTIONAL; |
case 2: return LABEL_REQUIRED; |
case 3: return LABEL_REPEATED; |
default: return null; |
} |
} |
public static com.google.protobuf.Internal.EnumLiteMap<Label> |
internalGetValueMap() { |
return internalValueMap; |
} |
private static com.google.protobuf.Internal.EnumLiteMap<Label> |
internalValueMap = |
new com.google.protobuf.Internal.EnumLiteMap<Label>() { |
public Label findValueByNumber(int number) { |
return Label.valueOf(number); |
} |
}; |
public final com.google.protobuf.Descriptors.EnumValueDescriptor |
getValueDescriptor() { |
return getDescriptor().getValues().get(index); |
} |
public final com.google.protobuf.Descriptors.EnumDescriptor |
getDescriptorForType() { |
return getDescriptor(); |
} |
public static final com.google.protobuf.Descriptors.EnumDescriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.FieldDescriptorProto.getDescriptor().getEnumTypes().get(1); |
} |
private static final Label[] VALUES = { |
LABEL_OPTIONAL, LABEL_REQUIRED, LABEL_REPEATED, |
}; |
public static Label valueOf( |
com.google.protobuf.Descriptors.EnumValueDescriptor desc) { |
if (desc.getType() != getDescriptor()) { |
throw new java.lang.IllegalArgumentException( |
"EnumValueDescriptor is not for this type."); |
} |
return VALUES[desc.getIndex()]; |
} |
private final int index; |
private final int value; |
private Label(int index, int value) { |
this.index = index; |
this.value = value; |
} |
// @@protoc_insertion_point(enum_scope:google.protobuf.FieldDescriptorProto.Label) |
} |
private int bitField0_; |
// optional string name = 1; |
public static final int NAME_FIELD_NUMBER = 1; |
private java.lang.Object name_; |
public boolean hasName() { |
return ((bitField0_ & 0x00000001) == 0x00000001); |
} |
public String getName() { |
java.lang.Object ref = name_; |
if (ref instanceof String) { |
return (String) ref; |
} else { |
com.google.protobuf.ByteString bs = |
(com.google.protobuf.ByteString) ref; |
String s = bs.toStringUtf8(); |
if (com.google.protobuf.Internal.isValidUtf8(bs)) { |
name_ = s; |
} |
return s; |
} |
} |
private com.google.protobuf.ByteString getNameBytes() { |
java.lang.Object ref = name_; |
if (ref instanceof String) { |
com.google.protobuf.ByteString b = |
com.google.protobuf.ByteString.copyFromUtf8((String) ref); |
name_ = b; |
return b; |
} else { |
return (com.google.protobuf.ByteString) ref; |
} |
} |
// optional int32 number = 3; |
public static final int NUMBER_FIELD_NUMBER = 3; |
private int number_; |
public boolean hasNumber() { |
return ((bitField0_ & 0x00000002) == 0x00000002); |
} |
public int getNumber() { |
return number_; |
} |
// optional .google.protobuf.FieldDescriptorProto.Label label = 4; |
public static final int LABEL_FIELD_NUMBER = 4; |
private com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label label_; |
public boolean hasLabel() { |
return ((bitField0_ & 0x00000004) == 0x00000004); |
} |
public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label getLabel() { |
return label_; |
} |
// optional .google.protobuf.FieldDescriptorProto.Type type = 5; |
public static final int TYPE_FIELD_NUMBER = 5; |
private com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type type_; |
public boolean hasType() { |
return ((bitField0_ & 0x00000008) == 0x00000008); |
} |
public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type getType() { |
return type_; |
} |
// optional string type_name = 6; |
public static final int TYPE_NAME_FIELD_NUMBER = 6; |
private java.lang.Object typeName_; |
public boolean hasTypeName() { |
return ((bitField0_ & 0x00000010) == 0x00000010); |
} |
public String getTypeName() { |
java.lang.Object ref = typeName_; |
if (ref instanceof String) { |
return (String) ref; |
} else { |
com.google.protobuf.ByteString bs = |
(com.google.protobuf.ByteString) ref; |
String s = bs.toStringUtf8(); |
if (com.google.protobuf.Internal.isValidUtf8(bs)) { |
typeName_ = s; |
} |
return s; |
} |
} |
private com.google.protobuf.ByteString getTypeNameBytes() { |
java.lang.Object ref = typeName_; |
if (ref instanceof String) { |
com.google.protobuf.ByteString b = |
com.google.protobuf.ByteString.copyFromUtf8((String) ref); |
typeName_ = b; |
return b; |
} else { |
return (com.google.protobuf.ByteString) ref; |
} |
} |
// optional string extendee = 2; |
public static final int EXTENDEE_FIELD_NUMBER = 2; |
private java.lang.Object extendee_; |
public boolean hasExtendee() { |
return ((bitField0_ & 0x00000020) == 0x00000020); |
} |
public String getExtendee() { |
java.lang.Object ref = extendee_; |
if (ref instanceof String) { |
return (String) ref; |
} else { |
com.google.protobuf.ByteString bs = |
(com.google.protobuf.ByteString) ref; |
String s = bs.toStringUtf8(); |
if (com.google.protobuf.Internal.isValidUtf8(bs)) { |
extendee_ = s; |
} |
return s; |
} |
} |
private com.google.protobuf.ByteString getExtendeeBytes() { |
java.lang.Object ref = extendee_; |
if (ref instanceof String) { |
com.google.protobuf.ByteString b = |
com.google.protobuf.ByteString.copyFromUtf8((String) ref); |
extendee_ = b; |
return b; |
} else { |
return (com.google.protobuf.ByteString) ref; |
} |
} |
// optional string default_value = 7; |
public static final int DEFAULT_VALUE_FIELD_NUMBER = 7; |
private java.lang.Object defaultValue_; |
public boolean hasDefaultValue() { |
return ((bitField0_ & 0x00000040) == 0x00000040); |
} |
public String getDefaultValue() { |
java.lang.Object ref = defaultValue_; |
if (ref instanceof String) { |
return (String) ref; |
} else { |
com.google.protobuf.ByteString bs = |
(com.google.protobuf.ByteString) ref; |
String s = bs.toStringUtf8(); |
if (com.google.protobuf.Internal.isValidUtf8(bs)) { |
defaultValue_ = s; |
} |
return s; |
} |
} |
private com.google.protobuf.ByteString getDefaultValueBytes() { |
java.lang.Object ref = defaultValue_; |
if (ref instanceof String) { |
com.google.protobuf.ByteString b = |
com.google.protobuf.ByteString.copyFromUtf8((String) ref); |
defaultValue_ = b; |
return b; |
} else { |
return (com.google.protobuf.ByteString) ref; |
} |
} |
// optional .google.protobuf.FieldOptions options = 8; |
public static final int OPTIONS_FIELD_NUMBER = 8; |
private com.google.protobuf.DescriptorProtos.FieldOptions options_; |
public boolean hasOptions() { |
return ((bitField0_ & 0x00000080) == 0x00000080); |
} |
public com.google.protobuf.DescriptorProtos.FieldOptions getOptions() { |
return options_; |
} |
public com.google.protobuf.DescriptorProtos.FieldOptionsOrBuilder getOptionsOrBuilder() { |
return options_; |
} |
private void initFields() { |
name_ = ""; |
number_ = 0; |
label_ = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label.LABEL_OPTIONAL; |
type_ = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type.TYPE_DOUBLE; |
typeName_ = ""; |
extendee_ = ""; |
defaultValue_ = ""; |
options_ = com.google.protobuf.DescriptorProtos.FieldOptions.getDefaultInstance(); |
} |
private byte memoizedIsInitialized = -1; |
public final boolean isInitialized() { |
byte isInitialized = memoizedIsInitialized; |
if (isInitialized != -1) return isInitialized == 1; |
if (hasOptions()) { |
if (!getOptions().isInitialized()) { |
memoizedIsInitialized = 0; |
return false; |
} |
} |
memoizedIsInitialized = 1; |
return true; |
} |
public void writeTo(com.google.protobuf.CodedOutputStream output) |
throws java.io.IOException { |
getSerializedSize(); |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
output.writeBytes(1, getNameBytes()); |
} |
if (((bitField0_ & 0x00000020) == 0x00000020)) { |
output.writeBytes(2, getExtendeeBytes()); |
} |
if (((bitField0_ & 0x00000002) == 0x00000002)) { |
output.writeInt32(3, number_); |
} |
if (((bitField0_ & 0x00000004) == 0x00000004)) { |
output.writeEnum(4, label_.getNumber()); |
} |
if (((bitField0_ & 0x00000008) == 0x00000008)) { |
output.writeEnum(5, type_.getNumber()); |
} |
if (((bitField0_ & 0x00000010) == 0x00000010)) { |
output.writeBytes(6, getTypeNameBytes()); |
} |
if (((bitField0_ & 0x00000040) == 0x00000040)) { |
output.writeBytes(7, getDefaultValueBytes()); |
} |
if (((bitField0_ & 0x00000080) == 0x00000080)) { |
output.writeMessage(8, options_); |
} |
getUnknownFields().writeTo(output); |
} |
private int memoizedSerializedSize = -1; |
public int getSerializedSize() { |
int size = memoizedSerializedSize; |
if (size != -1) return size; |
size = 0; |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
size += com.google.protobuf.CodedOutputStream |
.computeBytesSize(1, getNameBytes()); |
} |
if (((bitField0_ & 0x00000020) == 0x00000020)) { |
size += com.google.protobuf.CodedOutputStream |
.computeBytesSize(2, getExtendeeBytes()); |
} |
if (((bitField0_ & 0x00000002) == 0x00000002)) { |
size += com.google.protobuf.CodedOutputStream |
.computeInt32Size(3, number_); |
} |
if (((bitField0_ & 0x00000004) == 0x00000004)) { |
size += com.google.protobuf.CodedOutputStream |
.computeEnumSize(4, label_.getNumber()); |
} |
if (((bitField0_ & 0x00000008) == 0x00000008)) { |
size += com.google.protobuf.CodedOutputStream |
.computeEnumSize(5, type_.getNumber()); |
} |
if (((bitField0_ & 0x00000010) == 0x00000010)) { |
size += com.google.protobuf.CodedOutputStream |
.computeBytesSize(6, getTypeNameBytes()); |
} |
if (((bitField0_ & 0x00000040) == 0x00000040)) { |
size += com.google.protobuf.CodedOutputStream |
.computeBytesSize(7, getDefaultValueBytes()); |
} |
if (((bitField0_ & 0x00000080) == 0x00000080)) { |
size += com.google.protobuf.CodedOutputStream |
.computeMessageSize(8, options_); |
} |
size += getUnknownFields().getSerializedSize(); |
memoizedSerializedSize = size; |
return size; |
} |
private static final long serialVersionUID = 0L; |
@java.lang.Override |
protected java.lang.Object writeReplace() |
throws java.io.ObjectStreamException { |
return super.writeReplace(); |
} |
public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseFrom( |
com.google.protobuf.ByteString data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseFrom( |
com.google.protobuf.ByteString data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseFrom(byte[] data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseFrom( |
byte[] data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseFrom(java.io.InputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseDelimitedFrom(java.io.InputStream input) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseDelimitedFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input, extensionRegistry)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseFrom( |
com.google.protobuf.CodedInputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.FieldDescriptorProto parseFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static Builder newBuilder() { return Builder.create(); } |
public Builder newBuilderForType() { return newBuilder(); } |
public static Builder newBuilder(com.google.protobuf.DescriptorProtos.FieldDescriptorProto prototype) { |
return newBuilder().mergeFrom(prototype); |
} |
public Builder toBuilder() { return newBuilder(this); } |
@java.lang.Override |
protected Builder newBuilderForType( |
com.google.protobuf.GeneratedMessage.BuilderParent parent) { |
Builder builder = new Builder(parent); |
return builder; |
} |
public static final class Builder extends |
com.google.protobuf.GeneratedMessage.Builder<Builder> |
implements com.google.protobuf.DescriptorProtos.FieldDescriptorProtoOrBuilder { |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FieldDescriptorProto_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FieldDescriptorProto_fieldAccessorTable; |
} |
// Construct using com.google.protobuf.DescriptorProtos.FieldDescriptorProto.newBuilder() |
private Builder() { |
maybeForceBuilderInitialization(); |
} |
private Builder(BuilderParent parent) { |
super(parent); |
maybeForceBuilderInitialization(); |
} |
private void maybeForceBuilderInitialization() { |
if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { |
getOptionsFieldBuilder(); |
} |
} |
private static Builder create() { |
return new Builder(); |
} |
public Builder clear() { |
super.clear(); |
name_ = ""; |
bitField0_ = (bitField0_ & ~0x00000001); |
number_ = 0; |
bitField0_ = (bitField0_ & ~0x00000002); |
label_ = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label.LABEL_OPTIONAL; |
bitField0_ = (bitField0_ & ~0x00000004); |
type_ = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type.TYPE_DOUBLE; |
bitField0_ = (bitField0_ & ~0x00000008); |
typeName_ = ""; |
bitField0_ = (bitField0_ & ~0x00000010); |
extendee_ = ""; |
bitField0_ = (bitField0_ & ~0x00000020); |
defaultValue_ = ""; |
bitField0_ = (bitField0_ & ~0x00000040); |
if (optionsBuilder_ == null) { |
options_ = com.google.protobuf.DescriptorProtos.FieldOptions.getDefaultInstance(); |
} else { |
optionsBuilder_.clear(); |
} |
bitField0_ = (bitField0_ & ~0x00000080); |
return this; |
} |
public Builder clone() { |
return create().mergeFrom(buildPartial()); |
} |
public com.google.protobuf.Descriptors.Descriptor |
getDescriptorForType() { |
return com.google.protobuf.DescriptorProtos.FieldDescriptorProto.getDescriptor(); |
} |
public com.google.protobuf.DescriptorProtos.FieldDescriptorProto getDefaultInstanceForType() { |
return com.google.protobuf.DescriptorProtos.FieldDescriptorProto.getDefaultInstance(); |
} |
public com.google.protobuf.DescriptorProtos.FieldDescriptorProto build() { |
com.google.protobuf.DescriptorProtos.FieldDescriptorProto result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException(result); |
} |
return result; |
} |
private com.google.protobuf.DescriptorProtos.FieldDescriptorProto buildParsed() |
throws com.google.protobuf.InvalidProtocolBufferException { |
com.google.protobuf.DescriptorProtos.FieldDescriptorProto result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException( |
result).asInvalidProtocolBufferException(); |
} |
return result; |
} |
public com.google.protobuf.DescriptorProtos.FieldDescriptorProto buildPartial() { |
com.google.protobuf.DescriptorProtos.FieldDescriptorProto result = new com.google.protobuf.DescriptorProtos.FieldDescriptorProto(this); |
int from_bitField0_ = bitField0_; |
int to_bitField0_ = 0; |
if (((from_bitField0_ & 0x00000001) == 0x00000001)) { |
to_bitField0_ |= 0x00000001; |
} |
result.name_ = name_; |
if (((from_bitField0_ & 0x00000002) == 0x00000002)) { |
to_bitField0_ |= 0x00000002; |
} |
result.number_ = number_; |
if (((from_bitField0_ & 0x00000004) == 0x00000004)) { |
to_bitField0_ |= 0x00000004; |
} |
result.label_ = label_; |
if (((from_bitField0_ & 0x00000008) == 0x00000008)) { |
to_bitField0_ |= 0x00000008; |
} |
result.type_ = type_; |
if (((from_bitField0_ & 0x00000010) == 0x00000010)) { |
to_bitField0_ |= 0x00000010; |
} |
result.typeName_ = typeName_; |
if (((from_bitField0_ & 0x00000020) == 0x00000020)) { |
to_bitField0_ |= 0x00000020; |
} |
result.extendee_ = extendee_; |
if (((from_bitField0_ & 0x00000040) == 0x00000040)) { |
to_bitField0_ |= 0x00000040; |
} |
result.defaultValue_ = defaultValue_; |
if (((from_bitField0_ & 0x00000080) == 0x00000080)) { |
to_bitField0_ |= 0x00000080; |
} |
if (optionsBuilder_ == null) { |
result.options_ = options_; |
} else { |
result.options_ = optionsBuilder_.build(); |
} |
result.bitField0_ = to_bitField0_; |
onBuilt(); |
return result; |
} |
public Builder mergeFrom(com.google.protobuf.Message other) { |
if (other instanceof com.google.protobuf.DescriptorProtos.FieldDescriptorProto) { |
return mergeFrom((com.google.protobuf.DescriptorProtos.FieldDescriptorProto)other); |
} else { |
super.mergeFrom(other); |
return this; |
} |
} |
public Builder mergeFrom(com.google.protobuf.DescriptorProtos.FieldDescriptorProto other) { |
if (other == com.google.protobuf.DescriptorProtos.FieldDescriptorProto.getDefaultInstance()) return this; |
if (other.hasName()) { |
setName(other.getName()); |
} |
if (other.hasNumber()) { |
setNumber(other.getNumber()); |
} |
if (other.hasLabel()) { |
setLabel(other.getLabel()); |
} |
if (other.hasType()) { |
setType(other.getType()); |
} |
if (other.hasTypeName()) { |
setTypeName(other.getTypeName()); |
} |
if (other.hasExtendee()) { |
setExtendee(other.getExtendee()); |
} |
if (other.hasDefaultValue()) { |
setDefaultValue(other.getDefaultValue()); |
} |
if (other.hasOptions()) { |
mergeOptions(other.getOptions()); |
} |
this.mergeUnknownFields(other.getUnknownFields()); |
return this; |
} |
public final boolean isInitialized() { |
if (hasOptions()) { |
if (!getOptions().isInitialized()) { |
return false; |
} |
} |
return true; |
} |
public Builder mergeFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
com.google.protobuf.UnknownFieldSet.Builder unknownFields = |
com.google.protobuf.UnknownFieldSet.newBuilder( |
this.getUnknownFields()); |
while (true) { |
int tag = input.readTag(); |
switch (tag) { |
case 0: |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
default: { |
if (!parseUnknownField(input, unknownFields, |
extensionRegistry, tag)) { |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
} |
break; |
} |
case 10: { |
bitField0_ |= 0x00000001; |
name_ = input.readBytes(); |
break; |
} |
case 18: { |
bitField0_ |= 0x00000020; |
extendee_ = input.readBytes(); |
break; |
} |
case 24: { |
bitField0_ |= 0x00000002; |
number_ = input.readInt32(); |
break; |
} |
case 32: { |
int rawValue = input.readEnum(); |
com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label value = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label.valueOf(rawValue); |
if (value == null) { |
unknownFields.mergeVarintField(4, rawValue); |
} else { |
bitField0_ |= 0x00000004; |
label_ = value; |
} |
break; |
} |
case 40: { |
int rawValue = input.readEnum(); |
com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type value = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type.valueOf(rawValue); |
if (value == null) { |
unknownFields.mergeVarintField(5, rawValue); |
} else { |
bitField0_ |= 0x00000008; |
type_ = value; |
} |
break; |
} |
case 50: { |
bitField0_ |= 0x00000010; |
typeName_ = input.readBytes(); |
break; |
} |
case 58: { |
bitField0_ |= 0x00000040; |
defaultValue_ = input.readBytes(); |
break; |
} |
case 66: { |
com.google.protobuf.DescriptorProtos.FieldOptions.Builder subBuilder = com.google.protobuf.DescriptorProtos.FieldOptions.newBuilder(); |
if (hasOptions()) { |
subBuilder.mergeFrom(getOptions()); |
} |
input.readMessage(subBuilder, extensionRegistry); |
setOptions(subBuilder.buildPartial()); |
break; |
} |
} |
} |
} |
private int bitField0_; |
// optional string name = 1; |
private java.lang.Object name_ = ""; |
public boolean hasName() { |
return ((bitField0_ & 0x00000001) == 0x00000001); |
} |
public String getName() { |
java.lang.Object ref = name_; |
if (!(ref instanceof String)) { |
String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); |
name_ = s; |
return s; |
} else { |
return (String) ref; |
} |
} |
public Builder setName(String value) { |
if (value == null) { |
throw new NullPointerException(); |
} |
bitField0_ |= 0x00000001; |
name_ = value; |
onChanged(); |
return this; |
} |
public Builder clearName() { |
bitField0_ = (bitField0_ & ~0x00000001); |
name_ = getDefaultInstance().getName(); |
onChanged(); |
return this; |
} |
void setName(com.google.protobuf.ByteString value) { |
bitField0_ |= 0x00000001; |
name_ = value; |
onChanged(); |
} |
// optional int32 number = 3; |
private int number_ ; |
public boolean hasNumber() { |
return ((bitField0_ & 0x00000002) == 0x00000002); |
} |
public int getNumber() { |
return number_; |
} |
public Builder setNumber(int value) { |
bitField0_ |= 0x00000002; |
number_ = value; |
onChanged(); |
return this; |
} |
public Builder clearNumber() { |
bitField0_ = (bitField0_ & ~0x00000002); |
number_ = 0; |
onChanged(); |
return this; |
} |
// optional .google.protobuf.FieldDescriptorProto.Label label = 4; |
private com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label label_ = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label.LABEL_OPTIONAL; |
public boolean hasLabel() { |
return ((bitField0_ & 0x00000004) == 0x00000004); |
} |
public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label getLabel() { |
return label_; |
} |
public Builder setLabel(com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label value) { |
if (value == null) { |
throw new NullPointerException(); |
} |
bitField0_ |= 0x00000004; |
label_ = value; |
onChanged(); |
return this; |
} |
public Builder clearLabel() { |
bitField0_ = (bitField0_ & ~0x00000004); |
label_ = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Label.LABEL_OPTIONAL; |
onChanged(); |
return this; |
} |
// optional .google.protobuf.FieldDescriptorProto.Type type = 5; |
private com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type type_ = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type.TYPE_DOUBLE; |
public boolean hasType() { |
return ((bitField0_ & 0x00000008) == 0x00000008); |
} |
public com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type getType() { |
return type_; |
} |
public Builder setType(com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type value) { |
if (value == null) { |
throw new NullPointerException(); |
} |
bitField0_ |= 0x00000008; |
type_ = value; |
onChanged(); |
return this; |
} |
public Builder clearType() { |
bitField0_ = (bitField0_ & ~0x00000008); |
type_ = com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Type.TYPE_DOUBLE; |
onChanged(); |
return this; |
} |
// optional string type_name = 6; |
private java.lang.Object typeName_ = ""; |
public boolean hasTypeName() { |
return ((bitField0_ & 0x00000010) == 0x00000010); |
} |
public String getTypeName() { |
java.lang.Object ref = typeName_; |
if (!(ref instanceof String)) { |
String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); |
typeName_ = s; |
return s; |
} else { |
return (String) ref; |
} |
} |
public Builder setTypeName(String value) { |
if (value == null) { |
throw new NullPointerException(); |
} |
bitField0_ |= 0x00000010; |
typeName_ = value; |
onChanged(); |
return this; |
} |
public Builder clearTypeName() { |
bitField0_ = (bitField0_ & ~0x00000010); |
typeName_ = getDefaultInstance().getTypeName(); |
onChanged(); |
return this; |
} |
void setTypeName(com.google.protobuf.ByteString value) { |
bitField0_ |= 0x00000010; |
typeName_ = value; |
onChanged(); |
} |
// optional string extendee = 2; |
private java.lang.Object extendee_ = ""; |
public boolean hasExtendee() { |
return ((bitField0_ & 0x00000020) == 0x00000020); |
} |
public String getExtendee() { |
java.lang.Object ref = extendee_; |
if (!(ref instanceof String)) { |
String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); |
extendee_ = s; |
return s; |
} else { |
return (String) ref; |
} |
} |
public Builder setExtendee(String value) { |
if (value == null) { |
throw new NullPointerException(); |
} |
bitField0_ |= 0x00000020; |
extendee_ = value; |
onChanged(); |
return this; |
} |
public Builder clearExtendee() { |
bitField0_ = (bitField0_ & ~0x00000020); |
extendee_ = getDefaultInstance().getExtendee(); |
onChanged(); |
return this; |
} |
void setExtendee(com.google.protobuf.ByteString value) { |
bitField0_ |= 0x00000020; |
extendee_ = value; |
onChanged(); |
} |
// optional string default_value = 7; |
private java.lang.Object defaultValue_ = ""; |
public boolean hasDefaultValue() { |
return ((bitField0_ & 0x00000040) == 0x00000040); |
} |
public String getDefaultValue() { |
java.lang.Object ref = defaultValue_; |
if (!(ref instanceof String)) { |
String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); |
defaultValue_ = s; |
return s; |
} else { |
return (String) ref; |
} |
} |
public Builder setDefaultValue(String value) { |
if (value == null) { |
throw new NullPointerException(); |
} |
bitField0_ |= 0x00000040; |
defaultValue_ = value; |
onChanged(); |
return this; |
} |
public Builder clearDefaultValue() { |
bitField0_ = (bitField0_ & ~0x00000040); |
defaultValue_ = getDefaultInstance().getDefaultValue(); |
onChanged(); |
return this; |
} |
void setDefaultValue(com.google.protobuf.ByteString value) { |
bitField0_ |= 0x00000040; |
defaultValue_ = value; |
onChanged(); |
} |
// optional .google.protobuf.FieldOptions options = 8; |
private com.google.protobuf.DescriptorProtos.FieldOptions options_ = com.google.protobuf.DescriptorProtos.FieldOptions.getDefaultInstance(); |
private com.google.protobuf.SingleFieldBuilder< |
com.google.protobuf.DescriptorProtos.FieldOptions, com.google.protobuf.DescriptorProtos.FieldOptions.Builder, com.google.protobuf.DescriptorProtos.FieldOptionsOrBuilder> optionsBuilder_; |
public boolean hasOptions() { |
return ((bitField0_ & 0x00000080) == 0x00000080); |
} |
public com.google.protobuf.DescriptorProtos.FieldOptions getOptions() { |
if (optionsBuilder_ == null) { |
return options_; |
} else { |
return optionsBuilder_.getMessage(); |
} |
} |
public Builder setOptions(com.google.protobuf.DescriptorProtos.FieldOptions value) { |
if (optionsBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
options_ = value; |
onChanged(); |
} else { |
optionsBuilder_.setMessage(value); |
} |
bitField0_ |= 0x00000080; |
return this; |
} |
public Builder setOptions( |
com.google.protobuf.DescriptorProtos.FieldOptions.Builder builderForValue) { |
if (optionsBuilder_ == null) { |
options_ = builderForValue.build(); |
onChanged(); |
} else { |
optionsBuilder_.setMessage(builderForValue.build()); |
} |
bitField0_ |= 0x00000080; |
return this; |
} |
public Builder mergeOptions(com.google.protobuf.DescriptorProtos.FieldOptions value) { |
if (optionsBuilder_ == null) { |
if (((bitField0_ & 0x00000080) == 0x00000080) && |
options_ != com.google.protobuf.DescriptorProtos.FieldOptions.getDefaultInstance()) { |
options_ = |
com.google.protobuf.DescriptorProtos.FieldOptions.newBuilder(options_).mergeFrom(value).buildPartial(); |
} else { |
options_ = value; |
} |
onChanged(); |
} else { |
optionsBuilder_.mergeFrom(value); |
} |
bitField0_ |= 0x00000080; |
return this; |
} |
public Builder clearOptions() { |
if (optionsBuilder_ == null) { |
options_ = com.google.protobuf.DescriptorProtos.FieldOptions.getDefaultInstance(); |
onChanged(); |
} else { |
optionsBuilder_.clear(); |
} |
bitField0_ = (bitField0_ & ~0x00000080); |
return this; |
} |
public com.google.protobuf.DescriptorProtos.FieldOptions.Builder getOptionsBuilder() { |
bitField0_ |= 0x00000080; |
onChanged(); |
return getOptionsFieldBuilder().getBuilder(); |
} |
public com.google.protobuf.DescriptorProtos.FieldOptionsOrBuilder getOptionsOrBuilder() { |
if (optionsBuilder_ != null) { |
return optionsBuilder_.getMessageOrBuilder(); |
} else { |
return options_; |
} |
} |
private com.google.protobuf.SingleFieldBuilder< |
com.google.protobuf.DescriptorProtos.FieldOptions, com.google.protobuf.DescriptorProtos.FieldOptions.Builder, com.google.protobuf.DescriptorProtos.FieldOptionsOrBuilder> |
getOptionsFieldBuilder() { |
if (optionsBuilder_ == null) { |
optionsBuilder_ = new com.google.protobuf.SingleFieldBuilder< |
com.google.protobuf.DescriptorProtos.FieldOptions, com.google.protobuf.DescriptorProtos.FieldOptions.Builder, com.google.protobuf.DescriptorProtos.FieldOptionsOrBuilder>( |
options_, |
getParentForChildren(), |
isClean()); |
options_ = null; |
} |
return optionsBuilder_; |
} |
// @@protoc_insertion_point(builder_scope:google.protobuf.FieldDescriptorProto) |
} |
static { |
defaultInstance = new FieldDescriptorProto(true); |
defaultInstance.initFields(); |
} |
// @@protoc_insertion_point(class_scope:google.protobuf.FieldDescriptorProto) |
} |
public interface EnumDescriptorProtoOrBuilder |
extends com.google.protobuf.MessageOrBuilder { |
// optional string name = 1; |
boolean hasName(); |
String getName(); |
// repeated .google.protobuf.EnumValueDescriptorProto value = 2; |
java.util.List<com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto> |
getValueList(); |
com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto getValue(int index); |
int getValueCount(); |
java.util.List<? extends com.google.protobuf.DescriptorProtos.EnumValueDescriptorProtoOrBuilder> |
getValueOrBuilderList(); |
com.google.protobuf.DescriptorProtos.EnumValueDescriptorProtoOrBuilder getValueOrBuilder( |
int index); |
// optional .google.protobuf.EnumOptions options = 3; |
boolean hasOptions(); |
com.google.protobuf.DescriptorProtos.EnumOptions getOptions(); |
com.google.protobuf.DescriptorProtos.EnumOptionsOrBuilder getOptionsOrBuilder(); |
} |
public static final class EnumDescriptorProto extends |
com.google.protobuf.GeneratedMessage |
implements EnumDescriptorProtoOrBuilder { |
// Use EnumDescriptorProto.newBuilder() to construct. |
private EnumDescriptorProto(Builder builder) { |
super(builder); |
} |
private EnumDescriptorProto(boolean noInit) {} |
private static final EnumDescriptorProto defaultInstance; |
public static EnumDescriptorProto getDefaultInstance() { |
return defaultInstance; |
} |
public EnumDescriptorProto getDefaultInstanceForType() { |
return defaultInstance; |
} |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumDescriptorProto_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumDescriptorProto_fieldAccessorTable; |
} |
private int bitField0_; |
// optional string name = 1; |
public static final int NAME_FIELD_NUMBER = 1; |
private java.lang.Object name_; |
public boolean hasName() { |
return ((bitField0_ & 0x00000001) == 0x00000001); |
} |
public String getName() { |
java.lang.Object ref = name_; |
if (ref instanceof String) { |
return (String) ref; |
} else { |
com.google.protobuf.ByteString bs = |
(com.google.protobuf.ByteString) ref; |
String s = bs.toStringUtf8(); |
if (com.google.protobuf.Internal.isValidUtf8(bs)) { |
name_ = s; |
} |
return s; |
} |
} |
private com.google.protobuf.ByteString getNameBytes() { |
java.lang.Object ref = name_; |
if (ref instanceof String) { |
com.google.protobuf.ByteString b = |
com.google.protobuf.ByteString.copyFromUtf8((String) ref); |
name_ = b; |
return b; |
} else { |
return (com.google.protobuf.ByteString) ref; |
} |
} |
// repeated .google.protobuf.EnumValueDescriptorProto value = 2; |
public static final int VALUE_FIELD_NUMBER = 2; |
private java.util.List<com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto> value_; |
public java.util.List<com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto> getValueList() { |
return value_; |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.EnumValueDescriptorProtoOrBuilder> |
getValueOrBuilderList() { |
return value_; |
} |
public int getValueCount() { |
return value_.size(); |
} |
public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto getValue(int index) { |
return value_.get(index); |
} |
public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProtoOrBuilder getValueOrBuilder( |
int index) { |
return value_.get(index); |
} |
// optional .google.protobuf.EnumOptions options = 3; |
public static final int OPTIONS_FIELD_NUMBER = 3; |
private com.google.protobuf.DescriptorProtos.EnumOptions options_; |
public boolean hasOptions() { |
return ((bitField0_ & 0x00000002) == 0x00000002); |
} |
public com.google.protobuf.DescriptorProtos.EnumOptions getOptions() { |
return options_; |
} |
public com.google.protobuf.DescriptorProtos.EnumOptionsOrBuilder getOptionsOrBuilder() { |
return options_; |
} |
private void initFields() { |
name_ = ""; |
value_ = java.util.Collections.emptyList(); |
options_ = com.google.protobuf.DescriptorProtos.EnumOptions.getDefaultInstance(); |
} |
private byte memoizedIsInitialized = -1; |
public final boolean isInitialized() { |
byte isInitialized = memoizedIsInitialized; |
if (isInitialized != -1) return isInitialized == 1; |
for (int i = 0; i < getValueCount(); i++) { |
if (!getValue(i).isInitialized()) { |
memoizedIsInitialized = 0; |
return false; |
} |
} |
if (hasOptions()) { |
if (!getOptions().isInitialized()) { |
memoizedIsInitialized = 0; |
return false; |
} |
} |
memoizedIsInitialized = 1; |
return true; |
} |
public void writeTo(com.google.protobuf.CodedOutputStream output) |
throws java.io.IOException { |
getSerializedSize(); |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
output.writeBytes(1, getNameBytes()); |
} |
for (int i = 0; i < value_.size(); i++) { |
output.writeMessage(2, value_.get(i)); |
} |
if (((bitField0_ & 0x00000002) == 0x00000002)) { |
output.writeMessage(3, options_); |
} |
getUnknownFields().writeTo(output); |
} |
private int memoizedSerializedSize = -1; |
public int getSerializedSize() { |
int size = memoizedSerializedSize; |
if (size != -1) return size; |
size = 0; |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
size += com.google.protobuf.CodedOutputStream |
.computeBytesSize(1, getNameBytes()); |
} |
for (int i = 0; i < value_.size(); i++) { |
size += com.google.protobuf.CodedOutputStream |
.computeMessageSize(2, value_.get(i)); |
} |
if (((bitField0_ & 0x00000002) == 0x00000002)) { |
size += com.google.protobuf.CodedOutputStream |
.computeMessageSize(3, options_); |
} |
size += getUnknownFields().getSerializedSize(); |
memoizedSerializedSize = size; |
return size; |
} |
private static final long serialVersionUID = 0L; |
@java.lang.Override |
protected java.lang.Object writeReplace() |
throws java.io.ObjectStreamException { |
return super.writeReplace(); |
} |
public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseFrom( |
com.google.protobuf.ByteString data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseFrom( |
com.google.protobuf.ByteString data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseFrom(byte[] data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseFrom( |
byte[] data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseFrom(java.io.InputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseDelimitedFrom(java.io.InputStream input) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseDelimitedFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input, extensionRegistry)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseFrom( |
com.google.protobuf.CodedInputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.EnumDescriptorProto parseFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static Builder newBuilder() { return Builder.create(); } |
public Builder newBuilderForType() { return newBuilder(); } |
public static Builder newBuilder(com.google.protobuf.DescriptorProtos.EnumDescriptorProto prototype) { |
return newBuilder().mergeFrom(prototype); |
} |
public Builder toBuilder() { return newBuilder(this); } |
@java.lang.Override |
protected Builder newBuilderForType( |
com.google.protobuf.GeneratedMessage.BuilderParent parent) { |
Builder builder = new Builder(parent); |
return builder; |
} |
public static final class Builder extends |
com.google.protobuf.GeneratedMessage.Builder<Builder> |
implements com.google.protobuf.DescriptorProtos.EnumDescriptorProtoOrBuilder { |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumDescriptorProto_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumDescriptorProto_fieldAccessorTable; |
} |
// Construct using com.google.protobuf.DescriptorProtos.EnumDescriptorProto.newBuilder() |
private Builder() { |
maybeForceBuilderInitialization(); |
} |
private Builder(BuilderParent parent) { |
super(parent); |
maybeForceBuilderInitialization(); |
} |
private void maybeForceBuilderInitialization() { |
if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { |
getValueFieldBuilder(); |
getOptionsFieldBuilder(); |
} |
} |
private static Builder create() { |
return new Builder(); |
} |
public Builder clear() { |
super.clear(); |
name_ = ""; |
bitField0_ = (bitField0_ & ~0x00000001); |
if (valueBuilder_ == null) { |
value_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000002); |
} else { |
valueBuilder_.clear(); |
} |
if (optionsBuilder_ == null) { |
options_ = com.google.protobuf.DescriptorProtos.EnumOptions.getDefaultInstance(); |
} else { |
optionsBuilder_.clear(); |
} |
bitField0_ = (bitField0_ & ~0x00000004); |
return this; |
} |
public Builder clone() { |
return create().mergeFrom(buildPartial()); |
} |
public com.google.protobuf.Descriptors.Descriptor |
getDescriptorForType() { |
return com.google.protobuf.DescriptorProtos.EnumDescriptorProto.getDescriptor(); |
} |
public com.google.protobuf.DescriptorProtos.EnumDescriptorProto getDefaultInstanceForType() { |
return com.google.protobuf.DescriptorProtos.EnumDescriptorProto.getDefaultInstance(); |
} |
public com.google.protobuf.DescriptorProtos.EnumDescriptorProto build() { |
com.google.protobuf.DescriptorProtos.EnumDescriptorProto result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException(result); |
} |
return result; |
} |
private com.google.protobuf.DescriptorProtos.EnumDescriptorProto buildParsed() |
throws com.google.protobuf.InvalidProtocolBufferException { |
com.google.protobuf.DescriptorProtos.EnumDescriptorProto result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException( |
result).asInvalidProtocolBufferException(); |
} |
return result; |
} |
public com.google.protobuf.DescriptorProtos.EnumDescriptorProto buildPartial() { |
com.google.protobuf.DescriptorProtos.EnumDescriptorProto result = new com.google.protobuf.DescriptorProtos.EnumDescriptorProto(this); |
int from_bitField0_ = bitField0_; |
int to_bitField0_ = 0; |
if (((from_bitField0_ & 0x00000001) == 0x00000001)) { |
to_bitField0_ |= 0x00000001; |
} |
result.name_ = name_; |
if (valueBuilder_ == null) { |
if (((bitField0_ & 0x00000002) == 0x00000002)) { |
value_ = java.util.Collections.unmodifiableList(value_); |
bitField0_ = (bitField0_ & ~0x00000002); |
} |
result.value_ = value_; |
} else { |
result.value_ = valueBuilder_.build(); |
} |
if (((from_bitField0_ & 0x00000004) == 0x00000004)) { |
to_bitField0_ |= 0x00000002; |
} |
if (optionsBuilder_ == null) { |
result.options_ = options_; |
} else { |
result.options_ = optionsBuilder_.build(); |
} |
result.bitField0_ = to_bitField0_; |
onBuilt(); |
return result; |
} |
public Builder mergeFrom(com.google.protobuf.Message other) { |
if (other instanceof com.google.protobuf.DescriptorProtos.EnumDescriptorProto) { |
return mergeFrom((com.google.protobuf.DescriptorProtos.EnumDescriptorProto)other); |
} else { |
super.mergeFrom(other); |
return this; |
} |
} |
public Builder mergeFrom(com.google.protobuf.DescriptorProtos.EnumDescriptorProto other) { |
if (other == com.google.protobuf.DescriptorProtos.EnumDescriptorProto.getDefaultInstance()) return this; |
if (other.hasName()) { |
setName(other.getName()); |
} |
if (valueBuilder_ == null) { |
if (!other.value_.isEmpty()) { |
if (value_.isEmpty()) { |
value_ = other.value_; |
bitField0_ = (bitField0_ & ~0x00000002); |
} else { |
ensureValueIsMutable(); |
value_.addAll(other.value_); |
} |
onChanged(); |
} |
} else { |
if (!other.value_.isEmpty()) { |
if (valueBuilder_.isEmpty()) { |
valueBuilder_.dispose(); |
valueBuilder_ = null; |
value_ = other.value_; |
bitField0_ = (bitField0_ & ~0x00000002); |
valueBuilder_ = |
com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? |
getValueFieldBuilder() : null; |
} else { |
valueBuilder_.addAllMessages(other.value_); |
} |
} |
} |
if (other.hasOptions()) { |
mergeOptions(other.getOptions()); |
} |
this.mergeUnknownFields(other.getUnknownFields()); |
return this; |
} |
public final boolean isInitialized() { |
for (int i = 0; i < getValueCount(); i++) { |
if (!getValue(i).isInitialized()) { |
return false; |
} |
} |
if (hasOptions()) { |
if (!getOptions().isInitialized()) { |
return false; |
} |
} |
return true; |
} |
public Builder mergeFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
com.google.protobuf.UnknownFieldSet.Builder unknownFields = |
com.google.protobuf.UnknownFieldSet.newBuilder( |
this.getUnknownFields()); |
while (true) { |
int tag = input.readTag(); |
switch (tag) { |
case 0: |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
default: { |
if (!parseUnknownField(input, unknownFields, |
extensionRegistry, tag)) { |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
} |
break; |
} |
case 10: { |
bitField0_ |= 0x00000001; |
name_ = input.readBytes(); |
break; |
} |
case 18: { |
com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.Builder subBuilder = com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.newBuilder(); |
input.readMessage(subBuilder, extensionRegistry); |
addValue(subBuilder.buildPartial()); |
break; |
} |
case 26: { |
com.google.protobuf.DescriptorProtos.EnumOptions.Builder subBuilder = com.google.protobuf.DescriptorProtos.EnumOptions.newBuilder(); |
if (hasOptions()) { |
subBuilder.mergeFrom(getOptions()); |
} |
input.readMessage(subBuilder, extensionRegistry); |
setOptions(subBuilder.buildPartial()); |
break; |
} |
} |
} |
} |
private int bitField0_; |
// optional string name = 1; |
private java.lang.Object name_ = ""; |
public boolean hasName() { |
return ((bitField0_ & 0x00000001) == 0x00000001); |
} |
public String getName() { |
java.lang.Object ref = name_; |
if (!(ref instanceof String)) { |
String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); |
name_ = s; |
return s; |
} else { |
return (String) ref; |
} |
} |
public Builder setName(String value) { |
if (value == null) { |
throw new NullPointerException(); |
} |
bitField0_ |= 0x00000001; |
name_ = value; |
onChanged(); |
return this; |
} |
public Builder clearName() { |
bitField0_ = (bitField0_ & ~0x00000001); |
name_ = getDefaultInstance().getName(); |
onChanged(); |
return this; |
} |
void setName(com.google.protobuf.ByteString value) { |
bitField0_ |= 0x00000001; |
name_ = value; |
onChanged(); |
} |
// repeated .google.protobuf.EnumValueDescriptorProto value = 2; |
private java.util.List<com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto> value_ = |
java.util.Collections.emptyList(); |
private void ensureValueIsMutable() { |
if (!((bitField0_ & 0x00000002) == 0x00000002)) { |
value_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto>(value_); |
bitField0_ |= 0x00000002; |
} |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto, com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.EnumValueDescriptorProtoOrBuilder> valueBuilder_; |
public java.util.List<com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto> getValueList() { |
if (valueBuilder_ == null) { |
return java.util.Collections.unmodifiableList(value_); |
} else { |
return valueBuilder_.getMessageList(); |
} |
} |
public int getValueCount() { |
if (valueBuilder_ == null) { |
return value_.size(); |
} else { |
return valueBuilder_.getCount(); |
} |
} |
public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto getValue(int index) { |
if (valueBuilder_ == null) { |
return value_.get(index); |
} else { |
return valueBuilder_.getMessage(index); |
} |
} |
public Builder setValue( |
int index, com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto value) { |
if (valueBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureValueIsMutable(); |
value_.set(index, value); |
onChanged(); |
} else { |
valueBuilder_.setMessage(index, value); |
} |
return this; |
} |
public Builder setValue( |
int index, com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.Builder builderForValue) { |
if (valueBuilder_ == null) { |
ensureValueIsMutable(); |
value_.set(index, builderForValue.build()); |
onChanged(); |
} else { |
valueBuilder_.setMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addValue(com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto value) { |
if (valueBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureValueIsMutable(); |
value_.add(value); |
onChanged(); |
} else { |
valueBuilder_.addMessage(value); |
} |
return this; |
} |
public Builder addValue( |
int index, com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto value) { |
if (valueBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureValueIsMutable(); |
value_.add(index, value); |
onChanged(); |
} else { |
valueBuilder_.addMessage(index, value); |
} |
return this; |
} |
public Builder addValue( |
com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.Builder builderForValue) { |
if (valueBuilder_ == null) { |
ensureValueIsMutable(); |
value_.add(builderForValue.build()); |
onChanged(); |
} else { |
valueBuilder_.addMessage(builderForValue.build()); |
} |
return this; |
} |
public Builder addValue( |
int index, com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.Builder builderForValue) { |
if (valueBuilder_ == null) { |
ensureValueIsMutable(); |
value_.add(index, builderForValue.build()); |
onChanged(); |
} else { |
valueBuilder_.addMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addAllValue( |
java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto> values) { |
if (valueBuilder_ == null) { |
ensureValueIsMutable(); |
super.addAll(values, value_); |
onChanged(); |
} else { |
valueBuilder_.addAllMessages(values); |
} |
return this; |
} |
public Builder clearValue() { |
if (valueBuilder_ == null) { |
value_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000002); |
onChanged(); |
} else { |
valueBuilder_.clear(); |
} |
return this; |
} |
public Builder removeValue(int index) { |
if (valueBuilder_ == null) { |
ensureValueIsMutable(); |
value_.remove(index); |
onChanged(); |
} else { |
valueBuilder_.remove(index); |
} |
return this; |
} |
public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.Builder getValueBuilder( |
int index) { |
return getValueFieldBuilder().getBuilder(index); |
} |
public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProtoOrBuilder getValueOrBuilder( |
int index) { |
if (valueBuilder_ == null) { |
return value_.get(index); } else { |
return valueBuilder_.getMessageOrBuilder(index); |
} |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.EnumValueDescriptorProtoOrBuilder> |
getValueOrBuilderList() { |
if (valueBuilder_ != null) { |
return valueBuilder_.getMessageOrBuilderList(); |
} else { |
return java.util.Collections.unmodifiableList(value_); |
} |
} |
public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.Builder addValueBuilder() { |
return getValueFieldBuilder().addBuilder( |
com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.getDefaultInstance()); |
} |
public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.Builder addValueBuilder( |
int index) { |
return getValueFieldBuilder().addBuilder( |
index, com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.getDefaultInstance()); |
} |
public java.util.List<com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.Builder> |
getValueBuilderList() { |
return getValueFieldBuilder().getBuilderList(); |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto, com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.EnumValueDescriptorProtoOrBuilder> |
getValueFieldBuilder() { |
if (valueBuilder_ == null) { |
valueBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto, com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.EnumValueDescriptorProtoOrBuilder>( |
value_, |
((bitField0_ & 0x00000002) == 0x00000002), |
getParentForChildren(), |
isClean()); |
value_ = null; |
} |
return valueBuilder_; |
} |
// optional .google.protobuf.EnumOptions options = 3; |
private com.google.protobuf.DescriptorProtos.EnumOptions options_ = com.google.protobuf.DescriptorProtos.EnumOptions.getDefaultInstance(); |
private com.google.protobuf.SingleFieldBuilder< |
com.google.protobuf.DescriptorProtos.EnumOptions, com.google.protobuf.DescriptorProtos.EnumOptions.Builder, com.google.protobuf.DescriptorProtos.EnumOptionsOrBuilder> optionsBuilder_; |
public boolean hasOptions() { |
return ((bitField0_ & 0x00000004) == 0x00000004); |
} |
public com.google.protobuf.DescriptorProtos.EnumOptions getOptions() { |
if (optionsBuilder_ == null) { |
return options_; |
} else { |
return optionsBuilder_.getMessage(); |
} |
} |
public Builder setOptions(com.google.protobuf.DescriptorProtos.EnumOptions value) { |
if (optionsBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
options_ = value; |
onChanged(); |
} else { |
optionsBuilder_.setMessage(value); |
} |
bitField0_ |= 0x00000004; |
return this; |
} |
public Builder setOptions( |
com.google.protobuf.DescriptorProtos.EnumOptions.Builder builderForValue) { |
if (optionsBuilder_ == null) { |
options_ = builderForValue.build(); |
onChanged(); |
} else { |
optionsBuilder_.setMessage(builderForValue.build()); |
} |
bitField0_ |= 0x00000004; |
return this; |
} |
public Builder mergeOptions(com.google.protobuf.DescriptorProtos.EnumOptions value) { |
if (optionsBuilder_ == null) { |
if (((bitField0_ & 0x00000004) == 0x00000004) && |
options_ != com.google.protobuf.DescriptorProtos.EnumOptions.getDefaultInstance()) { |
options_ = |
com.google.protobuf.DescriptorProtos.EnumOptions.newBuilder(options_).mergeFrom(value).buildPartial(); |
} else { |
options_ = value; |
} |
onChanged(); |
} else { |
optionsBuilder_.mergeFrom(value); |
} |
bitField0_ |= 0x00000004; |
return this; |
} |
public Builder clearOptions() { |
if (optionsBuilder_ == null) { |
options_ = com.google.protobuf.DescriptorProtos.EnumOptions.getDefaultInstance(); |
onChanged(); |
} else { |
optionsBuilder_.clear(); |
} |
bitField0_ = (bitField0_ & ~0x00000004); |
return this; |
} |
public com.google.protobuf.DescriptorProtos.EnumOptions.Builder getOptionsBuilder() { |
bitField0_ |= 0x00000004; |
onChanged(); |
return getOptionsFieldBuilder().getBuilder(); |
} |
public com.google.protobuf.DescriptorProtos.EnumOptionsOrBuilder getOptionsOrBuilder() { |
if (optionsBuilder_ != null) { |
return optionsBuilder_.getMessageOrBuilder(); |
} else { |
return options_; |
} |
} |
private com.google.protobuf.SingleFieldBuilder< |
com.google.protobuf.DescriptorProtos.EnumOptions, com.google.protobuf.DescriptorProtos.EnumOptions.Builder, com.google.protobuf.DescriptorProtos.EnumOptionsOrBuilder> |
getOptionsFieldBuilder() { |
if (optionsBuilder_ == null) { |
optionsBuilder_ = new com.google.protobuf.SingleFieldBuilder< |
com.google.protobuf.DescriptorProtos.EnumOptions, com.google.protobuf.DescriptorProtos.EnumOptions.Builder, com.google.protobuf.DescriptorProtos.EnumOptionsOrBuilder>( |
options_, |
getParentForChildren(), |
isClean()); |
options_ = null; |
} |
return optionsBuilder_; |
} |
// @@protoc_insertion_point(builder_scope:google.protobuf.EnumDescriptorProto) |
} |
static { |
defaultInstance = new EnumDescriptorProto(true); |
defaultInstance.initFields(); |
} |
// @@protoc_insertion_point(class_scope:google.protobuf.EnumDescriptorProto) |
} |
public interface EnumValueDescriptorProtoOrBuilder |
extends com.google.protobuf.MessageOrBuilder { |
// optional string name = 1; |
boolean hasName(); |
String getName(); |
// optional int32 number = 2; |
boolean hasNumber(); |
int getNumber(); |
// optional .google.protobuf.EnumValueOptions options = 3; |
boolean hasOptions(); |
com.google.protobuf.DescriptorProtos.EnumValueOptions getOptions(); |
com.google.protobuf.DescriptorProtos.EnumValueOptionsOrBuilder getOptionsOrBuilder(); |
} |
public static final class EnumValueDescriptorProto extends |
com.google.protobuf.GeneratedMessage |
implements EnumValueDescriptorProtoOrBuilder { |
// Use EnumValueDescriptorProto.newBuilder() to construct. |
private EnumValueDescriptorProto(Builder builder) { |
super(builder); |
} |
private EnumValueDescriptorProto(boolean noInit) {} |
private static final EnumValueDescriptorProto defaultInstance; |
public static EnumValueDescriptorProto getDefaultInstance() { |
return defaultInstance; |
} |
public EnumValueDescriptorProto getDefaultInstanceForType() { |
return defaultInstance; |
} |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumValueDescriptorProto_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumValueDescriptorProto_fieldAccessorTable; |
} |
private int bitField0_; |
// optional string name = 1; |
public static final int NAME_FIELD_NUMBER = 1; |
private java.lang.Object name_; |
public boolean hasName() { |
return ((bitField0_ & 0x00000001) == 0x00000001); |
} |
public String getName() { |
java.lang.Object ref = name_; |
if (ref instanceof String) { |
return (String) ref; |
} else { |
com.google.protobuf.ByteString bs = |
(com.google.protobuf.ByteString) ref; |
String s = bs.toStringUtf8(); |
if (com.google.protobuf.Internal.isValidUtf8(bs)) { |
name_ = s; |
} |
return s; |
} |
} |
private com.google.protobuf.ByteString getNameBytes() { |
java.lang.Object ref = name_; |
if (ref instanceof String) { |
com.google.protobuf.ByteString b = |
com.google.protobuf.ByteString.copyFromUtf8((String) ref); |
name_ = b; |
return b; |
} else { |
return (com.google.protobuf.ByteString) ref; |
} |
} |
// optional int32 number = 2; |
public static final int NUMBER_FIELD_NUMBER = 2; |
private int number_; |
public boolean hasNumber() { |
return ((bitField0_ & 0x00000002) == 0x00000002); |
} |
public int getNumber() { |
return number_; |
} |
// optional .google.protobuf.EnumValueOptions options = 3; |
public static final int OPTIONS_FIELD_NUMBER = 3; |
private com.google.protobuf.DescriptorProtos.EnumValueOptions options_; |
public boolean hasOptions() { |
return ((bitField0_ & 0x00000004) == 0x00000004); |
} |
public com.google.protobuf.DescriptorProtos.EnumValueOptions getOptions() { |
return options_; |
} |
public com.google.protobuf.DescriptorProtos.EnumValueOptionsOrBuilder getOptionsOrBuilder() { |
return options_; |
} |
private void initFields() { |
name_ = ""; |
number_ = 0; |
options_ = com.google.protobuf.DescriptorProtos.EnumValueOptions.getDefaultInstance(); |
} |
private byte memoizedIsInitialized = -1; |
public final boolean isInitialized() { |
byte isInitialized = memoizedIsInitialized; |
if (isInitialized != -1) return isInitialized == 1; |
if (hasOptions()) { |
if (!getOptions().isInitialized()) { |
memoizedIsInitialized = 0; |
return false; |
} |
} |
memoizedIsInitialized = 1; |
return true; |
} |
public void writeTo(com.google.protobuf.CodedOutputStream output) |
throws java.io.IOException { |
getSerializedSize(); |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
output.writeBytes(1, getNameBytes()); |
} |
if (((bitField0_ & 0x00000002) == 0x00000002)) { |
output.writeInt32(2, number_); |
} |
if (((bitField0_ & 0x00000004) == 0x00000004)) { |
output.writeMessage(3, options_); |
} |
getUnknownFields().writeTo(output); |
} |
private int memoizedSerializedSize = -1; |
public int getSerializedSize() { |
int size = memoizedSerializedSize; |
if (size != -1) return size; |
size = 0; |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
size += com.google.protobuf.CodedOutputStream |
.computeBytesSize(1, getNameBytes()); |
} |
if (((bitField0_ & 0x00000002) == 0x00000002)) { |
size += com.google.protobuf.CodedOutputStream |
.computeInt32Size(2, number_); |
} |
if (((bitField0_ & 0x00000004) == 0x00000004)) { |
size += com.google.protobuf.CodedOutputStream |
.computeMessageSize(3, options_); |
} |
size += getUnknownFields().getSerializedSize(); |
memoizedSerializedSize = size; |
return size; |
} |
private static final long serialVersionUID = 0L; |
@java.lang.Override |
protected java.lang.Object writeReplace() |
throws java.io.ObjectStreamException { |
return super.writeReplace(); |
} |
public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseFrom( |
com.google.protobuf.ByteString data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseFrom( |
com.google.protobuf.ByteString data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseFrom(byte[] data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseFrom( |
byte[] data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseFrom(java.io.InputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseDelimitedFrom(java.io.InputStream input) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseDelimitedFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input, extensionRegistry)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseFrom( |
com.google.protobuf.CodedInputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto parseFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static Builder newBuilder() { return Builder.create(); } |
public Builder newBuilderForType() { return newBuilder(); } |
public static Builder newBuilder(com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto prototype) { |
return newBuilder().mergeFrom(prototype); |
} |
public Builder toBuilder() { return newBuilder(this); } |
@java.lang.Override |
protected Builder newBuilderForType( |
com.google.protobuf.GeneratedMessage.BuilderParent parent) { |
Builder builder = new Builder(parent); |
return builder; |
} |
public static final class Builder extends |
com.google.protobuf.GeneratedMessage.Builder<Builder> |
implements com.google.protobuf.DescriptorProtos.EnumValueDescriptorProtoOrBuilder { |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumValueDescriptorProto_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumValueDescriptorProto_fieldAccessorTable; |
} |
// Construct using com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.newBuilder() |
private Builder() { |
maybeForceBuilderInitialization(); |
} |
private Builder(BuilderParent parent) { |
super(parent); |
maybeForceBuilderInitialization(); |
} |
private void maybeForceBuilderInitialization() { |
if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { |
getOptionsFieldBuilder(); |
} |
} |
private static Builder create() { |
return new Builder(); |
} |
public Builder clear() { |
super.clear(); |
name_ = ""; |
bitField0_ = (bitField0_ & ~0x00000001); |
number_ = 0; |
bitField0_ = (bitField0_ & ~0x00000002); |
if (optionsBuilder_ == null) { |
options_ = com.google.protobuf.DescriptorProtos.EnumValueOptions.getDefaultInstance(); |
} else { |
optionsBuilder_.clear(); |
} |
bitField0_ = (bitField0_ & ~0x00000004); |
return this; |
} |
public Builder clone() { |
return create().mergeFrom(buildPartial()); |
} |
public com.google.protobuf.Descriptors.Descriptor |
getDescriptorForType() { |
return com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.getDescriptor(); |
} |
public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto getDefaultInstanceForType() { |
return com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.getDefaultInstance(); |
} |
public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto build() { |
com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException(result); |
} |
return result; |
} |
private com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto buildParsed() |
throws com.google.protobuf.InvalidProtocolBufferException { |
com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException( |
result).asInvalidProtocolBufferException(); |
} |
return result; |
} |
public com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto buildPartial() { |
com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto result = new com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto(this); |
int from_bitField0_ = bitField0_; |
int to_bitField0_ = 0; |
if (((from_bitField0_ & 0x00000001) == 0x00000001)) { |
to_bitField0_ |= 0x00000001; |
} |
result.name_ = name_; |
if (((from_bitField0_ & 0x00000002) == 0x00000002)) { |
to_bitField0_ |= 0x00000002; |
} |
result.number_ = number_; |
if (((from_bitField0_ & 0x00000004) == 0x00000004)) { |
to_bitField0_ |= 0x00000004; |
} |
if (optionsBuilder_ == null) { |
result.options_ = options_; |
} else { |
result.options_ = optionsBuilder_.build(); |
} |
result.bitField0_ = to_bitField0_; |
onBuilt(); |
return result; |
} |
public Builder mergeFrom(com.google.protobuf.Message other) { |
if (other instanceof com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto) { |
return mergeFrom((com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto)other); |
} else { |
super.mergeFrom(other); |
return this; |
} |
} |
public Builder mergeFrom(com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto other) { |
if (other == com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.getDefaultInstance()) return this; |
if (other.hasName()) { |
setName(other.getName()); |
} |
if (other.hasNumber()) { |
setNumber(other.getNumber()); |
} |
if (other.hasOptions()) { |
mergeOptions(other.getOptions()); |
} |
this.mergeUnknownFields(other.getUnknownFields()); |
return this; |
} |
public final boolean isInitialized() { |
if (hasOptions()) { |
if (!getOptions().isInitialized()) { |
return false; |
} |
} |
return true; |
} |
public Builder mergeFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
com.google.protobuf.UnknownFieldSet.Builder unknownFields = |
com.google.protobuf.UnknownFieldSet.newBuilder( |
this.getUnknownFields()); |
while (true) { |
int tag = input.readTag(); |
switch (tag) { |
case 0: |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
default: { |
if (!parseUnknownField(input, unknownFields, |
extensionRegistry, tag)) { |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
} |
break; |
} |
case 10: { |
bitField0_ |= 0x00000001; |
name_ = input.readBytes(); |
break; |
} |
case 16: { |
bitField0_ |= 0x00000002; |
number_ = input.readInt32(); |
break; |
} |
case 26: { |
com.google.protobuf.DescriptorProtos.EnumValueOptions.Builder subBuilder = com.google.protobuf.DescriptorProtos.EnumValueOptions.newBuilder(); |
if (hasOptions()) { |
subBuilder.mergeFrom(getOptions()); |
} |
input.readMessage(subBuilder, extensionRegistry); |
setOptions(subBuilder.buildPartial()); |
break; |
} |
} |
} |
} |
private int bitField0_; |
// optional string name = 1; |
private java.lang.Object name_ = ""; |
public boolean hasName() { |
return ((bitField0_ & 0x00000001) == 0x00000001); |
} |
public String getName() { |
java.lang.Object ref = name_; |
if (!(ref instanceof String)) { |
String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); |
name_ = s; |
return s; |
} else { |
return (String) ref; |
} |
} |
public Builder setName(String value) { |
if (value == null) { |
throw new NullPointerException(); |
} |
bitField0_ |= 0x00000001; |
name_ = value; |
onChanged(); |
return this; |
} |
public Builder clearName() { |
bitField0_ = (bitField0_ & ~0x00000001); |
name_ = getDefaultInstance().getName(); |
onChanged(); |
return this; |
} |
void setName(com.google.protobuf.ByteString value) { |
bitField0_ |= 0x00000001; |
name_ = value; |
onChanged(); |
} |
// optional int32 number = 2; |
private int number_ ; |
public boolean hasNumber() { |
return ((bitField0_ & 0x00000002) == 0x00000002); |
} |
public int getNumber() { |
return number_; |
} |
public Builder setNumber(int value) { |
bitField0_ |= 0x00000002; |
number_ = value; |
onChanged(); |
return this; |
} |
public Builder clearNumber() { |
bitField0_ = (bitField0_ & ~0x00000002); |
number_ = 0; |
onChanged(); |
return this; |
} |
// optional .google.protobuf.EnumValueOptions options = 3; |
private com.google.protobuf.DescriptorProtos.EnumValueOptions options_ = com.google.protobuf.DescriptorProtos.EnumValueOptions.getDefaultInstance(); |
private com.google.protobuf.SingleFieldBuilder< |
com.google.protobuf.DescriptorProtos.EnumValueOptions, com.google.protobuf.DescriptorProtos.EnumValueOptions.Builder, com.google.protobuf.DescriptorProtos.EnumValueOptionsOrBuilder> optionsBuilder_; |
public boolean hasOptions() { |
return ((bitField0_ & 0x00000004) == 0x00000004); |
} |
public com.google.protobuf.DescriptorProtos.EnumValueOptions getOptions() { |
if (optionsBuilder_ == null) { |
return options_; |
} else { |
return optionsBuilder_.getMessage(); |
} |
} |
public Builder setOptions(com.google.protobuf.DescriptorProtos.EnumValueOptions value) { |
if (optionsBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
options_ = value; |
onChanged(); |
} else { |
optionsBuilder_.setMessage(value); |
} |
bitField0_ |= 0x00000004; |
return this; |
} |
public Builder setOptions( |
com.google.protobuf.DescriptorProtos.EnumValueOptions.Builder builderForValue) { |
if (optionsBuilder_ == null) { |
options_ = builderForValue.build(); |
onChanged(); |
} else { |
optionsBuilder_.setMessage(builderForValue.build()); |
} |
bitField0_ |= 0x00000004; |
return this; |
} |
public Builder mergeOptions(com.google.protobuf.DescriptorProtos.EnumValueOptions value) { |
if (optionsBuilder_ == null) { |
if (((bitField0_ & 0x00000004) == 0x00000004) && |
options_ != com.google.protobuf.DescriptorProtos.EnumValueOptions.getDefaultInstance()) { |
options_ = |
com.google.protobuf.DescriptorProtos.EnumValueOptions.newBuilder(options_).mergeFrom(value).buildPartial(); |
} else { |
options_ = value; |
} |
onChanged(); |
} else { |
optionsBuilder_.mergeFrom(value); |
} |
bitField0_ |= 0x00000004; |
return this; |
} |
public Builder clearOptions() { |
if (optionsBuilder_ == null) { |
options_ = com.google.protobuf.DescriptorProtos.EnumValueOptions.getDefaultInstance(); |
onChanged(); |
} else { |
optionsBuilder_.clear(); |
} |
bitField0_ = (bitField0_ & ~0x00000004); |
return this; |
} |
public com.google.protobuf.DescriptorProtos.EnumValueOptions.Builder getOptionsBuilder() { |
bitField0_ |= 0x00000004; |
onChanged(); |
return getOptionsFieldBuilder().getBuilder(); |
} |
public com.google.protobuf.DescriptorProtos.EnumValueOptionsOrBuilder getOptionsOrBuilder() { |
if (optionsBuilder_ != null) { |
return optionsBuilder_.getMessageOrBuilder(); |
} else { |
return options_; |
} |
} |
private com.google.protobuf.SingleFieldBuilder< |
com.google.protobuf.DescriptorProtos.EnumValueOptions, com.google.protobuf.DescriptorProtos.EnumValueOptions.Builder, com.google.protobuf.DescriptorProtos.EnumValueOptionsOrBuilder> |
getOptionsFieldBuilder() { |
if (optionsBuilder_ == null) { |
optionsBuilder_ = new com.google.protobuf.SingleFieldBuilder< |
com.google.protobuf.DescriptorProtos.EnumValueOptions, com.google.protobuf.DescriptorProtos.EnumValueOptions.Builder, com.google.protobuf.DescriptorProtos.EnumValueOptionsOrBuilder>( |
options_, |
getParentForChildren(), |
isClean()); |
options_ = null; |
} |
return optionsBuilder_; |
} |
// @@protoc_insertion_point(builder_scope:google.protobuf.EnumValueDescriptorProto) |
} |
static { |
defaultInstance = new EnumValueDescriptorProto(true); |
defaultInstance.initFields(); |
} |
// @@protoc_insertion_point(class_scope:google.protobuf.EnumValueDescriptorProto) |
} |
public interface ServiceDescriptorProtoOrBuilder |
extends com.google.protobuf.MessageOrBuilder { |
// optional string name = 1; |
boolean hasName(); |
String getName(); |
// repeated .google.protobuf.MethodDescriptorProto method = 2; |
java.util.List<com.google.protobuf.DescriptorProtos.MethodDescriptorProto> |
getMethodList(); |
com.google.protobuf.DescriptorProtos.MethodDescriptorProto getMethod(int index); |
int getMethodCount(); |
java.util.List<? extends com.google.protobuf.DescriptorProtos.MethodDescriptorProtoOrBuilder> |
getMethodOrBuilderList(); |
com.google.protobuf.DescriptorProtos.MethodDescriptorProtoOrBuilder getMethodOrBuilder( |
int index); |
// optional .google.protobuf.ServiceOptions options = 3; |
boolean hasOptions(); |
com.google.protobuf.DescriptorProtos.ServiceOptions getOptions(); |
com.google.protobuf.DescriptorProtos.ServiceOptionsOrBuilder getOptionsOrBuilder(); |
} |
public static final class ServiceDescriptorProto extends |
com.google.protobuf.GeneratedMessage |
implements ServiceDescriptorProtoOrBuilder { |
// Use ServiceDescriptorProto.newBuilder() to construct. |
private ServiceDescriptorProto(Builder builder) { |
super(builder); |
} |
private ServiceDescriptorProto(boolean noInit) {} |
private static final ServiceDescriptorProto defaultInstance; |
public static ServiceDescriptorProto getDefaultInstance() { |
return defaultInstance; |
} |
public ServiceDescriptorProto getDefaultInstanceForType() { |
return defaultInstance; |
} |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ServiceDescriptorProto_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ServiceDescriptorProto_fieldAccessorTable; |
} |
private int bitField0_; |
// optional string name = 1; |
public static final int NAME_FIELD_NUMBER = 1; |
private java.lang.Object name_; |
public boolean hasName() { |
return ((bitField0_ & 0x00000001) == 0x00000001); |
} |
public String getName() { |
java.lang.Object ref = name_; |
if (ref instanceof String) { |
return (String) ref; |
} else { |
com.google.protobuf.ByteString bs = |
(com.google.protobuf.ByteString) ref; |
String s = bs.toStringUtf8(); |
if (com.google.protobuf.Internal.isValidUtf8(bs)) { |
name_ = s; |
} |
return s; |
} |
} |
private com.google.protobuf.ByteString getNameBytes() { |
java.lang.Object ref = name_; |
if (ref instanceof String) { |
com.google.protobuf.ByteString b = |
com.google.protobuf.ByteString.copyFromUtf8((String) ref); |
name_ = b; |
return b; |
} else { |
return (com.google.protobuf.ByteString) ref; |
} |
} |
// repeated .google.protobuf.MethodDescriptorProto method = 2; |
public static final int METHOD_FIELD_NUMBER = 2; |
private java.util.List<com.google.protobuf.DescriptorProtos.MethodDescriptorProto> method_; |
public java.util.List<com.google.protobuf.DescriptorProtos.MethodDescriptorProto> getMethodList() { |
return method_; |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.MethodDescriptorProtoOrBuilder> |
getMethodOrBuilderList() { |
return method_; |
} |
public int getMethodCount() { |
return method_.size(); |
} |
public com.google.protobuf.DescriptorProtos.MethodDescriptorProto getMethod(int index) { |
return method_.get(index); |
} |
public com.google.protobuf.DescriptorProtos.MethodDescriptorProtoOrBuilder getMethodOrBuilder( |
int index) { |
return method_.get(index); |
} |
// optional .google.protobuf.ServiceOptions options = 3; |
public static final int OPTIONS_FIELD_NUMBER = 3; |
private com.google.protobuf.DescriptorProtos.ServiceOptions options_; |
public boolean hasOptions() { |
return ((bitField0_ & 0x00000002) == 0x00000002); |
} |
public com.google.protobuf.DescriptorProtos.ServiceOptions getOptions() { |
return options_; |
} |
public com.google.protobuf.DescriptorProtos.ServiceOptionsOrBuilder getOptionsOrBuilder() { |
return options_; |
} |
private void initFields() { |
name_ = ""; |
method_ = java.util.Collections.emptyList(); |
options_ = com.google.protobuf.DescriptorProtos.ServiceOptions.getDefaultInstance(); |
} |
private byte memoizedIsInitialized = -1; |
public final boolean isInitialized() { |
byte isInitialized = memoizedIsInitialized; |
if (isInitialized != -1) return isInitialized == 1; |
for (int i = 0; i < getMethodCount(); i++) { |
if (!getMethod(i).isInitialized()) { |
memoizedIsInitialized = 0; |
return false; |
} |
} |
if (hasOptions()) { |
if (!getOptions().isInitialized()) { |
memoizedIsInitialized = 0; |
return false; |
} |
} |
memoizedIsInitialized = 1; |
return true; |
} |
public void writeTo(com.google.protobuf.CodedOutputStream output) |
throws java.io.IOException { |
getSerializedSize(); |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
output.writeBytes(1, getNameBytes()); |
} |
for (int i = 0; i < method_.size(); i++) { |
output.writeMessage(2, method_.get(i)); |
} |
if (((bitField0_ & 0x00000002) == 0x00000002)) { |
output.writeMessage(3, options_); |
} |
getUnknownFields().writeTo(output); |
} |
private int memoizedSerializedSize = -1; |
public int getSerializedSize() { |
int size = memoizedSerializedSize; |
if (size != -1) return size; |
size = 0; |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
size += com.google.protobuf.CodedOutputStream |
.computeBytesSize(1, getNameBytes()); |
} |
for (int i = 0; i < method_.size(); i++) { |
size += com.google.protobuf.CodedOutputStream |
.computeMessageSize(2, method_.get(i)); |
} |
if (((bitField0_ & 0x00000002) == 0x00000002)) { |
size += com.google.protobuf.CodedOutputStream |
.computeMessageSize(3, options_); |
} |
size += getUnknownFields().getSerializedSize(); |
memoizedSerializedSize = size; |
return size; |
} |
private static final long serialVersionUID = 0L; |
@java.lang.Override |
protected java.lang.Object writeReplace() |
throws java.io.ObjectStreamException { |
return super.writeReplace(); |
} |
public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseFrom( |
com.google.protobuf.ByteString data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseFrom( |
com.google.protobuf.ByteString data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseFrom(byte[] data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseFrom( |
byte[] data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseFrom(java.io.InputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseDelimitedFrom(java.io.InputStream input) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseDelimitedFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input, extensionRegistry)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseFrom( |
com.google.protobuf.CodedInputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.ServiceDescriptorProto parseFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static Builder newBuilder() { return Builder.create(); } |
public Builder newBuilderForType() { return newBuilder(); } |
public static Builder newBuilder(com.google.protobuf.DescriptorProtos.ServiceDescriptorProto prototype) { |
return newBuilder().mergeFrom(prototype); |
} |
public Builder toBuilder() { return newBuilder(this); } |
@java.lang.Override |
protected Builder newBuilderForType( |
com.google.protobuf.GeneratedMessage.BuilderParent parent) { |
Builder builder = new Builder(parent); |
return builder; |
} |
public static final class Builder extends |
com.google.protobuf.GeneratedMessage.Builder<Builder> |
implements com.google.protobuf.DescriptorProtos.ServiceDescriptorProtoOrBuilder { |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ServiceDescriptorProto_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ServiceDescriptorProto_fieldAccessorTable; |
} |
// Construct using com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.newBuilder() |
private Builder() { |
maybeForceBuilderInitialization(); |
} |
private Builder(BuilderParent parent) { |
super(parent); |
maybeForceBuilderInitialization(); |
} |
private void maybeForceBuilderInitialization() { |
if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { |
getMethodFieldBuilder(); |
getOptionsFieldBuilder(); |
} |
} |
private static Builder create() { |
return new Builder(); |
} |
public Builder clear() { |
super.clear(); |
name_ = ""; |
bitField0_ = (bitField0_ & ~0x00000001); |
if (methodBuilder_ == null) { |
method_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000002); |
} else { |
methodBuilder_.clear(); |
} |
if (optionsBuilder_ == null) { |
options_ = com.google.protobuf.DescriptorProtos.ServiceOptions.getDefaultInstance(); |
} else { |
optionsBuilder_.clear(); |
} |
bitField0_ = (bitField0_ & ~0x00000004); |
return this; |
} |
public Builder clone() { |
return create().mergeFrom(buildPartial()); |
} |
public com.google.protobuf.Descriptors.Descriptor |
getDescriptorForType() { |
return com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.getDescriptor(); |
} |
public com.google.protobuf.DescriptorProtos.ServiceDescriptorProto getDefaultInstanceForType() { |
return com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.getDefaultInstance(); |
} |
public com.google.protobuf.DescriptorProtos.ServiceDescriptorProto build() { |
com.google.protobuf.DescriptorProtos.ServiceDescriptorProto result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException(result); |
} |
return result; |
} |
private com.google.protobuf.DescriptorProtos.ServiceDescriptorProto buildParsed() |
throws com.google.protobuf.InvalidProtocolBufferException { |
com.google.protobuf.DescriptorProtos.ServiceDescriptorProto result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException( |
result).asInvalidProtocolBufferException(); |
} |
return result; |
} |
public com.google.protobuf.DescriptorProtos.ServiceDescriptorProto buildPartial() { |
com.google.protobuf.DescriptorProtos.ServiceDescriptorProto result = new com.google.protobuf.DescriptorProtos.ServiceDescriptorProto(this); |
int from_bitField0_ = bitField0_; |
int to_bitField0_ = 0; |
if (((from_bitField0_ & 0x00000001) == 0x00000001)) { |
to_bitField0_ |= 0x00000001; |
} |
result.name_ = name_; |
if (methodBuilder_ == null) { |
if (((bitField0_ & 0x00000002) == 0x00000002)) { |
method_ = java.util.Collections.unmodifiableList(method_); |
bitField0_ = (bitField0_ & ~0x00000002); |
} |
result.method_ = method_; |
} else { |
result.method_ = methodBuilder_.build(); |
} |
if (((from_bitField0_ & 0x00000004) == 0x00000004)) { |
to_bitField0_ |= 0x00000002; |
} |
if (optionsBuilder_ == null) { |
result.options_ = options_; |
} else { |
result.options_ = optionsBuilder_.build(); |
} |
result.bitField0_ = to_bitField0_; |
onBuilt(); |
return result; |
} |
public Builder mergeFrom(com.google.protobuf.Message other) { |
if (other instanceof com.google.protobuf.DescriptorProtos.ServiceDescriptorProto) { |
return mergeFrom((com.google.protobuf.DescriptorProtos.ServiceDescriptorProto)other); |
} else { |
super.mergeFrom(other); |
return this; |
} |
} |
public Builder mergeFrom(com.google.protobuf.DescriptorProtos.ServiceDescriptorProto other) { |
if (other == com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.getDefaultInstance()) return this; |
if (other.hasName()) { |
setName(other.getName()); |
} |
if (methodBuilder_ == null) { |
if (!other.method_.isEmpty()) { |
if (method_.isEmpty()) { |
method_ = other.method_; |
bitField0_ = (bitField0_ & ~0x00000002); |
} else { |
ensureMethodIsMutable(); |
method_.addAll(other.method_); |
} |
onChanged(); |
} |
} else { |
if (!other.method_.isEmpty()) { |
if (methodBuilder_.isEmpty()) { |
methodBuilder_.dispose(); |
methodBuilder_ = null; |
method_ = other.method_; |
bitField0_ = (bitField0_ & ~0x00000002); |
methodBuilder_ = |
com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? |
getMethodFieldBuilder() : null; |
} else { |
methodBuilder_.addAllMessages(other.method_); |
} |
} |
} |
if (other.hasOptions()) { |
mergeOptions(other.getOptions()); |
} |
this.mergeUnknownFields(other.getUnknownFields()); |
return this; |
} |
public final boolean isInitialized() { |
for (int i = 0; i < getMethodCount(); i++) { |
if (!getMethod(i).isInitialized()) { |
return false; |
} |
} |
if (hasOptions()) { |
if (!getOptions().isInitialized()) { |
return false; |
} |
} |
return true; |
} |
public Builder mergeFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
com.google.protobuf.UnknownFieldSet.Builder unknownFields = |
com.google.protobuf.UnknownFieldSet.newBuilder( |
this.getUnknownFields()); |
while (true) { |
int tag = input.readTag(); |
switch (tag) { |
case 0: |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
default: { |
if (!parseUnknownField(input, unknownFields, |
extensionRegistry, tag)) { |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
} |
break; |
} |
case 10: { |
bitField0_ |= 0x00000001; |
name_ = input.readBytes(); |
break; |
} |
case 18: { |
com.google.protobuf.DescriptorProtos.MethodDescriptorProto.Builder subBuilder = com.google.protobuf.DescriptorProtos.MethodDescriptorProto.newBuilder(); |
input.readMessage(subBuilder, extensionRegistry); |
addMethod(subBuilder.buildPartial()); |
break; |
} |
case 26: { |
com.google.protobuf.DescriptorProtos.ServiceOptions.Builder subBuilder = com.google.protobuf.DescriptorProtos.ServiceOptions.newBuilder(); |
if (hasOptions()) { |
subBuilder.mergeFrom(getOptions()); |
} |
input.readMessage(subBuilder, extensionRegistry); |
setOptions(subBuilder.buildPartial()); |
break; |
} |
} |
} |
} |
private int bitField0_; |
// optional string name = 1; |
private java.lang.Object name_ = ""; |
public boolean hasName() { |
return ((bitField0_ & 0x00000001) == 0x00000001); |
} |
public String getName() { |
java.lang.Object ref = name_; |
if (!(ref instanceof String)) { |
String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); |
name_ = s; |
return s; |
} else { |
return (String) ref; |
} |
} |
public Builder setName(String value) { |
if (value == null) { |
throw new NullPointerException(); |
} |
bitField0_ |= 0x00000001; |
name_ = value; |
onChanged(); |
return this; |
} |
public Builder clearName() { |
bitField0_ = (bitField0_ & ~0x00000001); |
name_ = getDefaultInstance().getName(); |
onChanged(); |
return this; |
} |
void setName(com.google.protobuf.ByteString value) { |
bitField0_ |= 0x00000001; |
name_ = value; |
onChanged(); |
} |
// repeated .google.protobuf.MethodDescriptorProto method = 2; |
private java.util.List<com.google.protobuf.DescriptorProtos.MethodDescriptorProto> method_ = |
java.util.Collections.emptyList(); |
private void ensureMethodIsMutable() { |
if (!((bitField0_ & 0x00000002) == 0x00000002)) { |
method_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.MethodDescriptorProto>(method_); |
bitField0_ |= 0x00000002; |
} |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.MethodDescriptorProto, com.google.protobuf.DescriptorProtos.MethodDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.MethodDescriptorProtoOrBuilder> methodBuilder_; |
public java.util.List<com.google.protobuf.DescriptorProtos.MethodDescriptorProto> getMethodList() { |
if (methodBuilder_ == null) { |
return java.util.Collections.unmodifiableList(method_); |
} else { |
return methodBuilder_.getMessageList(); |
} |
} |
public int getMethodCount() { |
if (methodBuilder_ == null) { |
return method_.size(); |
} else { |
return methodBuilder_.getCount(); |
} |
} |
public com.google.protobuf.DescriptorProtos.MethodDescriptorProto getMethod(int index) { |
if (methodBuilder_ == null) { |
return method_.get(index); |
} else { |
return methodBuilder_.getMessage(index); |
} |
} |
public Builder setMethod( |
int index, com.google.protobuf.DescriptorProtos.MethodDescriptorProto value) { |
if (methodBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureMethodIsMutable(); |
method_.set(index, value); |
onChanged(); |
} else { |
methodBuilder_.setMessage(index, value); |
} |
return this; |
} |
public Builder setMethod( |
int index, com.google.protobuf.DescriptorProtos.MethodDescriptorProto.Builder builderForValue) { |
if (methodBuilder_ == null) { |
ensureMethodIsMutable(); |
method_.set(index, builderForValue.build()); |
onChanged(); |
} else { |
methodBuilder_.setMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addMethod(com.google.protobuf.DescriptorProtos.MethodDescriptorProto value) { |
if (methodBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureMethodIsMutable(); |
method_.add(value); |
onChanged(); |
} else { |
methodBuilder_.addMessage(value); |
} |
return this; |
} |
public Builder addMethod( |
int index, com.google.protobuf.DescriptorProtos.MethodDescriptorProto value) { |
if (methodBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureMethodIsMutable(); |
method_.add(index, value); |
onChanged(); |
} else { |
methodBuilder_.addMessage(index, value); |
} |
return this; |
} |
public Builder addMethod( |
com.google.protobuf.DescriptorProtos.MethodDescriptorProto.Builder builderForValue) { |
if (methodBuilder_ == null) { |
ensureMethodIsMutable(); |
method_.add(builderForValue.build()); |
onChanged(); |
} else { |
methodBuilder_.addMessage(builderForValue.build()); |
} |
return this; |
} |
public Builder addMethod( |
int index, com.google.protobuf.DescriptorProtos.MethodDescriptorProto.Builder builderForValue) { |
if (methodBuilder_ == null) { |
ensureMethodIsMutable(); |
method_.add(index, builderForValue.build()); |
onChanged(); |
} else { |
methodBuilder_.addMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addAllMethod( |
java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.MethodDescriptorProto> values) { |
if (methodBuilder_ == null) { |
ensureMethodIsMutable(); |
super.addAll(values, method_); |
onChanged(); |
} else { |
methodBuilder_.addAllMessages(values); |
} |
return this; |
} |
public Builder clearMethod() { |
if (methodBuilder_ == null) { |
method_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000002); |
onChanged(); |
} else { |
methodBuilder_.clear(); |
} |
return this; |
} |
public Builder removeMethod(int index) { |
if (methodBuilder_ == null) { |
ensureMethodIsMutable(); |
method_.remove(index); |
onChanged(); |
} else { |
methodBuilder_.remove(index); |
} |
return this; |
} |
public com.google.protobuf.DescriptorProtos.MethodDescriptorProto.Builder getMethodBuilder( |
int index) { |
return getMethodFieldBuilder().getBuilder(index); |
} |
public com.google.protobuf.DescriptorProtos.MethodDescriptorProtoOrBuilder getMethodOrBuilder( |
int index) { |
if (methodBuilder_ == null) { |
return method_.get(index); } else { |
return methodBuilder_.getMessageOrBuilder(index); |
} |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.MethodDescriptorProtoOrBuilder> |
getMethodOrBuilderList() { |
if (methodBuilder_ != null) { |
return methodBuilder_.getMessageOrBuilderList(); |
} else { |
return java.util.Collections.unmodifiableList(method_); |
} |
} |
public com.google.protobuf.DescriptorProtos.MethodDescriptorProto.Builder addMethodBuilder() { |
return getMethodFieldBuilder().addBuilder( |
com.google.protobuf.DescriptorProtos.MethodDescriptorProto.getDefaultInstance()); |
} |
public com.google.protobuf.DescriptorProtos.MethodDescriptorProto.Builder addMethodBuilder( |
int index) { |
return getMethodFieldBuilder().addBuilder( |
index, com.google.protobuf.DescriptorProtos.MethodDescriptorProto.getDefaultInstance()); |
} |
public java.util.List<com.google.protobuf.DescriptorProtos.MethodDescriptorProto.Builder> |
getMethodBuilderList() { |
return getMethodFieldBuilder().getBuilderList(); |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.MethodDescriptorProto, com.google.protobuf.DescriptorProtos.MethodDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.MethodDescriptorProtoOrBuilder> |
getMethodFieldBuilder() { |
if (methodBuilder_ == null) { |
methodBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.MethodDescriptorProto, com.google.protobuf.DescriptorProtos.MethodDescriptorProto.Builder, com.google.protobuf.DescriptorProtos.MethodDescriptorProtoOrBuilder>( |
method_, |
((bitField0_ & 0x00000002) == 0x00000002), |
getParentForChildren(), |
isClean()); |
method_ = null; |
} |
return methodBuilder_; |
} |
// optional .google.protobuf.ServiceOptions options = 3; |
private com.google.protobuf.DescriptorProtos.ServiceOptions options_ = com.google.protobuf.DescriptorProtos.ServiceOptions.getDefaultInstance(); |
private com.google.protobuf.SingleFieldBuilder< |
com.google.protobuf.DescriptorProtos.ServiceOptions, com.google.protobuf.DescriptorProtos.ServiceOptions.Builder, com.google.protobuf.DescriptorProtos.ServiceOptionsOrBuilder> optionsBuilder_; |
public boolean hasOptions() { |
return ((bitField0_ & 0x00000004) == 0x00000004); |
} |
public com.google.protobuf.DescriptorProtos.ServiceOptions getOptions() { |
if (optionsBuilder_ == null) { |
return options_; |
} else { |
return optionsBuilder_.getMessage(); |
} |
} |
public Builder setOptions(com.google.protobuf.DescriptorProtos.ServiceOptions value) { |
if (optionsBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
options_ = value; |
onChanged(); |
} else { |
optionsBuilder_.setMessage(value); |
} |
bitField0_ |= 0x00000004; |
return this; |
} |
public Builder setOptions( |
com.google.protobuf.DescriptorProtos.ServiceOptions.Builder builderForValue) { |
if (optionsBuilder_ == null) { |
options_ = builderForValue.build(); |
onChanged(); |
} else { |
optionsBuilder_.setMessage(builderForValue.build()); |
} |
bitField0_ |= 0x00000004; |
return this; |
} |
public Builder mergeOptions(com.google.protobuf.DescriptorProtos.ServiceOptions value) { |
if (optionsBuilder_ == null) { |
if (((bitField0_ & 0x00000004) == 0x00000004) && |
options_ != com.google.protobuf.DescriptorProtos.ServiceOptions.getDefaultInstance()) { |
options_ = |
com.google.protobuf.DescriptorProtos.ServiceOptions.newBuilder(options_).mergeFrom(value).buildPartial(); |
} else { |
options_ = value; |
} |
onChanged(); |
} else { |
optionsBuilder_.mergeFrom(value); |
} |
bitField0_ |= 0x00000004; |
return this; |
} |
public Builder clearOptions() { |
if (optionsBuilder_ == null) { |
options_ = com.google.protobuf.DescriptorProtos.ServiceOptions.getDefaultInstance(); |
onChanged(); |
} else { |
optionsBuilder_.clear(); |
} |
bitField0_ = (bitField0_ & ~0x00000004); |
return this; |
} |
public com.google.protobuf.DescriptorProtos.ServiceOptions.Builder getOptionsBuilder() { |
bitField0_ |= 0x00000004; |
onChanged(); |
return getOptionsFieldBuilder().getBuilder(); |
} |
public com.google.protobuf.DescriptorProtos.ServiceOptionsOrBuilder getOptionsOrBuilder() { |
if (optionsBuilder_ != null) { |
return optionsBuilder_.getMessageOrBuilder(); |
} else { |
return options_; |
} |
} |
private com.google.protobuf.SingleFieldBuilder< |
com.google.protobuf.DescriptorProtos.ServiceOptions, com.google.protobuf.DescriptorProtos.ServiceOptions.Builder, com.google.protobuf.DescriptorProtos.ServiceOptionsOrBuilder> |
getOptionsFieldBuilder() { |
if (optionsBuilder_ == null) { |
optionsBuilder_ = new com.google.protobuf.SingleFieldBuilder< |
com.google.protobuf.DescriptorProtos.ServiceOptions, com.google.protobuf.DescriptorProtos.ServiceOptions.Builder, com.google.protobuf.DescriptorProtos.ServiceOptionsOrBuilder>( |
options_, |
getParentForChildren(), |
isClean()); |
options_ = null; |
} |
return optionsBuilder_; |
} |
// @@protoc_insertion_point(builder_scope:google.protobuf.ServiceDescriptorProto) |
} |
static { |
defaultInstance = new ServiceDescriptorProto(true); |
defaultInstance.initFields(); |
} |
// @@protoc_insertion_point(class_scope:google.protobuf.ServiceDescriptorProto) |
} |
public interface MethodDescriptorProtoOrBuilder |
extends com.google.protobuf.MessageOrBuilder { |
// optional string name = 1; |
boolean hasName(); |
String getName(); |
// optional string input_type = 2; |
boolean hasInputType(); |
String getInputType(); |
// optional string output_type = 3; |
boolean hasOutputType(); |
String getOutputType(); |
// optional .google.protobuf.MethodOptions options = 4; |
boolean hasOptions(); |
com.google.protobuf.DescriptorProtos.MethodOptions getOptions(); |
com.google.protobuf.DescriptorProtos.MethodOptionsOrBuilder getOptionsOrBuilder(); |
} |
public static final class MethodDescriptorProto extends |
com.google.protobuf.GeneratedMessage |
implements MethodDescriptorProtoOrBuilder { |
// Use MethodDescriptorProto.newBuilder() to construct. |
private MethodDescriptorProto(Builder builder) { |
super(builder); |
} |
private MethodDescriptorProto(boolean noInit) {} |
private static final MethodDescriptorProto defaultInstance; |
public static MethodDescriptorProto getDefaultInstance() { |
return defaultInstance; |
} |
public MethodDescriptorProto getDefaultInstanceForType() { |
return defaultInstance; |
} |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_MethodDescriptorProto_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_MethodDescriptorProto_fieldAccessorTable; |
} |
private int bitField0_; |
// optional string name = 1; |
public static final int NAME_FIELD_NUMBER = 1; |
private java.lang.Object name_; |
public boolean hasName() { |
return ((bitField0_ & 0x00000001) == 0x00000001); |
} |
public String getName() { |
java.lang.Object ref = name_; |
if (ref instanceof String) { |
return (String) ref; |
} else { |
com.google.protobuf.ByteString bs = |
(com.google.protobuf.ByteString) ref; |
String s = bs.toStringUtf8(); |
if (com.google.protobuf.Internal.isValidUtf8(bs)) { |
name_ = s; |
} |
return s; |
} |
} |
private com.google.protobuf.ByteString getNameBytes() { |
java.lang.Object ref = name_; |
if (ref instanceof String) { |
com.google.protobuf.ByteString b = |
com.google.protobuf.ByteString.copyFromUtf8((String) ref); |
name_ = b; |
return b; |
} else { |
return (com.google.protobuf.ByteString) ref; |
} |
} |
// optional string input_type = 2; |
public static final int INPUT_TYPE_FIELD_NUMBER = 2; |
private java.lang.Object inputType_; |
public boolean hasInputType() { |
return ((bitField0_ & 0x00000002) == 0x00000002); |
} |
public String getInputType() { |
java.lang.Object ref = inputType_; |
if (ref instanceof String) { |
return (String) ref; |
} else { |
com.google.protobuf.ByteString bs = |
(com.google.protobuf.ByteString) ref; |
String s = bs.toStringUtf8(); |
if (com.google.protobuf.Internal.isValidUtf8(bs)) { |
inputType_ = s; |
} |
return s; |
} |
} |
private com.google.protobuf.ByteString getInputTypeBytes() { |
java.lang.Object ref = inputType_; |
if (ref instanceof String) { |
com.google.protobuf.ByteString b = |
com.google.protobuf.ByteString.copyFromUtf8((String) ref); |
inputType_ = b; |
return b; |
} else { |
return (com.google.protobuf.ByteString) ref; |
} |
} |
// optional string output_type = 3; |
public static final int OUTPUT_TYPE_FIELD_NUMBER = 3; |
private java.lang.Object outputType_; |
public boolean hasOutputType() { |
return ((bitField0_ & 0x00000004) == 0x00000004); |
} |
public String getOutputType() { |
java.lang.Object ref = outputType_; |
if (ref instanceof String) { |
return (String) ref; |
} else { |
com.google.protobuf.ByteString bs = |
(com.google.protobuf.ByteString) ref; |
String s = bs.toStringUtf8(); |
if (com.google.protobuf.Internal.isValidUtf8(bs)) { |
outputType_ = s; |
} |
return s; |
} |
} |
private com.google.protobuf.ByteString getOutputTypeBytes() { |
java.lang.Object ref = outputType_; |
if (ref instanceof String) { |
com.google.protobuf.ByteString b = |
com.google.protobuf.ByteString.copyFromUtf8((String) ref); |
outputType_ = b; |
return b; |
} else { |
return (com.google.protobuf.ByteString) ref; |
} |
} |
// optional .google.protobuf.MethodOptions options = 4; |
public static final int OPTIONS_FIELD_NUMBER = 4; |
private com.google.protobuf.DescriptorProtos.MethodOptions options_; |
public boolean hasOptions() { |
return ((bitField0_ & 0x00000008) == 0x00000008); |
} |
public com.google.protobuf.DescriptorProtos.MethodOptions getOptions() { |
return options_; |
} |
public com.google.protobuf.DescriptorProtos.MethodOptionsOrBuilder getOptionsOrBuilder() { |
return options_; |
} |
private void initFields() { |
name_ = ""; |
inputType_ = ""; |
outputType_ = ""; |
options_ = com.google.protobuf.DescriptorProtos.MethodOptions.getDefaultInstance(); |
} |
private byte memoizedIsInitialized = -1; |
public final boolean isInitialized() { |
byte isInitialized = memoizedIsInitialized; |
if (isInitialized != -1) return isInitialized == 1; |
if (hasOptions()) { |
if (!getOptions().isInitialized()) { |
memoizedIsInitialized = 0; |
return false; |
} |
} |
memoizedIsInitialized = 1; |
return true; |
} |
public void writeTo(com.google.protobuf.CodedOutputStream output) |
throws java.io.IOException { |
getSerializedSize(); |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
output.writeBytes(1, getNameBytes()); |
} |
if (((bitField0_ & 0x00000002) == 0x00000002)) { |
output.writeBytes(2, getInputTypeBytes()); |
} |
if (((bitField0_ & 0x00000004) == 0x00000004)) { |
output.writeBytes(3, getOutputTypeBytes()); |
} |
if (((bitField0_ & 0x00000008) == 0x00000008)) { |
output.writeMessage(4, options_); |
} |
getUnknownFields().writeTo(output); |
} |
private int memoizedSerializedSize = -1; |
public int getSerializedSize() { |
int size = memoizedSerializedSize; |
if (size != -1) return size; |
size = 0; |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
size += com.google.protobuf.CodedOutputStream |
.computeBytesSize(1, getNameBytes()); |
} |
if (((bitField0_ & 0x00000002) == 0x00000002)) { |
size += com.google.protobuf.CodedOutputStream |
.computeBytesSize(2, getInputTypeBytes()); |
} |
if (((bitField0_ & 0x00000004) == 0x00000004)) { |
size += com.google.protobuf.CodedOutputStream |
.computeBytesSize(3, getOutputTypeBytes()); |
} |
if (((bitField0_ & 0x00000008) == 0x00000008)) { |
size += com.google.protobuf.CodedOutputStream |
.computeMessageSize(4, options_); |
} |
size += getUnknownFields().getSerializedSize(); |
memoizedSerializedSize = size; |
return size; |
} |
private static final long serialVersionUID = 0L; |
@java.lang.Override |
protected java.lang.Object writeReplace() |
throws java.io.ObjectStreamException { |
return super.writeReplace(); |
} |
public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseFrom( |
com.google.protobuf.ByteString data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseFrom( |
com.google.protobuf.ByteString data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseFrom(byte[] data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseFrom( |
byte[] data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseFrom(java.io.InputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseDelimitedFrom(java.io.InputStream input) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseDelimitedFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input, extensionRegistry)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseFrom( |
com.google.protobuf.CodedInputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.MethodDescriptorProto parseFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static Builder newBuilder() { return Builder.create(); } |
public Builder newBuilderForType() { return newBuilder(); } |
public static Builder newBuilder(com.google.protobuf.DescriptorProtos.MethodDescriptorProto prototype) { |
return newBuilder().mergeFrom(prototype); |
} |
public Builder toBuilder() { return newBuilder(this); } |
@java.lang.Override |
protected Builder newBuilderForType( |
com.google.protobuf.GeneratedMessage.BuilderParent parent) { |
Builder builder = new Builder(parent); |
return builder; |
} |
public static final class Builder extends |
com.google.protobuf.GeneratedMessage.Builder<Builder> |
implements com.google.protobuf.DescriptorProtos.MethodDescriptorProtoOrBuilder { |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_MethodDescriptorProto_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_MethodDescriptorProto_fieldAccessorTable; |
} |
// Construct using com.google.protobuf.DescriptorProtos.MethodDescriptorProto.newBuilder() |
private Builder() { |
maybeForceBuilderInitialization(); |
} |
private Builder(BuilderParent parent) { |
super(parent); |
maybeForceBuilderInitialization(); |
} |
private void maybeForceBuilderInitialization() { |
if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { |
getOptionsFieldBuilder(); |
} |
} |
private static Builder create() { |
return new Builder(); |
} |
public Builder clear() { |
super.clear(); |
name_ = ""; |
bitField0_ = (bitField0_ & ~0x00000001); |
inputType_ = ""; |
bitField0_ = (bitField0_ & ~0x00000002); |
outputType_ = ""; |
bitField0_ = (bitField0_ & ~0x00000004); |
if (optionsBuilder_ == null) { |
options_ = com.google.protobuf.DescriptorProtos.MethodOptions.getDefaultInstance(); |
} else { |
optionsBuilder_.clear(); |
} |
bitField0_ = (bitField0_ & ~0x00000008); |
return this; |
} |
public Builder clone() { |
return create().mergeFrom(buildPartial()); |
} |
public com.google.protobuf.Descriptors.Descriptor |
getDescriptorForType() { |
return com.google.protobuf.DescriptorProtos.MethodDescriptorProto.getDescriptor(); |
} |
public com.google.protobuf.DescriptorProtos.MethodDescriptorProto getDefaultInstanceForType() { |
return com.google.protobuf.DescriptorProtos.MethodDescriptorProto.getDefaultInstance(); |
} |
public com.google.protobuf.DescriptorProtos.MethodDescriptorProto build() { |
com.google.protobuf.DescriptorProtos.MethodDescriptorProto result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException(result); |
} |
return result; |
} |
private com.google.protobuf.DescriptorProtos.MethodDescriptorProto buildParsed() |
throws com.google.protobuf.InvalidProtocolBufferException { |
com.google.protobuf.DescriptorProtos.MethodDescriptorProto result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException( |
result).asInvalidProtocolBufferException(); |
} |
return result; |
} |
public com.google.protobuf.DescriptorProtos.MethodDescriptorProto buildPartial() { |
com.google.protobuf.DescriptorProtos.MethodDescriptorProto result = new com.google.protobuf.DescriptorProtos.MethodDescriptorProto(this); |
int from_bitField0_ = bitField0_; |
int to_bitField0_ = 0; |
if (((from_bitField0_ & 0x00000001) == 0x00000001)) { |
to_bitField0_ |= 0x00000001; |
} |
result.name_ = name_; |
if (((from_bitField0_ & 0x00000002) == 0x00000002)) { |
to_bitField0_ |= 0x00000002; |
} |
result.inputType_ = inputType_; |
if (((from_bitField0_ & 0x00000004) == 0x00000004)) { |
to_bitField0_ |= 0x00000004; |
} |
result.outputType_ = outputType_; |
if (((from_bitField0_ & 0x00000008) == 0x00000008)) { |
to_bitField0_ |= 0x00000008; |
} |
if (optionsBuilder_ == null) { |
result.options_ = options_; |
} else { |
result.options_ = optionsBuilder_.build(); |
} |
result.bitField0_ = to_bitField0_; |
onBuilt(); |
return result; |
} |
public Builder mergeFrom(com.google.protobuf.Message other) { |
if (other instanceof com.google.protobuf.DescriptorProtos.MethodDescriptorProto) { |
return mergeFrom((com.google.protobuf.DescriptorProtos.MethodDescriptorProto)other); |
} else { |
super.mergeFrom(other); |
return this; |
} |
} |
public Builder mergeFrom(com.google.protobuf.DescriptorProtos.MethodDescriptorProto other) { |
if (other == com.google.protobuf.DescriptorProtos.MethodDescriptorProto.getDefaultInstance()) return this; |
if (other.hasName()) { |
setName(other.getName()); |
} |
if (other.hasInputType()) { |
setInputType(other.getInputType()); |
} |
if (other.hasOutputType()) { |
setOutputType(other.getOutputType()); |
} |
if (other.hasOptions()) { |
mergeOptions(other.getOptions()); |
} |
this.mergeUnknownFields(other.getUnknownFields()); |
return this; |
} |
public final boolean isInitialized() { |
if (hasOptions()) { |
if (!getOptions().isInitialized()) { |
return false; |
} |
} |
return true; |
} |
public Builder mergeFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
com.google.protobuf.UnknownFieldSet.Builder unknownFields = |
com.google.protobuf.UnknownFieldSet.newBuilder( |
this.getUnknownFields()); |
while (true) { |
int tag = input.readTag(); |
switch (tag) { |
case 0: |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
default: { |
if (!parseUnknownField(input, unknownFields, |
extensionRegistry, tag)) { |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
} |
break; |
} |
case 10: { |
bitField0_ |= 0x00000001; |
name_ = input.readBytes(); |
break; |
} |
case 18: { |
bitField0_ |= 0x00000002; |
inputType_ = input.readBytes(); |
break; |
} |
case 26: { |
bitField0_ |= 0x00000004; |
outputType_ = input.readBytes(); |
break; |
} |
case 34: { |
com.google.protobuf.DescriptorProtos.MethodOptions.Builder subBuilder = com.google.protobuf.DescriptorProtos.MethodOptions.newBuilder(); |
if (hasOptions()) { |
subBuilder.mergeFrom(getOptions()); |
} |
input.readMessage(subBuilder, extensionRegistry); |
setOptions(subBuilder.buildPartial()); |
break; |
} |
} |
} |
} |
private int bitField0_; |
// optional string name = 1; |
private java.lang.Object name_ = ""; |
public boolean hasName() { |
return ((bitField0_ & 0x00000001) == 0x00000001); |
} |
public String getName() { |
java.lang.Object ref = name_; |
if (!(ref instanceof String)) { |
String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); |
name_ = s; |
return s; |
} else { |
return (String) ref; |
} |
} |
public Builder setName(String value) { |
if (value == null) { |
throw new NullPointerException(); |
} |
bitField0_ |= 0x00000001; |
name_ = value; |
onChanged(); |
return this; |
} |
public Builder clearName() { |
bitField0_ = (bitField0_ & ~0x00000001); |
name_ = getDefaultInstance().getName(); |
onChanged(); |
return this; |
} |
void setName(com.google.protobuf.ByteString value) { |
bitField0_ |= 0x00000001; |
name_ = value; |
onChanged(); |
} |
// optional string input_type = 2; |
private java.lang.Object inputType_ = ""; |
public boolean hasInputType() { |
return ((bitField0_ & 0x00000002) == 0x00000002); |
} |
public String getInputType() { |
java.lang.Object ref = inputType_; |
if (!(ref instanceof String)) { |
String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); |
inputType_ = s; |
return s; |
} else { |
return (String) ref; |
} |
} |
public Builder setInputType(String value) { |
if (value == null) { |
throw new NullPointerException(); |
} |
bitField0_ |= 0x00000002; |
inputType_ = value; |
onChanged(); |
return this; |
} |
public Builder clearInputType() { |
bitField0_ = (bitField0_ & ~0x00000002); |
inputType_ = getDefaultInstance().getInputType(); |
onChanged(); |
return this; |
} |
void setInputType(com.google.protobuf.ByteString value) { |
bitField0_ |= 0x00000002; |
inputType_ = value; |
onChanged(); |
} |
// optional string output_type = 3; |
private java.lang.Object outputType_ = ""; |
public boolean hasOutputType() { |
return ((bitField0_ & 0x00000004) == 0x00000004); |
} |
public String getOutputType() { |
java.lang.Object ref = outputType_; |
if (!(ref instanceof String)) { |
String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); |
outputType_ = s; |
return s; |
} else { |
return (String) ref; |
} |
} |
public Builder setOutputType(String value) { |
if (value == null) { |
throw new NullPointerException(); |
} |
bitField0_ |= 0x00000004; |
outputType_ = value; |
onChanged(); |
return this; |
} |
public Builder clearOutputType() { |
bitField0_ = (bitField0_ & ~0x00000004); |
outputType_ = getDefaultInstance().getOutputType(); |
onChanged(); |
return this; |
} |
void setOutputType(com.google.protobuf.ByteString value) { |
bitField0_ |= 0x00000004; |
outputType_ = value; |
onChanged(); |
} |
// optional .google.protobuf.MethodOptions options = 4; |
private com.google.protobuf.DescriptorProtos.MethodOptions options_ = com.google.protobuf.DescriptorProtos.MethodOptions.getDefaultInstance(); |
private com.google.protobuf.SingleFieldBuilder< |
com.google.protobuf.DescriptorProtos.MethodOptions, com.google.protobuf.DescriptorProtos.MethodOptions.Builder, com.google.protobuf.DescriptorProtos.MethodOptionsOrBuilder> optionsBuilder_; |
public boolean hasOptions() { |
return ((bitField0_ & 0x00000008) == 0x00000008); |
} |
public com.google.protobuf.DescriptorProtos.MethodOptions getOptions() { |
if (optionsBuilder_ == null) { |
return options_; |
} else { |
return optionsBuilder_.getMessage(); |
} |
} |
public Builder setOptions(com.google.protobuf.DescriptorProtos.MethodOptions value) { |
if (optionsBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
options_ = value; |
onChanged(); |
} else { |
optionsBuilder_.setMessage(value); |
} |
bitField0_ |= 0x00000008; |
return this; |
} |
public Builder setOptions( |
com.google.protobuf.DescriptorProtos.MethodOptions.Builder builderForValue) { |
if (optionsBuilder_ == null) { |
options_ = builderForValue.build(); |
onChanged(); |
} else { |
optionsBuilder_.setMessage(builderForValue.build()); |
} |
bitField0_ |= 0x00000008; |
return this; |
} |
public Builder mergeOptions(com.google.protobuf.DescriptorProtos.MethodOptions value) { |
if (optionsBuilder_ == null) { |
if (((bitField0_ & 0x00000008) == 0x00000008) && |
options_ != com.google.protobuf.DescriptorProtos.MethodOptions.getDefaultInstance()) { |
options_ = |
com.google.protobuf.DescriptorProtos.MethodOptions.newBuilder(options_).mergeFrom(value).buildPartial(); |
} else { |
options_ = value; |
} |
onChanged(); |
} else { |
optionsBuilder_.mergeFrom(value); |
} |
bitField0_ |= 0x00000008; |
return this; |
} |
public Builder clearOptions() { |
if (optionsBuilder_ == null) { |
options_ = com.google.protobuf.DescriptorProtos.MethodOptions.getDefaultInstance(); |
onChanged(); |
} else { |
optionsBuilder_.clear(); |
} |
bitField0_ = (bitField0_ & ~0x00000008); |
return this; |
} |
public com.google.protobuf.DescriptorProtos.MethodOptions.Builder getOptionsBuilder() { |
bitField0_ |= 0x00000008; |
onChanged(); |
return getOptionsFieldBuilder().getBuilder(); |
} |
public com.google.protobuf.DescriptorProtos.MethodOptionsOrBuilder getOptionsOrBuilder() { |
if (optionsBuilder_ != null) { |
return optionsBuilder_.getMessageOrBuilder(); |
} else { |
return options_; |
} |
} |
private com.google.protobuf.SingleFieldBuilder< |
com.google.protobuf.DescriptorProtos.MethodOptions, com.google.protobuf.DescriptorProtos.MethodOptions.Builder, com.google.protobuf.DescriptorProtos.MethodOptionsOrBuilder> |
getOptionsFieldBuilder() { |
if (optionsBuilder_ == null) { |
optionsBuilder_ = new com.google.protobuf.SingleFieldBuilder< |
com.google.protobuf.DescriptorProtos.MethodOptions, com.google.protobuf.DescriptorProtos.MethodOptions.Builder, com.google.protobuf.DescriptorProtos.MethodOptionsOrBuilder>( |
options_, |
getParentForChildren(), |
isClean()); |
options_ = null; |
} |
return optionsBuilder_; |
} |
// @@protoc_insertion_point(builder_scope:google.protobuf.MethodDescriptorProto) |
} |
static { |
defaultInstance = new MethodDescriptorProto(true); |
defaultInstance.initFields(); |
} |
// @@protoc_insertion_point(class_scope:google.protobuf.MethodDescriptorProto) |
} |
public interface FileOptionsOrBuilder extends |
com.google.protobuf.GeneratedMessage. |
ExtendableMessageOrBuilder<FileOptions> { |
// optional string java_package = 1; |
boolean hasJavaPackage(); |
String getJavaPackage(); |
// optional string java_outer_classname = 8; |
boolean hasJavaOuterClassname(); |
String getJavaOuterClassname(); |
// optional bool java_multiple_files = 10 [default = false]; |
boolean hasJavaMultipleFiles(); |
boolean getJavaMultipleFiles(); |
// optional bool java_generate_equals_and_hash = 20 [default = false]; |
boolean hasJavaGenerateEqualsAndHash(); |
boolean getJavaGenerateEqualsAndHash(); |
// optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED]; |
boolean hasOptimizeFor(); |
com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode getOptimizeFor(); |
// optional bool cc_generic_services = 16 [default = false]; |
boolean hasCcGenericServices(); |
boolean getCcGenericServices(); |
// optional bool java_generic_services = 17 [default = false]; |
boolean hasJavaGenericServices(); |
boolean getJavaGenericServices(); |
// optional bool py_generic_services = 18 [default = false]; |
boolean hasPyGenericServices(); |
boolean getPyGenericServices(); |
// repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; |
java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> |
getUninterpretedOptionList(); |
com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index); |
int getUninterpretedOptionCount(); |
java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> |
getUninterpretedOptionOrBuilderList(); |
com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder( |
int index); |
} |
public static final class FileOptions extends |
com.google.protobuf.GeneratedMessage.ExtendableMessage< |
FileOptions> implements FileOptionsOrBuilder { |
// Use FileOptions.newBuilder() to construct. |
private FileOptions(Builder builder) { |
super(builder); |
} |
private FileOptions(boolean noInit) {} |
private static final FileOptions defaultInstance; |
public static FileOptions getDefaultInstance() { |
return defaultInstance; |
} |
public FileOptions getDefaultInstanceForType() { |
return defaultInstance; |
} |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileOptions_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileOptions_fieldAccessorTable; |
} |
public enum OptimizeMode |
implements com.google.protobuf.ProtocolMessageEnum { |
SPEED(0, 1), |
CODE_SIZE(1, 2), |
LITE_RUNTIME(2, 3), |
; |
public static final int SPEED_VALUE = 1; |
public static final int CODE_SIZE_VALUE = 2; |
public static final int LITE_RUNTIME_VALUE = 3; |
public final int getNumber() { return value; } |
public static OptimizeMode valueOf(int value) { |
switch (value) { |
case 1: return SPEED; |
case 2: return CODE_SIZE; |
case 3: return LITE_RUNTIME; |
default: return null; |
} |
} |
public static com.google.protobuf.Internal.EnumLiteMap<OptimizeMode> |
internalGetValueMap() { |
return internalValueMap; |
} |
private static com.google.protobuf.Internal.EnumLiteMap<OptimizeMode> |
internalValueMap = |
new com.google.protobuf.Internal.EnumLiteMap<OptimizeMode>() { |
public OptimizeMode findValueByNumber(int number) { |
return OptimizeMode.valueOf(number); |
} |
}; |
public final com.google.protobuf.Descriptors.EnumValueDescriptor |
getValueDescriptor() { |
return getDescriptor().getValues().get(index); |
} |
public final com.google.protobuf.Descriptors.EnumDescriptor |
getDescriptorForType() { |
return getDescriptor(); |
} |
public static final com.google.protobuf.Descriptors.EnumDescriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.FileOptions.getDescriptor().getEnumTypes().get(0); |
} |
private static final OptimizeMode[] VALUES = { |
SPEED, CODE_SIZE, LITE_RUNTIME, |
}; |
public static OptimizeMode valueOf( |
com.google.protobuf.Descriptors.EnumValueDescriptor desc) { |
if (desc.getType() != getDescriptor()) { |
throw new java.lang.IllegalArgumentException( |
"EnumValueDescriptor is not for this type."); |
} |
return VALUES[desc.getIndex()]; |
} |
private final int index; |
private final int value; |
private OptimizeMode(int index, int value) { |
this.index = index; |
this.value = value; |
} |
// @@protoc_insertion_point(enum_scope:google.protobuf.FileOptions.OptimizeMode) |
} |
private int bitField0_; |
// optional string java_package = 1; |
public static final int JAVA_PACKAGE_FIELD_NUMBER = 1; |
private java.lang.Object javaPackage_; |
public boolean hasJavaPackage() { |
return ((bitField0_ & 0x00000001) == 0x00000001); |
} |
public String getJavaPackage() { |
java.lang.Object ref = javaPackage_; |
if (ref instanceof String) { |
return (String) ref; |
} else { |
com.google.protobuf.ByteString bs = |
(com.google.protobuf.ByteString) ref; |
String s = bs.toStringUtf8(); |
if (com.google.protobuf.Internal.isValidUtf8(bs)) { |
javaPackage_ = s; |
} |
return s; |
} |
} |
private com.google.protobuf.ByteString getJavaPackageBytes() { |
java.lang.Object ref = javaPackage_; |
if (ref instanceof String) { |
com.google.protobuf.ByteString b = |
com.google.protobuf.ByteString.copyFromUtf8((String) ref); |
javaPackage_ = b; |
return b; |
} else { |
return (com.google.protobuf.ByteString) ref; |
} |
} |
// optional string java_outer_classname = 8; |
public static final int JAVA_OUTER_CLASSNAME_FIELD_NUMBER = 8; |
private java.lang.Object javaOuterClassname_; |
public boolean hasJavaOuterClassname() { |
return ((bitField0_ & 0x00000002) == 0x00000002); |
} |
public String getJavaOuterClassname() { |
java.lang.Object ref = javaOuterClassname_; |
if (ref instanceof String) { |
return (String) ref; |
} else { |
com.google.protobuf.ByteString bs = |
(com.google.protobuf.ByteString) ref; |
String s = bs.toStringUtf8(); |
if (com.google.protobuf.Internal.isValidUtf8(bs)) { |
javaOuterClassname_ = s; |
} |
return s; |
} |
} |
private com.google.protobuf.ByteString getJavaOuterClassnameBytes() { |
java.lang.Object ref = javaOuterClassname_; |
if (ref instanceof String) { |
com.google.protobuf.ByteString b = |
com.google.protobuf.ByteString.copyFromUtf8((String) ref); |
javaOuterClassname_ = b; |
return b; |
} else { |
return (com.google.protobuf.ByteString) ref; |
} |
} |
// optional bool java_multiple_files = 10 [default = false]; |
public static final int JAVA_MULTIPLE_FILES_FIELD_NUMBER = 10; |
private boolean javaMultipleFiles_; |
public boolean hasJavaMultipleFiles() { |
return ((bitField0_ & 0x00000004) == 0x00000004); |
} |
public boolean getJavaMultipleFiles() { |
return javaMultipleFiles_; |
} |
// optional bool java_generate_equals_and_hash = 20 [default = false]; |
public static final int JAVA_GENERATE_EQUALS_AND_HASH_FIELD_NUMBER = 20; |
private boolean javaGenerateEqualsAndHash_; |
public boolean hasJavaGenerateEqualsAndHash() { |
return ((bitField0_ & 0x00000008) == 0x00000008); |
} |
public boolean getJavaGenerateEqualsAndHash() { |
return javaGenerateEqualsAndHash_; |
} |
// optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED]; |
public static final int OPTIMIZE_FOR_FIELD_NUMBER = 9; |
private com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode optimizeFor_; |
public boolean hasOptimizeFor() { |
return ((bitField0_ & 0x00000010) == 0x00000010); |
} |
public com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode getOptimizeFor() { |
return optimizeFor_; |
} |
// optional bool cc_generic_services = 16 [default = false]; |
public static final int CC_GENERIC_SERVICES_FIELD_NUMBER = 16; |
private boolean ccGenericServices_; |
public boolean hasCcGenericServices() { |
return ((bitField0_ & 0x00000020) == 0x00000020); |
} |
public boolean getCcGenericServices() { |
return ccGenericServices_; |
} |
// optional bool java_generic_services = 17 [default = false]; |
public static final int JAVA_GENERIC_SERVICES_FIELD_NUMBER = 17; |
private boolean javaGenericServices_; |
public boolean hasJavaGenericServices() { |
return ((bitField0_ & 0x00000040) == 0x00000040); |
} |
public boolean getJavaGenericServices() { |
return javaGenericServices_; |
} |
// optional bool py_generic_services = 18 [default = false]; |
public static final int PY_GENERIC_SERVICES_FIELD_NUMBER = 18; |
private boolean pyGenericServices_; |
public boolean hasPyGenericServices() { |
return ((bitField0_ & 0x00000080) == 0x00000080); |
} |
public boolean getPyGenericServices() { |
return pyGenericServices_; |
} |
// repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; |
public static final int UNINTERPRETED_OPTION_FIELD_NUMBER = 999; |
private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_; |
public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() { |
return uninterpretedOption_; |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> |
getUninterpretedOptionOrBuilderList() { |
return uninterpretedOption_; |
} |
public int getUninterpretedOptionCount() { |
return uninterpretedOption_.size(); |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) { |
return uninterpretedOption_.get(index); |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder( |
int index) { |
return uninterpretedOption_.get(index); |
} |
private void initFields() { |
javaPackage_ = ""; |
javaOuterClassname_ = ""; |
javaMultipleFiles_ = false; |
javaGenerateEqualsAndHash_ = false; |
optimizeFor_ = com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode.SPEED; |
ccGenericServices_ = false; |
javaGenericServices_ = false; |
pyGenericServices_ = false; |
uninterpretedOption_ = java.util.Collections.emptyList(); |
} |
private byte memoizedIsInitialized = -1; |
public final boolean isInitialized() { |
byte isInitialized = memoizedIsInitialized; |
if (isInitialized != -1) return isInitialized == 1; |
for (int i = 0; i < getUninterpretedOptionCount(); i++) { |
if (!getUninterpretedOption(i).isInitialized()) { |
memoizedIsInitialized = 0; |
return false; |
} |
} |
if (!extensionsAreInitialized()) { |
memoizedIsInitialized = 0; |
return false; |
} |
memoizedIsInitialized = 1; |
return true; |
} |
public void writeTo(com.google.protobuf.CodedOutputStream output) |
throws java.io.IOException { |
getSerializedSize(); |
com.google.protobuf.GeneratedMessage |
.ExtendableMessage<com.google.protobuf.DescriptorProtos.FileOptions>.ExtensionWriter extensionWriter = |
newExtensionWriter(); |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
output.writeBytes(1, getJavaPackageBytes()); |
} |
if (((bitField0_ & 0x00000002) == 0x00000002)) { |
output.writeBytes(8, getJavaOuterClassnameBytes()); |
} |
if (((bitField0_ & 0x00000010) == 0x00000010)) { |
output.writeEnum(9, optimizeFor_.getNumber()); |
} |
if (((bitField0_ & 0x00000004) == 0x00000004)) { |
output.writeBool(10, javaMultipleFiles_); |
} |
if (((bitField0_ & 0x00000020) == 0x00000020)) { |
output.writeBool(16, ccGenericServices_); |
} |
if (((bitField0_ & 0x00000040) == 0x00000040)) { |
output.writeBool(17, javaGenericServices_); |
} |
if (((bitField0_ & 0x00000080) == 0x00000080)) { |
output.writeBool(18, pyGenericServices_); |
} |
if (((bitField0_ & 0x00000008) == 0x00000008)) { |
output.writeBool(20, javaGenerateEqualsAndHash_); |
} |
for (int i = 0; i < uninterpretedOption_.size(); i++) { |
output.writeMessage(999, uninterpretedOption_.get(i)); |
} |
extensionWriter.writeUntil(536870912, output); |
getUnknownFields().writeTo(output); |
} |
private int memoizedSerializedSize = -1; |
public int getSerializedSize() { |
int size = memoizedSerializedSize; |
if (size != -1) return size; |
size = 0; |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
size += com.google.protobuf.CodedOutputStream |
.computeBytesSize(1, getJavaPackageBytes()); |
} |
if (((bitField0_ & 0x00000002) == 0x00000002)) { |
size += com.google.protobuf.CodedOutputStream |
.computeBytesSize(8, getJavaOuterClassnameBytes()); |
} |
if (((bitField0_ & 0x00000010) == 0x00000010)) { |
size += com.google.protobuf.CodedOutputStream |
.computeEnumSize(9, optimizeFor_.getNumber()); |
} |
if (((bitField0_ & 0x00000004) == 0x00000004)) { |
size += com.google.protobuf.CodedOutputStream |
.computeBoolSize(10, javaMultipleFiles_); |
} |
if (((bitField0_ & 0x00000020) == 0x00000020)) { |
size += com.google.protobuf.CodedOutputStream |
.computeBoolSize(16, ccGenericServices_); |
} |
if (((bitField0_ & 0x00000040) == 0x00000040)) { |
size += com.google.protobuf.CodedOutputStream |
.computeBoolSize(17, javaGenericServices_); |
} |
if (((bitField0_ & 0x00000080) == 0x00000080)) { |
size += com.google.protobuf.CodedOutputStream |
.computeBoolSize(18, pyGenericServices_); |
} |
if (((bitField0_ & 0x00000008) == 0x00000008)) { |
size += com.google.protobuf.CodedOutputStream |
.computeBoolSize(20, javaGenerateEqualsAndHash_); |
} |
for (int i = 0; i < uninterpretedOption_.size(); i++) { |
size += com.google.protobuf.CodedOutputStream |
.computeMessageSize(999, uninterpretedOption_.get(i)); |
} |
size += extensionsSerializedSize(); |
size += getUnknownFields().getSerializedSize(); |
memoizedSerializedSize = size; |
return size; |
} |
private static final long serialVersionUID = 0L; |
@java.lang.Override |
protected java.lang.Object writeReplace() |
throws java.io.ObjectStreamException { |
return super.writeReplace(); |
} |
public static com.google.protobuf.DescriptorProtos.FileOptions parseFrom( |
com.google.protobuf.ByteString data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.FileOptions parseFrom( |
com.google.protobuf.ByteString data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.FileOptions parseFrom(byte[] data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.FileOptions parseFrom( |
byte[] data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.FileOptions parseFrom(java.io.InputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.FileOptions parseFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.FileOptions parseDelimitedFrom(java.io.InputStream input) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.FileOptions parseDelimitedFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input, extensionRegistry)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.FileOptions parseFrom( |
com.google.protobuf.CodedInputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.FileOptions parseFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static Builder newBuilder() { return Builder.create(); } |
public Builder newBuilderForType() { return newBuilder(); } |
public static Builder newBuilder(com.google.protobuf.DescriptorProtos.FileOptions prototype) { |
return newBuilder().mergeFrom(prototype); |
} |
public Builder toBuilder() { return newBuilder(this); } |
@java.lang.Override |
protected Builder newBuilderForType( |
com.google.protobuf.GeneratedMessage.BuilderParent parent) { |
Builder builder = new Builder(parent); |
return builder; |
} |
public static final class Builder extends |
com.google.protobuf.GeneratedMessage.ExtendableBuilder< |
com.google.protobuf.DescriptorProtos.FileOptions, Builder> implements com.google.protobuf.DescriptorProtos.FileOptionsOrBuilder { |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileOptions_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FileOptions_fieldAccessorTable; |
} |
// Construct using com.google.protobuf.DescriptorProtos.FileOptions.newBuilder() |
private Builder() { |
maybeForceBuilderInitialization(); |
} |
private Builder(BuilderParent parent) { |
super(parent); |
maybeForceBuilderInitialization(); |
} |
private void maybeForceBuilderInitialization() { |
if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { |
getUninterpretedOptionFieldBuilder(); |
} |
} |
private static Builder create() { |
return new Builder(); |
} |
public Builder clear() { |
super.clear(); |
javaPackage_ = ""; |
bitField0_ = (bitField0_ & ~0x00000001); |
javaOuterClassname_ = ""; |
bitField0_ = (bitField0_ & ~0x00000002); |
javaMultipleFiles_ = false; |
bitField0_ = (bitField0_ & ~0x00000004); |
javaGenerateEqualsAndHash_ = false; |
bitField0_ = (bitField0_ & ~0x00000008); |
optimizeFor_ = com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode.SPEED; |
bitField0_ = (bitField0_ & ~0x00000010); |
ccGenericServices_ = false; |
bitField0_ = (bitField0_ & ~0x00000020); |
javaGenericServices_ = false; |
bitField0_ = (bitField0_ & ~0x00000040); |
pyGenericServices_ = false; |
bitField0_ = (bitField0_ & ~0x00000080); |
if (uninterpretedOptionBuilder_ == null) { |
uninterpretedOption_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000100); |
} else { |
uninterpretedOptionBuilder_.clear(); |
} |
return this; |
} |
public Builder clone() { |
return create().mergeFrom(buildPartial()); |
} |
public com.google.protobuf.Descriptors.Descriptor |
getDescriptorForType() { |
return com.google.protobuf.DescriptorProtos.FileOptions.getDescriptor(); |
} |
public com.google.protobuf.DescriptorProtos.FileOptions getDefaultInstanceForType() { |
return com.google.protobuf.DescriptorProtos.FileOptions.getDefaultInstance(); |
} |
public com.google.protobuf.DescriptorProtos.FileOptions build() { |
com.google.protobuf.DescriptorProtos.FileOptions result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException(result); |
} |
return result; |
} |
private com.google.protobuf.DescriptorProtos.FileOptions buildParsed() |
throws com.google.protobuf.InvalidProtocolBufferException { |
com.google.protobuf.DescriptorProtos.FileOptions result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException( |
result).asInvalidProtocolBufferException(); |
} |
return result; |
} |
public com.google.protobuf.DescriptorProtos.FileOptions buildPartial() { |
com.google.protobuf.DescriptorProtos.FileOptions result = new com.google.protobuf.DescriptorProtos.FileOptions(this); |
int from_bitField0_ = bitField0_; |
int to_bitField0_ = 0; |
if (((from_bitField0_ & 0x00000001) == 0x00000001)) { |
to_bitField0_ |= 0x00000001; |
} |
result.javaPackage_ = javaPackage_; |
if (((from_bitField0_ & 0x00000002) == 0x00000002)) { |
to_bitField0_ |= 0x00000002; |
} |
result.javaOuterClassname_ = javaOuterClassname_; |
if (((from_bitField0_ & 0x00000004) == 0x00000004)) { |
to_bitField0_ |= 0x00000004; |
} |
result.javaMultipleFiles_ = javaMultipleFiles_; |
if (((from_bitField0_ & 0x00000008) == 0x00000008)) { |
to_bitField0_ |= 0x00000008; |
} |
result.javaGenerateEqualsAndHash_ = javaGenerateEqualsAndHash_; |
if (((from_bitField0_ & 0x00000010) == 0x00000010)) { |
to_bitField0_ |= 0x00000010; |
} |
result.optimizeFor_ = optimizeFor_; |
if (((from_bitField0_ & 0x00000020) == 0x00000020)) { |
to_bitField0_ |= 0x00000020; |
} |
result.ccGenericServices_ = ccGenericServices_; |
if (((from_bitField0_ & 0x00000040) == 0x00000040)) { |
to_bitField0_ |= 0x00000040; |
} |
result.javaGenericServices_ = javaGenericServices_; |
if (((from_bitField0_ & 0x00000080) == 0x00000080)) { |
to_bitField0_ |= 0x00000080; |
} |
result.pyGenericServices_ = pyGenericServices_; |
if (uninterpretedOptionBuilder_ == null) { |
if (((bitField0_ & 0x00000100) == 0x00000100)) { |
uninterpretedOption_ = java.util.Collections.unmodifiableList(uninterpretedOption_); |
bitField0_ = (bitField0_ & ~0x00000100); |
} |
result.uninterpretedOption_ = uninterpretedOption_; |
} else { |
result.uninterpretedOption_ = uninterpretedOptionBuilder_.build(); |
} |
result.bitField0_ = to_bitField0_; |
onBuilt(); |
return result; |
} |
public Builder mergeFrom(com.google.protobuf.Message other) { |
if (other instanceof com.google.protobuf.DescriptorProtos.FileOptions) { |
return mergeFrom((com.google.protobuf.DescriptorProtos.FileOptions)other); |
} else { |
super.mergeFrom(other); |
return this; |
} |
} |
public Builder mergeFrom(com.google.protobuf.DescriptorProtos.FileOptions other) { |
if (other == com.google.protobuf.DescriptorProtos.FileOptions.getDefaultInstance()) return this; |
if (other.hasJavaPackage()) { |
setJavaPackage(other.getJavaPackage()); |
} |
if (other.hasJavaOuterClassname()) { |
setJavaOuterClassname(other.getJavaOuterClassname()); |
} |
if (other.hasJavaMultipleFiles()) { |
setJavaMultipleFiles(other.getJavaMultipleFiles()); |
} |
if (other.hasJavaGenerateEqualsAndHash()) { |
setJavaGenerateEqualsAndHash(other.getJavaGenerateEqualsAndHash()); |
} |
if (other.hasOptimizeFor()) { |
setOptimizeFor(other.getOptimizeFor()); |
} |
if (other.hasCcGenericServices()) { |
setCcGenericServices(other.getCcGenericServices()); |
} |
if (other.hasJavaGenericServices()) { |
setJavaGenericServices(other.getJavaGenericServices()); |
} |
if (other.hasPyGenericServices()) { |
setPyGenericServices(other.getPyGenericServices()); |
} |
if (uninterpretedOptionBuilder_ == null) { |
if (!other.uninterpretedOption_.isEmpty()) { |
if (uninterpretedOption_.isEmpty()) { |
uninterpretedOption_ = other.uninterpretedOption_; |
bitField0_ = (bitField0_ & ~0x00000100); |
} else { |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.addAll(other.uninterpretedOption_); |
} |
onChanged(); |
} |
} else { |
if (!other.uninterpretedOption_.isEmpty()) { |
if (uninterpretedOptionBuilder_.isEmpty()) { |
uninterpretedOptionBuilder_.dispose(); |
uninterpretedOptionBuilder_ = null; |
uninterpretedOption_ = other.uninterpretedOption_; |
bitField0_ = (bitField0_ & ~0x00000100); |
uninterpretedOptionBuilder_ = |
com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? |
getUninterpretedOptionFieldBuilder() : null; |
} else { |
uninterpretedOptionBuilder_.addAllMessages(other.uninterpretedOption_); |
} |
} |
} |
this.mergeExtensionFields(other); |
this.mergeUnknownFields(other.getUnknownFields()); |
return this; |
} |
public final boolean isInitialized() { |
for (int i = 0; i < getUninterpretedOptionCount(); i++) { |
if (!getUninterpretedOption(i).isInitialized()) { |
return false; |
} |
} |
if (!extensionsAreInitialized()) { |
return false; |
} |
return true; |
} |
public Builder mergeFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
com.google.protobuf.UnknownFieldSet.Builder unknownFields = |
com.google.protobuf.UnknownFieldSet.newBuilder( |
this.getUnknownFields()); |
while (true) { |
int tag = input.readTag(); |
switch (tag) { |
case 0: |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
default: { |
if (!parseUnknownField(input, unknownFields, |
extensionRegistry, tag)) { |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
} |
break; |
} |
case 10: { |
bitField0_ |= 0x00000001; |
javaPackage_ = input.readBytes(); |
break; |
} |
case 66: { |
bitField0_ |= 0x00000002; |
javaOuterClassname_ = input.readBytes(); |
break; |
} |
case 72: { |
int rawValue = input.readEnum(); |
com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode value = com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode.valueOf(rawValue); |
if (value == null) { |
unknownFields.mergeVarintField(9, rawValue); |
} else { |
bitField0_ |= 0x00000010; |
optimizeFor_ = value; |
} |
break; |
} |
case 80: { |
bitField0_ |= 0x00000004; |
javaMultipleFiles_ = input.readBool(); |
break; |
} |
case 128: { |
bitField0_ |= 0x00000020; |
ccGenericServices_ = input.readBool(); |
break; |
} |
case 136: { |
bitField0_ |= 0x00000040; |
javaGenericServices_ = input.readBool(); |
break; |
} |
case 144: { |
bitField0_ |= 0x00000080; |
pyGenericServices_ = input.readBool(); |
break; |
} |
case 160: { |
bitField0_ |= 0x00000008; |
javaGenerateEqualsAndHash_ = input.readBool(); |
break; |
} |
case 7994: { |
com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder subBuilder = com.google.protobuf.DescriptorProtos.UninterpretedOption.newBuilder(); |
input.readMessage(subBuilder, extensionRegistry); |
addUninterpretedOption(subBuilder.buildPartial()); |
break; |
} |
} |
} |
} |
private int bitField0_; |
// optional string java_package = 1; |
private java.lang.Object javaPackage_ = ""; |
public boolean hasJavaPackage() { |
return ((bitField0_ & 0x00000001) == 0x00000001); |
} |
public String getJavaPackage() { |
java.lang.Object ref = javaPackage_; |
if (!(ref instanceof String)) { |
String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); |
javaPackage_ = s; |
return s; |
} else { |
return (String) ref; |
} |
} |
public Builder setJavaPackage(String value) { |
if (value == null) { |
throw new NullPointerException(); |
} |
bitField0_ |= 0x00000001; |
javaPackage_ = value; |
onChanged(); |
return this; |
} |
public Builder clearJavaPackage() { |
bitField0_ = (bitField0_ & ~0x00000001); |
javaPackage_ = getDefaultInstance().getJavaPackage(); |
onChanged(); |
return this; |
} |
void setJavaPackage(com.google.protobuf.ByteString value) { |
bitField0_ |= 0x00000001; |
javaPackage_ = value; |
onChanged(); |
} |
// optional string java_outer_classname = 8; |
private java.lang.Object javaOuterClassname_ = ""; |
public boolean hasJavaOuterClassname() { |
return ((bitField0_ & 0x00000002) == 0x00000002); |
} |
public String getJavaOuterClassname() { |
java.lang.Object ref = javaOuterClassname_; |
if (!(ref instanceof String)) { |
String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); |
javaOuterClassname_ = s; |
return s; |
} else { |
return (String) ref; |
} |
} |
public Builder setJavaOuterClassname(String value) { |
if (value == null) { |
throw new NullPointerException(); |
} |
bitField0_ |= 0x00000002; |
javaOuterClassname_ = value; |
onChanged(); |
return this; |
} |
public Builder clearJavaOuterClassname() { |
bitField0_ = (bitField0_ & ~0x00000002); |
javaOuterClassname_ = getDefaultInstance().getJavaOuterClassname(); |
onChanged(); |
return this; |
} |
void setJavaOuterClassname(com.google.protobuf.ByteString value) { |
bitField0_ |= 0x00000002; |
javaOuterClassname_ = value; |
onChanged(); |
} |
// optional bool java_multiple_files = 10 [default = false]; |
private boolean javaMultipleFiles_ ; |
public boolean hasJavaMultipleFiles() { |
return ((bitField0_ & 0x00000004) == 0x00000004); |
} |
public boolean getJavaMultipleFiles() { |
return javaMultipleFiles_; |
} |
public Builder setJavaMultipleFiles(boolean value) { |
bitField0_ |= 0x00000004; |
javaMultipleFiles_ = value; |
onChanged(); |
return this; |
} |
public Builder clearJavaMultipleFiles() { |
bitField0_ = (bitField0_ & ~0x00000004); |
javaMultipleFiles_ = false; |
onChanged(); |
return this; |
} |
// optional bool java_generate_equals_and_hash = 20 [default = false]; |
private boolean javaGenerateEqualsAndHash_ ; |
public boolean hasJavaGenerateEqualsAndHash() { |
return ((bitField0_ & 0x00000008) == 0x00000008); |
} |
public boolean getJavaGenerateEqualsAndHash() { |
return javaGenerateEqualsAndHash_; |
} |
public Builder setJavaGenerateEqualsAndHash(boolean value) { |
bitField0_ |= 0x00000008; |
javaGenerateEqualsAndHash_ = value; |
onChanged(); |
return this; |
} |
public Builder clearJavaGenerateEqualsAndHash() { |
bitField0_ = (bitField0_ & ~0x00000008); |
javaGenerateEqualsAndHash_ = false; |
onChanged(); |
return this; |
} |
// optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED]; |
private com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode optimizeFor_ = com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode.SPEED; |
public boolean hasOptimizeFor() { |
return ((bitField0_ & 0x00000010) == 0x00000010); |
} |
public com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode getOptimizeFor() { |
return optimizeFor_; |
} |
public Builder setOptimizeFor(com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode value) { |
if (value == null) { |
throw new NullPointerException(); |
} |
bitField0_ |= 0x00000010; |
optimizeFor_ = value; |
onChanged(); |
return this; |
} |
public Builder clearOptimizeFor() { |
bitField0_ = (bitField0_ & ~0x00000010); |
optimizeFor_ = com.google.protobuf.DescriptorProtos.FileOptions.OptimizeMode.SPEED; |
onChanged(); |
return this; |
} |
// optional bool cc_generic_services = 16 [default = false]; |
private boolean ccGenericServices_ ; |
public boolean hasCcGenericServices() { |
return ((bitField0_ & 0x00000020) == 0x00000020); |
} |
public boolean getCcGenericServices() { |
return ccGenericServices_; |
} |
public Builder setCcGenericServices(boolean value) { |
bitField0_ |= 0x00000020; |
ccGenericServices_ = value; |
onChanged(); |
return this; |
} |
public Builder clearCcGenericServices() { |
bitField0_ = (bitField0_ & ~0x00000020); |
ccGenericServices_ = false; |
onChanged(); |
return this; |
} |
// optional bool java_generic_services = 17 [default = false]; |
private boolean javaGenericServices_ ; |
public boolean hasJavaGenericServices() { |
return ((bitField0_ & 0x00000040) == 0x00000040); |
} |
public boolean getJavaGenericServices() { |
return javaGenericServices_; |
} |
public Builder setJavaGenericServices(boolean value) { |
bitField0_ |= 0x00000040; |
javaGenericServices_ = value; |
onChanged(); |
return this; |
} |
public Builder clearJavaGenericServices() { |
bitField0_ = (bitField0_ & ~0x00000040); |
javaGenericServices_ = false; |
onChanged(); |
return this; |
} |
// optional bool py_generic_services = 18 [default = false]; |
private boolean pyGenericServices_ ; |
public boolean hasPyGenericServices() { |
return ((bitField0_ & 0x00000080) == 0x00000080); |
} |
public boolean getPyGenericServices() { |
return pyGenericServices_; |
} |
public Builder setPyGenericServices(boolean value) { |
bitField0_ |= 0x00000080; |
pyGenericServices_ = value; |
onChanged(); |
return this; |
} |
public Builder clearPyGenericServices() { |
bitField0_ = (bitField0_ & ~0x00000080); |
pyGenericServices_ = false; |
onChanged(); |
return this; |
} |
// repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; |
private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_ = |
java.util.Collections.emptyList(); |
private void ensureUninterpretedOptionIsMutable() { |
if (!((bitField0_ & 0x00000100) == 0x00000100)) { |
uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>(uninterpretedOption_); |
bitField0_ |= 0x00000100; |
} |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> uninterpretedOptionBuilder_; |
public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() { |
if (uninterpretedOptionBuilder_ == null) { |
return java.util.Collections.unmodifiableList(uninterpretedOption_); |
} else { |
return uninterpretedOptionBuilder_.getMessageList(); |
} |
} |
public int getUninterpretedOptionCount() { |
if (uninterpretedOptionBuilder_ == null) { |
return uninterpretedOption_.size(); |
} else { |
return uninterpretedOptionBuilder_.getCount(); |
} |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) { |
if (uninterpretedOptionBuilder_ == null) { |
return uninterpretedOption_.get(index); |
} else { |
return uninterpretedOptionBuilder_.getMessage(index); |
} |
} |
public Builder setUninterpretedOption( |
int index, com.google.protobuf.DescriptorProtos.UninterpretedOption value) { |
if (uninterpretedOptionBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.set(index, value); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.setMessage(index, value); |
} |
return this; |
} |
public Builder setUninterpretedOption( |
int index, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) { |
if (uninterpretedOptionBuilder_ == null) { |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.set(index, builderForValue.build()); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.setMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addUninterpretedOption(com.google.protobuf.DescriptorProtos.UninterpretedOption value) { |
if (uninterpretedOptionBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.add(value); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.addMessage(value); |
} |
return this; |
} |
public Builder addUninterpretedOption( |
int index, com.google.protobuf.DescriptorProtos.UninterpretedOption value) { |
if (uninterpretedOptionBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.add(index, value); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.addMessage(index, value); |
} |
return this; |
} |
public Builder addUninterpretedOption( |
com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) { |
if (uninterpretedOptionBuilder_ == null) { |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.add(builderForValue.build()); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.addMessage(builderForValue.build()); |
} |
return this; |
} |
public Builder addUninterpretedOption( |
int index, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) { |
if (uninterpretedOptionBuilder_ == null) { |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.add(index, builderForValue.build()); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.addMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addAllUninterpretedOption( |
java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.UninterpretedOption> values) { |
if (uninterpretedOptionBuilder_ == null) { |
ensureUninterpretedOptionIsMutable(); |
super.addAll(values, uninterpretedOption_); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.addAllMessages(values); |
} |
return this; |
} |
public Builder clearUninterpretedOption() { |
if (uninterpretedOptionBuilder_ == null) { |
uninterpretedOption_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000100); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.clear(); |
} |
return this; |
} |
public Builder removeUninterpretedOption(int index) { |
if (uninterpretedOptionBuilder_ == null) { |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.remove(index); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.remove(index); |
} |
return this; |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder getUninterpretedOptionBuilder( |
int index) { |
return getUninterpretedOptionFieldBuilder().getBuilder(index); |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder( |
int index) { |
if (uninterpretedOptionBuilder_ == null) { |
return uninterpretedOption_.get(index); } else { |
return uninterpretedOptionBuilder_.getMessageOrBuilder(index); |
} |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> |
getUninterpretedOptionOrBuilderList() { |
if (uninterpretedOptionBuilder_ != null) { |
return uninterpretedOptionBuilder_.getMessageOrBuilderList(); |
} else { |
return java.util.Collections.unmodifiableList(uninterpretedOption_); |
} |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder() { |
return getUninterpretedOptionFieldBuilder().addBuilder( |
com.google.protobuf.DescriptorProtos.UninterpretedOption.getDefaultInstance()); |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder( |
int index) { |
return getUninterpretedOptionFieldBuilder().addBuilder( |
index, com.google.protobuf.DescriptorProtos.UninterpretedOption.getDefaultInstance()); |
} |
public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder> |
getUninterpretedOptionBuilderList() { |
return getUninterpretedOptionFieldBuilder().getBuilderList(); |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> |
getUninterpretedOptionFieldBuilder() { |
if (uninterpretedOptionBuilder_ == null) { |
uninterpretedOptionBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>( |
uninterpretedOption_, |
((bitField0_ & 0x00000100) == 0x00000100), |
getParentForChildren(), |
isClean()); |
uninterpretedOption_ = null; |
} |
return uninterpretedOptionBuilder_; |
} |
// @@protoc_insertion_point(builder_scope:google.protobuf.FileOptions) |
} |
static { |
defaultInstance = new FileOptions(true); |
defaultInstance.initFields(); |
} |
// @@protoc_insertion_point(class_scope:google.protobuf.FileOptions) |
} |
public interface MessageOptionsOrBuilder extends |
com.google.protobuf.GeneratedMessage. |
ExtendableMessageOrBuilder<MessageOptions> { |
// optional bool message_set_wire_format = 1 [default = false]; |
boolean hasMessageSetWireFormat(); |
boolean getMessageSetWireFormat(); |
// optional bool no_standard_descriptor_accessor = 2 [default = false]; |
boolean hasNoStandardDescriptorAccessor(); |
boolean getNoStandardDescriptorAccessor(); |
// repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; |
java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> |
getUninterpretedOptionList(); |
com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index); |
int getUninterpretedOptionCount(); |
java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> |
getUninterpretedOptionOrBuilderList(); |
com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder( |
int index); |
} |
public static final class MessageOptions extends |
com.google.protobuf.GeneratedMessage.ExtendableMessage< |
MessageOptions> implements MessageOptionsOrBuilder { |
// Use MessageOptions.newBuilder() to construct. |
private MessageOptions(Builder builder) { |
super(builder); |
} |
private MessageOptions(boolean noInit) {} |
private static final MessageOptions defaultInstance; |
public static MessageOptions getDefaultInstance() { |
return defaultInstance; |
} |
public MessageOptions getDefaultInstanceForType() { |
return defaultInstance; |
} |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_MessageOptions_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_MessageOptions_fieldAccessorTable; |
} |
private int bitField0_; |
// optional bool message_set_wire_format = 1 [default = false]; |
public static final int MESSAGE_SET_WIRE_FORMAT_FIELD_NUMBER = 1; |
private boolean messageSetWireFormat_; |
public boolean hasMessageSetWireFormat() { |
return ((bitField0_ & 0x00000001) == 0x00000001); |
} |
public boolean getMessageSetWireFormat() { |
return messageSetWireFormat_; |
} |
// optional bool no_standard_descriptor_accessor = 2 [default = false]; |
public static final int NO_STANDARD_DESCRIPTOR_ACCESSOR_FIELD_NUMBER = 2; |
private boolean noStandardDescriptorAccessor_; |
public boolean hasNoStandardDescriptorAccessor() { |
return ((bitField0_ & 0x00000002) == 0x00000002); |
} |
public boolean getNoStandardDescriptorAccessor() { |
return noStandardDescriptorAccessor_; |
} |
// repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; |
public static final int UNINTERPRETED_OPTION_FIELD_NUMBER = 999; |
private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_; |
public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() { |
return uninterpretedOption_; |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> |
getUninterpretedOptionOrBuilderList() { |
return uninterpretedOption_; |
} |
public int getUninterpretedOptionCount() { |
return uninterpretedOption_.size(); |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) { |
return uninterpretedOption_.get(index); |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder( |
int index) { |
return uninterpretedOption_.get(index); |
} |
private void initFields() { |
messageSetWireFormat_ = false; |
noStandardDescriptorAccessor_ = false; |
uninterpretedOption_ = java.util.Collections.emptyList(); |
} |
private byte memoizedIsInitialized = -1; |
public final boolean isInitialized() { |
byte isInitialized = memoizedIsInitialized; |
if (isInitialized != -1) return isInitialized == 1; |
for (int i = 0; i < getUninterpretedOptionCount(); i++) { |
if (!getUninterpretedOption(i).isInitialized()) { |
memoizedIsInitialized = 0; |
return false; |
} |
} |
if (!extensionsAreInitialized()) { |
memoizedIsInitialized = 0; |
return false; |
} |
memoizedIsInitialized = 1; |
return true; |
} |
public void writeTo(com.google.protobuf.CodedOutputStream output) |
throws java.io.IOException { |
getSerializedSize(); |
com.google.protobuf.GeneratedMessage |
.ExtendableMessage<com.google.protobuf.DescriptorProtos.MessageOptions>.ExtensionWriter extensionWriter = |
newExtensionWriter(); |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
output.writeBool(1, messageSetWireFormat_); |
} |
if (((bitField0_ & 0x00000002) == 0x00000002)) { |
output.writeBool(2, noStandardDescriptorAccessor_); |
} |
for (int i = 0; i < uninterpretedOption_.size(); i++) { |
output.writeMessage(999, uninterpretedOption_.get(i)); |
} |
extensionWriter.writeUntil(536870912, output); |
getUnknownFields().writeTo(output); |
} |
private int memoizedSerializedSize = -1; |
public int getSerializedSize() { |
int size = memoizedSerializedSize; |
if (size != -1) return size; |
size = 0; |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
size += com.google.protobuf.CodedOutputStream |
.computeBoolSize(1, messageSetWireFormat_); |
} |
if (((bitField0_ & 0x00000002) == 0x00000002)) { |
size += com.google.protobuf.CodedOutputStream |
.computeBoolSize(2, noStandardDescriptorAccessor_); |
} |
for (int i = 0; i < uninterpretedOption_.size(); i++) { |
size += com.google.protobuf.CodedOutputStream |
.computeMessageSize(999, uninterpretedOption_.get(i)); |
} |
size += extensionsSerializedSize(); |
size += getUnknownFields().getSerializedSize(); |
memoizedSerializedSize = size; |
return size; |
} |
private static final long serialVersionUID = 0L; |
@java.lang.Override |
protected java.lang.Object writeReplace() |
throws java.io.ObjectStreamException { |
return super.writeReplace(); |
} |
public static com.google.protobuf.DescriptorProtos.MessageOptions parseFrom( |
com.google.protobuf.ByteString data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.MessageOptions parseFrom( |
com.google.protobuf.ByteString data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.MessageOptions parseFrom(byte[] data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.MessageOptions parseFrom( |
byte[] data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.MessageOptions parseFrom(java.io.InputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.MessageOptions parseFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.MessageOptions parseDelimitedFrom(java.io.InputStream input) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.MessageOptions parseDelimitedFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input, extensionRegistry)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.MessageOptions parseFrom( |
com.google.protobuf.CodedInputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.MessageOptions parseFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static Builder newBuilder() { return Builder.create(); } |
public Builder newBuilderForType() { return newBuilder(); } |
public static Builder newBuilder(com.google.protobuf.DescriptorProtos.MessageOptions prototype) { |
return newBuilder().mergeFrom(prototype); |
} |
public Builder toBuilder() { return newBuilder(this); } |
@java.lang.Override |
protected Builder newBuilderForType( |
com.google.protobuf.GeneratedMessage.BuilderParent parent) { |
Builder builder = new Builder(parent); |
return builder; |
} |
public static final class Builder extends |
com.google.protobuf.GeneratedMessage.ExtendableBuilder< |
com.google.protobuf.DescriptorProtos.MessageOptions, Builder> implements com.google.protobuf.DescriptorProtos.MessageOptionsOrBuilder { |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_MessageOptions_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_MessageOptions_fieldAccessorTable; |
} |
// Construct using com.google.protobuf.DescriptorProtos.MessageOptions.newBuilder() |
private Builder() { |
maybeForceBuilderInitialization(); |
} |
private Builder(BuilderParent parent) { |
super(parent); |
maybeForceBuilderInitialization(); |
} |
private void maybeForceBuilderInitialization() { |
if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { |
getUninterpretedOptionFieldBuilder(); |
} |
} |
private static Builder create() { |
return new Builder(); |
} |
public Builder clear() { |
super.clear(); |
messageSetWireFormat_ = false; |
bitField0_ = (bitField0_ & ~0x00000001); |
noStandardDescriptorAccessor_ = false; |
bitField0_ = (bitField0_ & ~0x00000002); |
if (uninterpretedOptionBuilder_ == null) { |
uninterpretedOption_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000004); |
} else { |
uninterpretedOptionBuilder_.clear(); |
} |
return this; |
} |
public Builder clone() { |
return create().mergeFrom(buildPartial()); |
} |
public com.google.protobuf.Descriptors.Descriptor |
getDescriptorForType() { |
return com.google.protobuf.DescriptorProtos.MessageOptions.getDescriptor(); |
} |
public com.google.protobuf.DescriptorProtos.MessageOptions getDefaultInstanceForType() { |
return com.google.protobuf.DescriptorProtos.MessageOptions.getDefaultInstance(); |
} |
public com.google.protobuf.DescriptorProtos.MessageOptions build() { |
com.google.protobuf.DescriptorProtos.MessageOptions result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException(result); |
} |
return result; |
} |
private com.google.protobuf.DescriptorProtos.MessageOptions buildParsed() |
throws com.google.protobuf.InvalidProtocolBufferException { |
com.google.protobuf.DescriptorProtos.MessageOptions result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException( |
result).asInvalidProtocolBufferException(); |
} |
return result; |
} |
public com.google.protobuf.DescriptorProtos.MessageOptions buildPartial() { |
com.google.protobuf.DescriptorProtos.MessageOptions result = new com.google.protobuf.DescriptorProtos.MessageOptions(this); |
int from_bitField0_ = bitField0_; |
int to_bitField0_ = 0; |
if (((from_bitField0_ & 0x00000001) == 0x00000001)) { |
to_bitField0_ |= 0x00000001; |
} |
result.messageSetWireFormat_ = messageSetWireFormat_; |
if (((from_bitField0_ & 0x00000002) == 0x00000002)) { |
to_bitField0_ |= 0x00000002; |
} |
result.noStandardDescriptorAccessor_ = noStandardDescriptorAccessor_; |
if (uninterpretedOptionBuilder_ == null) { |
if (((bitField0_ & 0x00000004) == 0x00000004)) { |
uninterpretedOption_ = java.util.Collections.unmodifiableList(uninterpretedOption_); |
bitField0_ = (bitField0_ & ~0x00000004); |
} |
result.uninterpretedOption_ = uninterpretedOption_; |
} else { |
result.uninterpretedOption_ = uninterpretedOptionBuilder_.build(); |
} |
result.bitField0_ = to_bitField0_; |
onBuilt(); |
return result; |
} |
public Builder mergeFrom(com.google.protobuf.Message other) { |
if (other instanceof com.google.protobuf.DescriptorProtos.MessageOptions) { |
return mergeFrom((com.google.protobuf.DescriptorProtos.MessageOptions)other); |
} else { |
super.mergeFrom(other); |
return this; |
} |
} |
public Builder mergeFrom(com.google.protobuf.DescriptorProtos.MessageOptions other) { |
if (other == com.google.protobuf.DescriptorProtos.MessageOptions.getDefaultInstance()) return this; |
if (other.hasMessageSetWireFormat()) { |
setMessageSetWireFormat(other.getMessageSetWireFormat()); |
} |
if (other.hasNoStandardDescriptorAccessor()) { |
setNoStandardDescriptorAccessor(other.getNoStandardDescriptorAccessor()); |
} |
if (uninterpretedOptionBuilder_ == null) { |
if (!other.uninterpretedOption_.isEmpty()) { |
if (uninterpretedOption_.isEmpty()) { |
uninterpretedOption_ = other.uninterpretedOption_; |
bitField0_ = (bitField0_ & ~0x00000004); |
} else { |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.addAll(other.uninterpretedOption_); |
} |
onChanged(); |
} |
} else { |
if (!other.uninterpretedOption_.isEmpty()) { |
if (uninterpretedOptionBuilder_.isEmpty()) { |
uninterpretedOptionBuilder_.dispose(); |
uninterpretedOptionBuilder_ = null; |
uninterpretedOption_ = other.uninterpretedOption_; |
bitField0_ = (bitField0_ & ~0x00000004); |
uninterpretedOptionBuilder_ = |
com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? |
getUninterpretedOptionFieldBuilder() : null; |
} else { |
uninterpretedOptionBuilder_.addAllMessages(other.uninterpretedOption_); |
} |
} |
} |
this.mergeExtensionFields(other); |
this.mergeUnknownFields(other.getUnknownFields()); |
return this; |
} |
public final boolean isInitialized() { |
for (int i = 0; i < getUninterpretedOptionCount(); i++) { |
if (!getUninterpretedOption(i).isInitialized()) { |
return false; |
} |
} |
if (!extensionsAreInitialized()) { |
return false; |
} |
return true; |
} |
public Builder mergeFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
com.google.protobuf.UnknownFieldSet.Builder unknownFields = |
com.google.protobuf.UnknownFieldSet.newBuilder( |
this.getUnknownFields()); |
while (true) { |
int tag = input.readTag(); |
switch (tag) { |
case 0: |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
default: { |
if (!parseUnknownField(input, unknownFields, |
extensionRegistry, tag)) { |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
} |
break; |
} |
case 8: { |
bitField0_ |= 0x00000001; |
messageSetWireFormat_ = input.readBool(); |
break; |
} |
case 16: { |
bitField0_ |= 0x00000002; |
noStandardDescriptorAccessor_ = input.readBool(); |
break; |
} |
case 7994: { |
com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder subBuilder = com.google.protobuf.DescriptorProtos.UninterpretedOption.newBuilder(); |
input.readMessage(subBuilder, extensionRegistry); |
addUninterpretedOption(subBuilder.buildPartial()); |
break; |
} |
} |
} |
} |
private int bitField0_; |
// optional bool message_set_wire_format = 1 [default = false]; |
private boolean messageSetWireFormat_ ; |
public boolean hasMessageSetWireFormat() { |
return ((bitField0_ & 0x00000001) == 0x00000001); |
} |
public boolean getMessageSetWireFormat() { |
return messageSetWireFormat_; |
} |
public Builder setMessageSetWireFormat(boolean value) { |
bitField0_ |= 0x00000001; |
messageSetWireFormat_ = value; |
onChanged(); |
return this; |
} |
public Builder clearMessageSetWireFormat() { |
bitField0_ = (bitField0_ & ~0x00000001); |
messageSetWireFormat_ = false; |
onChanged(); |
return this; |
} |
// optional bool no_standard_descriptor_accessor = 2 [default = false]; |
private boolean noStandardDescriptorAccessor_ ; |
public boolean hasNoStandardDescriptorAccessor() { |
return ((bitField0_ & 0x00000002) == 0x00000002); |
} |
public boolean getNoStandardDescriptorAccessor() { |
return noStandardDescriptorAccessor_; |
} |
public Builder setNoStandardDescriptorAccessor(boolean value) { |
bitField0_ |= 0x00000002; |
noStandardDescriptorAccessor_ = value; |
onChanged(); |
return this; |
} |
public Builder clearNoStandardDescriptorAccessor() { |
bitField0_ = (bitField0_ & ~0x00000002); |
noStandardDescriptorAccessor_ = false; |
onChanged(); |
return this; |
} |
// repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; |
private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_ = |
java.util.Collections.emptyList(); |
private void ensureUninterpretedOptionIsMutable() { |
if (!((bitField0_ & 0x00000004) == 0x00000004)) { |
uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>(uninterpretedOption_); |
bitField0_ |= 0x00000004; |
} |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> uninterpretedOptionBuilder_; |
public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() { |
if (uninterpretedOptionBuilder_ == null) { |
return java.util.Collections.unmodifiableList(uninterpretedOption_); |
} else { |
return uninterpretedOptionBuilder_.getMessageList(); |
} |
} |
public int getUninterpretedOptionCount() { |
if (uninterpretedOptionBuilder_ == null) { |
return uninterpretedOption_.size(); |
} else { |
return uninterpretedOptionBuilder_.getCount(); |
} |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) { |
if (uninterpretedOptionBuilder_ == null) { |
return uninterpretedOption_.get(index); |
} else { |
return uninterpretedOptionBuilder_.getMessage(index); |
} |
} |
public Builder setUninterpretedOption( |
int index, com.google.protobuf.DescriptorProtos.UninterpretedOption value) { |
if (uninterpretedOptionBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.set(index, value); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.setMessage(index, value); |
} |
return this; |
} |
public Builder setUninterpretedOption( |
int index, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) { |
if (uninterpretedOptionBuilder_ == null) { |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.set(index, builderForValue.build()); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.setMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addUninterpretedOption(com.google.protobuf.DescriptorProtos.UninterpretedOption value) { |
if (uninterpretedOptionBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.add(value); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.addMessage(value); |
} |
return this; |
} |
public Builder addUninterpretedOption( |
int index, com.google.protobuf.DescriptorProtos.UninterpretedOption value) { |
if (uninterpretedOptionBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.add(index, value); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.addMessage(index, value); |
} |
return this; |
} |
public Builder addUninterpretedOption( |
com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) { |
if (uninterpretedOptionBuilder_ == null) { |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.add(builderForValue.build()); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.addMessage(builderForValue.build()); |
} |
return this; |
} |
public Builder addUninterpretedOption( |
int index, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) { |
if (uninterpretedOptionBuilder_ == null) { |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.add(index, builderForValue.build()); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.addMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addAllUninterpretedOption( |
java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.UninterpretedOption> values) { |
if (uninterpretedOptionBuilder_ == null) { |
ensureUninterpretedOptionIsMutable(); |
super.addAll(values, uninterpretedOption_); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.addAllMessages(values); |
} |
return this; |
} |
public Builder clearUninterpretedOption() { |
if (uninterpretedOptionBuilder_ == null) { |
uninterpretedOption_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000004); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.clear(); |
} |
return this; |
} |
public Builder removeUninterpretedOption(int index) { |
if (uninterpretedOptionBuilder_ == null) { |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.remove(index); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.remove(index); |
} |
return this; |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder getUninterpretedOptionBuilder( |
int index) { |
return getUninterpretedOptionFieldBuilder().getBuilder(index); |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder( |
int index) { |
if (uninterpretedOptionBuilder_ == null) { |
return uninterpretedOption_.get(index); } else { |
return uninterpretedOptionBuilder_.getMessageOrBuilder(index); |
} |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> |
getUninterpretedOptionOrBuilderList() { |
if (uninterpretedOptionBuilder_ != null) { |
return uninterpretedOptionBuilder_.getMessageOrBuilderList(); |
} else { |
return java.util.Collections.unmodifiableList(uninterpretedOption_); |
} |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder() { |
return getUninterpretedOptionFieldBuilder().addBuilder( |
com.google.protobuf.DescriptorProtos.UninterpretedOption.getDefaultInstance()); |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder( |
int index) { |
return getUninterpretedOptionFieldBuilder().addBuilder( |
index, com.google.protobuf.DescriptorProtos.UninterpretedOption.getDefaultInstance()); |
} |
public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder> |
getUninterpretedOptionBuilderList() { |
return getUninterpretedOptionFieldBuilder().getBuilderList(); |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> |
getUninterpretedOptionFieldBuilder() { |
if (uninterpretedOptionBuilder_ == null) { |
uninterpretedOptionBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>( |
uninterpretedOption_, |
((bitField0_ & 0x00000004) == 0x00000004), |
getParentForChildren(), |
isClean()); |
uninterpretedOption_ = null; |
} |
return uninterpretedOptionBuilder_; |
} |
// @@protoc_insertion_point(builder_scope:google.protobuf.MessageOptions) |
} |
static { |
defaultInstance = new MessageOptions(true); |
defaultInstance.initFields(); |
} |
// @@protoc_insertion_point(class_scope:google.protobuf.MessageOptions) |
} |
public interface FieldOptionsOrBuilder extends |
com.google.protobuf.GeneratedMessage. |
ExtendableMessageOrBuilder<FieldOptions> { |
// optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING]; |
boolean hasCtype(); |
com.google.protobuf.DescriptorProtos.FieldOptions.CType getCtype(); |
// optional bool packed = 2; |
boolean hasPacked(); |
boolean getPacked(); |
// optional bool deprecated = 3 [default = false]; |
boolean hasDeprecated(); |
boolean getDeprecated(); |
// optional string experimental_map_key = 9; |
boolean hasExperimentalMapKey(); |
String getExperimentalMapKey(); |
// repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; |
java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> |
getUninterpretedOptionList(); |
com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index); |
int getUninterpretedOptionCount(); |
java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> |
getUninterpretedOptionOrBuilderList(); |
com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder( |
int index); |
} |
public static final class FieldOptions extends |
com.google.protobuf.GeneratedMessage.ExtendableMessage< |
FieldOptions> implements FieldOptionsOrBuilder { |
// Use FieldOptions.newBuilder() to construct. |
private FieldOptions(Builder builder) { |
super(builder); |
} |
private FieldOptions(boolean noInit) {} |
private static final FieldOptions defaultInstance; |
public static FieldOptions getDefaultInstance() { |
return defaultInstance; |
} |
public FieldOptions getDefaultInstanceForType() { |
return defaultInstance; |
} |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FieldOptions_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FieldOptions_fieldAccessorTable; |
} |
public enum CType |
implements com.google.protobuf.ProtocolMessageEnum { |
STRING(0, 0), |
CORD(1, 1), |
STRING_PIECE(2, 2), |
; |
public static final int STRING_VALUE = 0; |
public static final int CORD_VALUE = 1; |
public static final int STRING_PIECE_VALUE = 2; |
public final int getNumber() { return value; } |
public static CType valueOf(int value) { |
switch (value) { |
case 0: return STRING; |
case 1: return CORD; |
case 2: return STRING_PIECE; |
default: return null; |
} |
} |
public static com.google.protobuf.Internal.EnumLiteMap<CType> |
internalGetValueMap() { |
return internalValueMap; |
} |
private static com.google.protobuf.Internal.EnumLiteMap<CType> |
internalValueMap = |
new com.google.protobuf.Internal.EnumLiteMap<CType>() { |
public CType findValueByNumber(int number) { |
return CType.valueOf(number); |
} |
}; |
public final com.google.protobuf.Descriptors.EnumValueDescriptor |
getValueDescriptor() { |
return getDescriptor().getValues().get(index); |
} |
public final com.google.protobuf.Descriptors.EnumDescriptor |
getDescriptorForType() { |
return getDescriptor(); |
} |
public static final com.google.protobuf.Descriptors.EnumDescriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.FieldOptions.getDescriptor().getEnumTypes().get(0); |
} |
private static final CType[] VALUES = { |
STRING, CORD, STRING_PIECE, |
}; |
public static CType valueOf( |
com.google.protobuf.Descriptors.EnumValueDescriptor desc) { |
if (desc.getType() != getDescriptor()) { |
throw new java.lang.IllegalArgumentException( |
"EnumValueDescriptor is not for this type."); |
} |
return VALUES[desc.getIndex()]; |
} |
private final int index; |
private final int value; |
private CType(int index, int value) { |
this.index = index; |
this.value = value; |
} |
// @@protoc_insertion_point(enum_scope:google.protobuf.FieldOptions.CType) |
} |
private int bitField0_; |
// optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING]; |
public static final int CTYPE_FIELD_NUMBER = 1; |
private com.google.protobuf.DescriptorProtos.FieldOptions.CType ctype_; |
public boolean hasCtype() { |
return ((bitField0_ & 0x00000001) == 0x00000001); |
} |
public com.google.protobuf.DescriptorProtos.FieldOptions.CType getCtype() { |
return ctype_; |
} |
// optional bool packed = 2; |
public static final int PACKED_FIELD_NUMBER = 2; |
private boolean packed_; |
public boolean hasPacked() { |
return ((bitField0_ & 0x00000002) == 0x00000002); |
} |
public boolean getPacked() { |
return packed_; |
} |
// optional bool deprecated = 3 [default = false]; |
public static final int DEPRECATED_FIELD_NUMBER = 3; |
private boolean deprecated_; |
public boolean hasDeprecated() { |
return ((bitField0_ & 0x00000004) == 0x00000004); |
} |
public boolean getDeprecated() { |
return deprecated_; |
} |
// optional string experimental_map_key = 9; |
public static final int EXPERIMENTAL_MAP_KEY_FIELD_NUMBER = 9; |
private java.lang.Object experimentalMapKey_; |
public boolean hasExperimentalMapKey() { |
return ((bitField0_ & 0x00000008) == 0x00000008); |
} |
public String getExperimentalMapKey() { |
java.lang.Object ref = experimentalMapKey_; |
if (ref instanceof String) { |
return (String) ref; |
} else { |
com.google.protobuf.ByteString bs = |
(com.google.protobuf.ByteString) ref; |
String s = bs.toStringUtf8(); |
if (com.google.protobuf.Internal.isValidUtf8(bs)) { |
experimentalMapKey_ = s; |
} |
return s; |
} |
} |
private com.google.protobuf.ByteString getExperimentalMapKeyBytes() { |
java.lang.Object ref = experimentalMapKey_; |
if (ref instanceof String) { |
com.google.protobuf.ByteString b = |
com.google.protobuf.ByteString.copyFromUtf8((String) ref); |
experimentalMapKey_ = b; |
return b; |
} else { |
return (com.google.protobuf.ByteString) ref; |
} |
} |
// repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; |
public static final int UNINTERPRETED_OPTION_FIELD_NUMBER = 999; |
private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_; |
public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() { |
return uninterpretedOption_; |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> |
getUninterpretedOptionOrBuilderList() { |
return uninterpretedOption_; |
} |
public int getUninterpretedOptionCount() { |
return uninterpretedOption_.size(); |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) { |
return uninterpretedOption_.get(index); |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder( |
int index) { |
return uninterpretedOption_.get(index); |
} |
private void initFields() { |
ctype_ = com.google.protobuf.DescriptorProtos.FieldOptions.CType.STRING; |
packed_ = false; |
deprecated_ = false; |
experimentalMapKey_ = ""; |
uninterpretedOption_ = java.util.Collections.emptyList(); |
} |
private byte memoizedIsInitialized = -1; |
public final boolean isInitialized() { |
byte isInitialized = memoizedIsInitialized; |
if (isInitialized != -1) return isInitialized == 1; |
for (int i = 0; i < getUninterpretedOptionCount(); i++) { |
if (!getUninterpretedOption(i).isInitialized()) { |
memoizedIsInitialized = 0; |
return false; |
} |
} |
if (!extensionsAreInitialized()) { |
memoizedIsInitialized = 0; |
return false; |
} |
memoizedIsInitialized = 1; |
return true; |
} |
public void writeTo(com.google.protobuf.CodedOutputStream output) |
throws java.io.IOException { |
getSerializedSize(); |
com.google.protobuf.GeneratedMessage |
.ExtendableMessage<com.google.protobuf.DescriptorProtos.FieldOptions>.ExtensionWriter extensionWriter = |
newExtensionWriter(); |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
output.writeEnum(1, ctype_.getNumber()); |
} |
if (((bitField0_ & 0x00000002) == 0x00000002)) { |
output.writeBool(2, packed_); |
} |
if (((bitField0_ & 0x00000004) == 0x00000004)) { |
output.writeBool(3, deprecated_); |
} |
if (((bitField0_ & 0x00000008) == 0x00000008)) { |
output.writeBytes(9, getExperimentalMapKeyBytes()); |
} |
for (int i = 0; i < uninterpretedOption_.size(); i++) { |
output.writeMessage(999, uninterpretedOption_.get(i)); |
} |
extensionWriter.writeUntil(536870912, output); |
getUnknownFields().writeTo(output); |
} |
private int memoizedSerializedSize = -1; |
public int getSerializedSize() { |
int size = memoizedSerializedSize; |
if (size != -1) return size; |
size = 0; |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
size += com.google.protobuf.CodedOutputStream |
.computeEnumSize(1, ctype_.getNumber()); |
} |
if (((bitField0_ & 0x00000002) == 0x00000002)) { |
size += com.google.protobuf.CodedOutputStream |
.computeBoolSize(2, packed_); |
} |
if (((bitField0_ & 0x00000004) == 0x00000004)) { |
size += com.google.protobuf.CodedOutputStream |
.computeBoolSize(3, deprecated_); |
} |
if (((bitField0_ & 0x00000008) == 0x00000008)) { |
size += com.google.protobuf.CodedOutputStream |
.computeBytesSize(9, getExperimentalMapKeyBytes()); |
} |
for (int i = 0; i < uninterpretedOption_.size(); i++) { |
size += com.google.protobuf.CodedOutputStream |
.computeMessageSize(999, uninterpretedOption_.get(i)); |
} |
size += extensionsSerializedSize(); |
size += getUnknownFields().getSerializedSize(); |
memoizedSerializedSize = size; |
return size; |
} |
private static final long serialVersionUID = 0L; |
@java.lang.Override |
protected java.lang.Object writeReplace() |
throws java.io.ObjectStreamException { |
return super.writeReplace(); |
} |
public static com.google.protobuf.DescriptorProtos.FieldOptions parseFrom( |
com.google.protobuf.ByteString data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.FieldOptions parseFrom( |
com.google.protobuf.ByteString data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.FieldOptions parseFrom(byte[] data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.FieldOptions parseFrom( |
byte[] data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.FieldOptions parseFrom(java.io.InputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.FieldOptions parseFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.FieldOptions parseDelimitedFrom(java.io.InputStream input) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.FieldOptions parseDelimitedFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input, extensionRegistry)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.FieldOptions parseFrom( |
com.google.protobuf.CodedInputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.FieldOptions parseFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static Builder newBuilder() { return Builder.create(); } |
public Builder newBuilderForType() { return newBuilder(); } |
public static Builder newBuilder(com.google.protobuf.DescriptorProtos.FieldOptions prototype) { |
return newBuilder().mergeFrom(prototype); |
} |
public Builder toBuilder() { return newBuilder(this); } |
@java.lang.Override |
protected Builder newBuilderForType( |
com.google.protobuf.GeneratedMessage.BuilderParent parent) { |
Builder builder = new Builder(parent); |
return builder; |
} |
public static final class Builder extends |
com.google.protobuf.GeneratedMessage.ExtendableBuilder< |
com.google.protobuf.DescriptorProtos.FieldOptions, Builder> implements com.google.protobuf.DescriptorProtos.FieldOptionsOrBuilder { |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FieldOptions_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_FieldOptions_fieldAccessorTable; |
} |
// Construct using com.google.protobuf.DescriptorProtos.FieldOptions.newBuilder() |
private Builder() { |
maybeForceBuilderInitialization(); |
} |
private Builder(BuilderParent parent) { |
super(parent); |
maybeForceBuilderInitialization(); |
} |
private void maybeForceBuilderInitialization() { |
if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { |
getUninterpretedOptionFieldBuilder(); |
} |
} |
private static Builder create() { |
return new Builder(); |
} |
public Builder clear() { |
super.clear(); |
ctype_ = com.google.protobuf.DescriptorProtos.FieldOptions.CType.STRING; |
bitField0_ = (bitField0_ & ~0x00000001); |
packed_ = false; |
bitField0_ = (bitField0_ & ~0x00000002); |
deprecated_ = false; |
bitField0_ = (bitField0_ & ~0x00000004); |
experimentalMapKey_ = ""; |
bitField0_ = (bitField0_ & ~0x00000008); |
if (uninterpretedOptionBuilder_ == null) { |
uninterpretedOption_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000010); |
} else { |
uninterpretedOptionBuilder_.clear(); |
} |
return this; |
} |
public Builder clone() { |
return create().mergeFrom(buildPartial()); |
} |
public com.google.protobuf.Descriptors.Descriptor |
getDescriptorForType() { |
return com.google.protobuf.DescriptorProtos.FieldOptions.getDescriptor(); |
} |
public com.google.protobuf.DescriptorProtos.FieldOptions getDefaultInstanceForType() { |
return com.google.protobuf.DescriptorProtos.FieldOptions.getDefaultInstance(); |
} |
public com.google.protobuf.DescriptorProtos.FieldOptions build() { |
com.google.protobuf.DescriptorProtos.FieldOptions result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException(result); |
} |
return result; |
} |
private com.google.protobuf.DescriptorProtos.FieldOptions buildParsed() |
throws com.google.protobuf.InvalidProtocolBufferException { |
com.google.protobuf.DescriptorProtos.FieldOptions result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException( |
result).asInvalidProtocolBufferException(); |
} |
return result; |
} |
public com.google.protobuf.DescriptorProtos.FieldOptions buildPartial() { |
com.google.protobuf.DescriptorProtos.FieldOptions result = new com.google.protobuf.DescriptorProtos.FieldOptions(this); |
int from_bitField0_ = bitField0_; |
int to_bitField0_ = 0; |
if (((from_bitField0_ & 0x00000001) == 0x00000001)) { |
to_bitField0_ |= 0x00000001; |
} |
result.ctype_ = ctype_; |
if (((from_bitField0_ & 0x00000002) == 0x00000002)) { |
to_bitField0_ |= 0x00000002; |
} |
result.packed_ = packed_; |
if (((from_bitField0_ & 0x00000004) == 0x00000004)) { |
to_bitField0_ |= 0x00000004; |
} |
result.deprecated_ = deprecated_; |
if (((from_bitField0_ & 0x00000008) == 0x00000008)) { |
to_bitField0_ |= 0x00000008; |
} |
result.experimentalMapKey_ = experimentalMapKey_; |
if (uninterpretedOptionBuilder_ == null) { |
if (((bitField0_ & 0x00000010) == 0x00000010)) { |
uninterpretedOption_ = java.util.Collections.unmodifiableList(uninterpretedOption_); |
bitField0_ = (bitField0_ & ~0x00000010); |
} |
result.uninterpretedOption_ = uninterpretedOption_; |
} else { |
result.uninterpretedOption_ = uninterpretedOptionBuilder_.build(); |
} |
result.bitField0_ = to_bitField0_; |
onBuilt(); |
return result; |
} |
public Builder mergeFrom(com.google.protobuf.Message other) { |
if (other instanceof com.google.protobuf.DescriptorProtos.FieldOptions) { |
return mergeFrom((com.google.protobuf.DescriptorProtos.FieldOptions)other); |
} else { |
super.mergeFrom(other); |
return this; |
} |
} |
public Builder mergeFrom(com.google.protobuf.DescriptorProtos.FieldOptions other) { |
if (other == com.google.protobuf.DescriptorProtos.FieldOptions.getDefaultInstance()) return this; |
if (other.hasCtype()) { |
setCtype(other.getCtype()); |
} |
if (other.hasPacked()) { |
setPacked(other.getPacked()); |
} |
if (other.hasDeprecated()) { |
setDeprecated(other.getDeprecated()); |
} |
if (other.hasExperimentalMapKey()) { |
setExperimentalMapKey(other.getExperimentalMapKey()); |
} |
if (uninterpretedOptionBuilder_ == null) { |
if (!other.uninterpretedOption_.isEmpty()) { |
if (uninterpretedOption_.isEmpty()) { |
uninterpretedOption_ = other.uninterpretedOption_; |
bitField0_ = (bitField0_ & ~0x00000010); |
} else { |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.addAll(other.uninterpretedOption_); |
} |
onChanged(); |
} |
} else { |
if (!other.uninterpretedOption_.isEmpty()) { |
if (uninterpretedOptionBuilder_.isEmpty()) { |
uninterpretedOptionBuilder_.dispose(); |
uninterpretedOptionBuilder_ = null; |
uninterpretedOption_ = other.uninterpretedOption_; |
bitField0_ = (bitField0_ & ~0x00000010); |
uninterpretedOptionBuilder_ = |
com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? |
getUninterpretedOptionFieldBuilder() : null; |
} else { |
uninterpretedOptionBuilder_.addAllMessages(other.uninterpretedOption_); |
} |
} |
} |
this.mergeExtensionFields(other); |
this.mergeUnknownFields(other.getUnknownFields()); |
return this; |
} |
public final boolean isInitialized() { |
for (int i = 0; i < getUninterpretedOptionCount(); i++) { |
if (!getUninterpretedOption(i).isInitialized()) { |
return false; |
} |
} |
if (!extensionsAreInitialized()) { |
return false; |
} |
return true; |
} |
public Builder mergeFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
com.google.protobuf.UnknownFieldSet.Builder unknownFields = |
com.google.protobuf.UnknownFieldSet.newBuilder( |
this.getUnknownFields()); |
while (true) { |
int tag = input.readTag(); |
switch (tag) { |
case 0: |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
default: { |
if (!parseUnknownField(input, unknownFields, |
extensionRegistry, tag)) { |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
} |
break; |
} |
case 8: { |
int rawValue = input.readEnum(); |
com.google.protobuf.DescriptorProtos.FieldOptions.CType value = com.google.protobuf.DescriptorProtos.FieldOptions.CType.valueOf(rawValue); |
if (value == null) { |
unknownFields.mergeVarintField(1, rawValue); |
} else { |
bitField0_ |= 0x00000001; |
ctype_ = value; |
} |
break; |
} |
case 16: { |
bitField0_ |= 0x00000002; |
packed_ = input.readBool(); |
break; |
} |
case 24: { |
bitField0_ |= 0x00000004; |
deprecated_ = input.readBool(); |
break; |
} |
case 74: { |
bitField0_ |= 0x00000008; |
experimentalMapKey_ = input.readBytes(); |
break; |
} |
case 7994: { |
com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder subBuilder = com.google.protobuf.DescriptorProtos.UninterpretedOption.newBuilder(); |
input.readMessage(subBuilder, extensionRegistry); |
addUninterpretedOption(subBuilder.buildPartial()); |
break; |
} |
} |
} |
} |
private int bitField0_; |
// optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING]; |
private com.google.protobuf.DescriptorProtos.FieldOptions.CType ctype_ = com.google.protobuf.DescriptorProtos.FieldOptions.CType.STRING; |
public boolean hasCtype() { |
return ((bitField0_ & 0x00000001) == 0x00000001); |
} |
public com.google.protobuf.DescriptorProtos.FieldOptions.CType getCtype() { |
return ctype_; |
} |
public Builder setCtype(com.google.protobuf.DescriptorProtos.FieldOptions.CType value) { |
if (value == null) { |
throw new NullPointerException(); |
} |
bitField0_ |= 0x00000001; |
ctype_ = value; |
onChanged(); |
return this; |
} |
public Builder clearCtype() { |
bitField0_ = (bitField0_ & ~0x00000001); |
ctype_ = com.google.protobuf.DescriptorProtos.FieldOptions.CType.STRING; |
onChanged(); |
return this; |
} |
// optional bool packed = 2; |
private boolean packed_ ; |
public boolean hasPacked() { |
return ((bitField0_ & 0x00000002) == 0x00000002); |
} |
public boolean getPacked() { |
return packed_; |
} |
public Builder setPacked(boolean value) { |
bitField0_ |= 0x00000002; |
packed_ = value; |
onChanged(); |
return this; |
} |
public Builder clearPacked() { |
bitField0_ = (bitField0_ & ~0x00000002); |
packed_ = false; |
onChanged(); |
return this; |
} |
// optional bool deprecated = 3 [default = false]; |
private boolean deprecated_ ; |
public boolean hasDeprecated() { |
return ((bitField0_ & 0x00000004) == 0x00000004); |
} |
public boolean getDeprecated() { |
return deprecated_; |
} |
public Builder setDeprecated(boolean value) { |
bitField0_ |= 0x00000004; |
deprecated_ = value; |
onChanged(); |
return this; |
} |
public Builder clearDeprecated() { |
bitField0_ = (bitField0_ & ~0x00000004); |
deprecated_ = false; |
onChanged(); |
return this; |
} |
// optional string experimental_map_key = 9; |
private java.lang.Object experimentalMapKey_ = ""; |
public boolean hasExperimentalMapKey() { |
return ((bitField0_ & 0x00000008) == 0x00000008); |
} |
public String getExperimentalMapKey() { |
java.lang.Object ref = experimentalMapKey_; |
if (!(ref instanceof String)) { |
String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); |
experimentalMapKey_ = s; |
return s; |
} else { |
return (String) ref; |
} |
} |
public Builder setExperimentalMapKey(String value) { |
if (value == null) { |
throw new NullPointerException(); |
} |
bitField0_ |= 0x00000008; |
experimentalMapKey_ = value; |
onChanged(); |
return this; |
} |
public Builder clearExperimentalMapKey() { |
bitField0_ = (bitField0_ & ~0x00000008); |
experimentalMapKey_ = getDefaultInstance().getExperimentalMapKey(); |
onChanged(); |
return this; |
} |
void setExperimentalMapKey(com.google.protobuf.ByteString value) { |
bitField0_ |= 0x00000008; |
experimentalMapKey_ = value; |
onChanged(); |
} |
// repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; |
private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_ = |
java.util.Collections.emptyList(); |
private void ensureUninterpretedOptionIsMutable() { |
if (!((bitField0_ & 0x00000010) == 0x00000010)) { |
uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>(uninterpretedOption_); |
bitField0_ |= 0x00000010; |
} |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> uninterpretedOptionBuilder_; |
public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() { |
if (uninterpretedOptionBuilder_ == null) { |
return java.util.Collections.unmodifiableList(uninterpretedOption_); |
} else { |
return uninterpretedOptionBuilder_.getMessageList(); |
} |
} |
public int getUninterpretedOptionCount() { |
if (uninterpretedOptionBuilder_ == null) { |
return uninterpretedOption_.size(); |
} else { |
return uninterpretedOptionBuilder_.getCount(); |
} |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) { |
if (uninterpretedOptionBuilder_ == null) { |
return uninterpretedOption_.get(index); |
} else { |
return uninterpretedOptionBuilder_.getMessage(index); |
} |
} |
public Builder setUninterpretedOption( |
int index, com.google.protobuf.DescriptorProtos.UninterpretedOption value) { |
if (uninterpretedOptionBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.set(index, value); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.setMessage(index, value); |
} |
return this; |
} |
public Builder setUninterpretedOption( |
int index, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) { |
if (uninterpretedOptionBuilder_ == null) { |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.set(index, builderForValue.build()); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.setMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addUninterpretedOption(com.google.protobuf.DescriptorProtos.UninterpretedOption value) { |
if (uninterpretedOptionBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.add(value); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.addMessage(value); |
} |
return this; |
} |
public Builder addUninterpretedOption( |
int index, com.google.protobuf.DescriptorProtos.UninterpretedOption value) { |
if (uninterpretedOptionBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.add(index, value); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.addMessage(index, value); |
} |
return this; |
} |
public Builder addUninterpretedOption( |
com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) { |
if (uninterpretedOptionBuilder_ == null) { |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.add(builderForValue.build()); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.addMessage(builderForValue.build()); |
} |
return this; |
} |
public Builder addUninterpretedOption( |
int index, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) { |
if (uninterpretedOptionBuilder_ == null) { |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.add(index, builderForValue.build()); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.addMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addAllUninterpretedOption( |
java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.UninterpretedOption> values) { |
if (uninterpretedOptionBuilder_ == null) { |
ensureUninterpretedOptionIsMutable(); |
super.addAll(values, uninterpretedOption_); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.addAllMessages(values); |
} |
return this; |
} |
public Builder clearUninterpretedOption() { |
if (uninterpretedOptionBuilder_ == null) { |
uninterpretedOption_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000010); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.clear(); |
} |
return this; |
} |
public Builder removeUninterpretedOption(int index) { |
if (uninterpretedOptionBuilder_ == null) { |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.remove(index); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.remove(index); |
} |
return this; |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder getUninterpretedOptionBuilder( |
int index) { |
return getUninterpretedOptionFieldBuilder().getBuilder(index); |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder( |
int index) { |
if (uninterpretedOptionBuilder_ == null) { |
return uninterpretedOption_.get(index); } else { |
return uninterpretedOptionBuilder_.getMessageOrBuilder(index); |
} |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> |
getUninterpretedOptionOrBuilderList() { |
if (uninterpretedOptionBuilder_ != null) { |
return uninterpretedOptionBuilder_.getMessageOrBuilderList(); |
} else { |
return java.util.Collections.unmodifiableList(uninterpretedOption_); |
} |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder() { |
return getUninterpretedOptionFieldBuilder().addBuilder( |
com.google.protobuf.DescriptorProtos.UninterpretedOption.getDefaultInstance()); |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder( |
int index) { |
return getUninterpretedOptionFieldBuilder().addBuilder( |
index, com.google.protobuf.DescriptorProtos.UninterpretedOption.getDefaultInstance()); |
} |
public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder> |
getUninterpretedOptionBuilderList() { |
return getUninterpretedOptionFieldBuilder().getBuilderList(); |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> |
getUninterpretedOptionFieldBuilder() { |
if (uninterpretedOptionBuilder_ == null) { |
uninterpretedOptionBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>( |
uninterpretedOption_, |
((bitField0_ & 0x00000010) == 0x00000010), |
getParentForChildren(), |
isClean()); |
uninterpretedOption_ = null; |
} |
return uninterpretedOptionBuilder_; |
} |
// @@protoc_insertion_point(builder_scope:google.protobuf.FieldOptions) |
} |
static { |
defaultInstance = new FieldOptions(true); |
defaultInstance.initFields(); |
} |
// @@protoc_insertion_point(class_scope:google.protobuf.FieldOptions) |
} |
public interface EnumOptionsOrBuilder extends |
com.google.protobuf.GeneratedMessage. |
ExtendableMessageOrBuilder<EnumOptions> { |
// repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; |
java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> |
getUninterpretedOptionList(); |
com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index); |
int getUninterpretedOptionCount(); |
java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> |
getUninterpretedOptionOrBuilderList(); |
com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder( |
int index); |
} |
public static final class EnumOptions extends |
com.google.protobuf.GeneratedMessage.ExtendableMessage< |
EnumOptions> implements EnumOptionsOrBuilder { |
// Use EnumOptions.newBuilder() to construct. |
private EnumOptions(Builder builder) { |
super(builder); |
} |
private EnumOptions(boolean noInit) {} |
private static final EnumOptions defaultInstance; |
public static EnumOptions getDefaultInstance() { |
return defaultInstance; |
} |
public EnumOptions getDefaultInstanceForType() { |
return defaultInstance; |
} |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumOptions_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumOptions_fieldAccessorTable; |
} |
// repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; |
public static final int UNINTERPRETED_OPTION_FIELD_NUMBER = 999; |
private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_; |
public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() { |
return uninterpretedOption_; |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> |
getUninterpretedOptionOrBuilderList() { |
return uninterpretedOption_; |
} |
public int getUninterpretedOptionCount() { |
return uninterpretedOption_.size(); |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) { |
return uninterpretedOption_.get(index); |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder( |
int index) { |
return uninterpretedOption_.get(index); |
} |
private void initFields() { |
uninterpretedOption_ = java.util.Collections.emptyList(); |
} |
private byte memoizedIsInitialized = -1; |
public final boolean isInitialized() { |
byte isInitialized = memoizedIsInitialized; |
if (isInitialized != -1) return isInitialized == 1; |
for (int i = 0; i < getUninterpretedOptionCount(); i++) { |
if (!getUninterpretedOption(i).isInitialized()) { |
memoizedIsInitialized = 0; |
return false; |
} |
} |
if (!extensionsAreInitialized()) { |
memoizedIsInitialized = 0; |
return false; |
} |
memoizedIsInitialized = 1; |
return true; |
} |
public void writeTo(com.google.protobuf.CodedOutputStream output) |
throws java.io.IOException { |
getSerializedSize(); |
com.google.protobuf.GeneratedMessage |
.ExtendableMessage<com.google.protobuf.DescriptorProtos.EnumOptions>.ExtensionWriter extensionWriter = |
newExtensionWriter(); |
for (int i = 0; i < uninterpretedOption_.size(); i++) { |
output.writeMessage(999, uninterpretedOption_.get(i)); |
} |
extensionWriter.writeUntil(536870912, output); |
getUnknownFields().writeTo(output); |
} |
private int memoizedSerializedSize = -1; |
public int getSerializedSize() { |
int size = memoizedSerializedSize; |
if (size != -1) return size; |
size = 0; |
for (int i = 0; i < uninterpretedOption_.size(); i++) { |
size += com.google.protobuf.CodedOutputStream |
.computeMessageSize(999, uninterpretedOption_.get(i)); |
} |
size += extensionsSerializedSize(); |
size += getUnknownFields().getSerializedSize(); |
memoizedSerializedSize = size; |
return size; |
} |
private static final long serialVersionUID = 0L; |
@java.lang.Override |
protected java.lang.Object writeReplace() |
throws java.io.ObjectStreamException { |
return super.writeReplace(); |
} |
public static com.google.protobuf.DescriptorProtos.EnumOptions parseFrom( |
com.google.protobuf.ByteString data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.EnumOptions parseFrom( |
com.google.protobuf.ByteString data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.EnumOptions parseFrom(byte[] data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.EnumOptions parseFrom( |
byte[] data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.EnumOptions parseFrom(java.io.InputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.EnumOptions parseFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.EnumOptions parseDelimitedFrom(java.io.InputStream input) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.EnumOptions parseDelimitedFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input, extensionRegistry)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.EnumOptions parseFrom( |
com.google.protobuf.CodedInputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.EnumOptions parseFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static Builder newBuilder() { return Builder.create(); } |
public Builder newBuilderForType() { return newBuilder(); } |
public static Builder newBuilder(com.google.protobuf.DescriptorProtos.EnumOptions prototype) { |
return newBuilder().mergeFrom(prototype); |
} |
public Builder toBuilder() { return newBuilder(this); } |
@java.lang.Override |
protected Builder newBuilderForType( |
com.google.protobuf.GeneratedMessage.BuilderParent parent) { |
Builder builder = new Builder(parent); |
return builder; |
} |
public static final class Builder extends |
com.google.protobuf.GeneratedMessage.ExtendableBuilder< |
com.google.protobuf.DescriptorProtos.EnumOptions, Builder> implements com.google.protobuf.DescriptorProtos.EnumOptionsOrBuilder { |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumOptions_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumOptions_fieldAccessorTable; |
} |
// Construct using com.google.protobuf.DescriptorProtos.EnumOptions.newBuilder() |
private Builder() { |
maybeForceBuilderInitialization(); |
} |
private Builder(BuilderParent parent) { |
super(parent); |
maybeForceBuilderInitialization(); |
} |
private void maybeForceBuilderInitialization() { |
if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { |
getUninterpretedOptionFieldBuilder(); |
} |
} |
private static Builder create() { |
return new Builder(); |
} |
public Builder clear() { |
super.clear(); |
if (uninterpretedOptionBuilder_ == null) { |
uninterpretedOption_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000001); |
} else { |
uninterpretedOptionBuilder_.clear(); |
} |
return this; |
} |
public Builder clone() { |
return create().mergeFrom(buildPartial()); |
} |
public com.google.protobuf.Descriptors.Descriptor |
getDescriptorForType() { |
return com.google.protobuf.DescriptorProtos.EnumOptions.getDescriptor(); |
} |
public com.google.protobuf.DescriptorProtos.EnumOptions getDefaultInstanceForType() { |
return com.google.protobuf.DescriptorProtos.EnumOptions.getDefaultInstance(); |
} |
public com.google.protobuf.DescriptorProtos.EnumOptions build() { |
com.google.protobuf.DescriptorProtos.EnumOptions result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException(result); |
} |
return result; |
} |
private com.google.protobuf.DescriptorProtos.EnumOptions buildParsed() |
throws com.google.protobuf.InvalidProtocolBufferException { |
com.google.protobuf.DescriptorProtos.EnumOptions result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException( |
result).asInvalidProtocolBufferException(); |
} |
return result; |
} |
public com.google.protobuf.DescriptorProtos.EnumOptions buildPartial() { |
com.google.protobuf.DescriptorProtos.EnumOptions result = new com.google.protobuf.DescriptorProtos.EnumOptions(this); |
int from_bitField0_ = bitField0_; |
if (uninterpretedOptionBuilder_ == null) { |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
uninterpretedOption_ = java.util.Collections.unmodifiableList(uninterpretedOption_); |
bitField0_ = (bitField0_ & ~0x00000001); |
} |
result.uninterpretedOption_ = uninterpretedOption_; |
} else { |
result.uninterpretedOption_ = uninterpretedOptionBuilder_.build(); |
} |
onBuilt(); |
return result; |
} |
public Builder mergeFrom(com.google.protobuf.Message other) { |
if (other instanceof com.google.protobuf.DescriptorProtos.EnumOptions) { |
return mergeFrom((com.google.protobuf.DescriptorProtos.EnumOptions)other); |
} else { |
super.mergeFrom(other); |
return this; |
} |
} |
public Builder mergeFrom(com.google.protobuf.DescriptorProtos.EnumOptions other) { |
if (other == com.google.protobuf.DescriptorProtos.EnumOptions.getDefaultInstance()) return this; |
if (uninterpretedOptionBuilder_ == null) { |
if (!other.uninterpretedOption_.isEmpty()) { |
if (uninterpretedOption_.isEmpty()) { |
uninterpretedOption_ = other.uninterpretedOption_; |
bitField0_ = (bitField0_ & ~0x00000001); |
} else { |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.addAll(other.uninterpretedOption_); |
} |
onChanged(); |
} |
} else { |
if (!other.uninterpretedOption_.isEmpty()) { |
if (uninterpretedOptionBuilder_.isEmpty()) { |
uninterpretedOptionBuilder_.dispose(); |
uninterpretedOptionBuilder_ = null; |
uninterpretedOption_ = other.uninterpretedOption_; |
bitField0_ = (bitField0_ & ~0x00000001); |
uninterpretedOptionBuilder_ = |
com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? |
getUninterpretedOptionFieldBuilder() : null; |
} else { |
uninterpretedOptionBuilder_.addAllMessages(other.uninterpretedOption_); |
} |
} |
} |
this.mergeExtensionFields(other); |
this.mergeUnknownFields(other.getUnknownFields()); |
return this; |
} |
public final boolean isInitialized() { |
for (int i = 0; i < getUninterpretedOptionCount(); i++) { |
if (!getUninterpretedOption(i).isInitialized()) { |
return false; |
} |
} |
if (!extensionsAreInitialized()) { |
return false; |
} |
return true; |
} |
public Builder mergeFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
com.google.protobuf.UnknownFieldSet.Builder unknownFields = |
com.google.protobuf.UnknownFieldSet.newBuilder( |
this.getUnknownFields()); |
while (true) { |
int tag = input.readTag(); |
switch (tag) { |
case 0: |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
default: { |
if (!parseUnknownField(input, unknownFields, |
extensionRegistry, tag)) { |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
} |
break; |
} |
case 7994: { |
com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder subBuilder = com.google.protobuf.DescriptorProtos.UninterpretedOption.newBuilder(); |
input.readMessage(subBuilder, extensionRegistry); |
addUninterpretedOption(subBuilder.buildPartial()); |
break; |
} |
} |
} |
} |
private int bitField0_; |
// repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; |
private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_ = |
java.util.Collections.emptyList(); |
private void ensureUninterpretedOptionIsMutable() { |
if (!((bitField0_ & 0x00000001) == 0x00000001)) { |
uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>(uninterpretedOption_); |
bitField0_ |= 0x00000001; |
} |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> uninterpretedOptionBuilder_; |
public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() { |
if (uninterpretedOptionBuilder_ == null) { |
return java.util.Collections.unmodifiableList(uninterpretedOption_); |
} else { |
return uninterpretedOptionBuilder_.getMessageList(); |
} |
} |
public int getUninterpretedOptionCount() { |
if (uninterpretedOptionBuilder_ == null) { |
return uninterpretedOption_.size(); |
} else { |
return uninterpretedOptionBuilder_.getCount(); |
} |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) { |
if (uninterpretedOptionBuilder_ == null) { |
return uninterpretedOption_.get(index); |
} else { |
return uninterpretedOptionBuilder_.getMessage(index); |
} |
} |
public Builder setUninterpretedOption( |
int index, com.google.protobuf.DescriptorProtos.UninterpretedOption value) { |
if (uninterpretedOptionBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.set(index, value); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.setMessage(index, value); |
} |
return this; |
} |
public Builder setUninterpretedOption( |
int index, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) { |
if (uninterpretedOptionBuilder_ == null) { |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.set(index, builderForValue.build()); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.setMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addUninterpretedOption(com.google.protobuf.DescriptorProtos.UninterpretedOption value) { |
if (uninterpretedOptionBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.add(value); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.addMessage(value); |
} |
return this; |
} |
public Builder addUninterpretedOption( |
int index, com.google.protobuf.DescriptorProtos.UninterpretedOption value) { |
if (uninterpretedOptionBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.add(index, value); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.addMessage(index, value); |
} |
return this; |
} |
public Builder addUninterpretedOption( |
com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) { |
if (uninterpretedOptionBuilder_ == null) { |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.add(builderForValue.build()); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.addMessage(builderForValue.build()); |
} |
return this; |
} |
public Builder addUninterpretedOption( |
int index, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) { |
if (uninterpretedOptionBuilder_ == null) { |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.add(index, builderForValue.build()); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.addMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addAllUninterpretedOption( |
java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.UninterpretedOption> values) { |
if (uninterpretedOptionBuilder_ == null) { |
ensureUninterpretedOptionIsMutable(); |
super.addAll(values, uninterpretedOption_); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.addAllMessages(values); |
} |
return this; |
} |
public Builder clearUninterpretedOption() { |
if (uninterpretedOptionBuilder_ == null) { |
uninterpretedOption_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000001); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.clear(); |
} |
return this; |
} |
public Builder removeUninterpretedOption(int index) { |
if (uninterpretedOptionBuilder_ == null) { |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.remove(index); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.remove(index); |
} |
return this; |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder getUninterpretedOptionBuilder( |
int index) { |
return getUninterpretedOptionFieldBuilder().getBuilder(index); |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder( |
int index) { |
if (uninterpretedOptionBuilder_ == null) { |
return uninterpretedOption_.get(index); } else { |
return uninterpretedOptionBuilder_.getMessageOrBuilder(index); |
} |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> |
getUninterpretedOptionOrBuilderList() { |
if (uninterpretedOptionBuilder_ != null) { |
return uninterpretedOptionBuilder_.getMessageOrBuilderList(); |
} else { |
return java.util.Collections.unmodifiableList(uninterpretedOption_); |
} |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder() { |
return getUninterpretedOptionFieldBuilder().addBuilder( |
com.google.protobuf.DescriptorProtos.UninterpretedOption.getDefaultInstance()); |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder( |
int index) { |
return getUninterpretedOptionFieldBuilder().addBuilder( |
index, com.google.protobuf.DescriptorProtos.UninterpretedOption.getDefaultInstance()); |
} |
public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder> |
getUninterpretedOptionBuilderList() { |
return getUninterpretedOptionFieldBuilder().getBuilderList(); |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> |
getUninterpretedOptionFieldBuilder() { |
if (uninterpretedOptionBuilder_ == null) { |
uninterpretedOptionBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>( |
uninterpretedOption_, |
((bitField0_ & 0x00000001) == 0x00000001), |
getParentForChildren(), |
isClean()); |
uninterpretedOption_ = null; |
} |
return uninterpretedOptionBuilder_; |
} |
// @@protoc_insertion_point(builder_scope:google.protobuf.EnumOptions) |
} |
static { |
defaultInstance = new EnumOptions(true); |
defaultInstance.initFields(); |
} |
// @@protoc_insertion_point(class_scope:google.protobuf.EnumOptions) |
} |
public interface EnumValueOptionsOrBuilder extends |
com.google.protobuf.GeneratedMessage. |
ExtendableMessageOrBuilder<EnumValueOptions> { |
// repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; |
java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> |
getUninterpretedOptionList(); |
com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index); |
int getUninterpretedOptionCount(); |
java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> |
getUninterpretedOptionOrBuilderList(); |
com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder( |
int index); |
} |
public static final class EnumValueOptions extends |
com.google.protobuf.GeneratedMessage.ExtendableMessage< |
EnumValueOptions> implements EnumValueOptionsOrBuilder { |
// Use EnumValueOptions.newBuilder() to construct. |
private EnumValueOptions(Builder builder) { |
super(builder); |
} |
private EnumValueOptions(boolean noInit) {} |
private static final EnumValueOptions defaultInstance; |
public static EnumValueOptions getDefaultInstance() { |
return defaultInstance; |
} |
public EnumValueOptions getDefaultInstanceForType() { |
return defaultInstance; |
} |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumValueOptions_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumValueOptions_fieldAccessorTable; |
} |
// repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; |
public static final int UNINTERPRETED_OPTION_FIELD_NUMBER = 999; |
private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_; |
public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() { |
return uninterpretedOption_; |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> |
getUninterpretedOptionOrBuilderList() { |
return uninterpretedOption_; |
} |
public int getUninterpretedOptionCount() { |
return uninterpretedOption_.size(); |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) { |
return uninterpretedOption_.get(index); |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder( |
int index) { |
return uninterpretedOption_.get(index); |
} |
private void initFields() { |
uninterpretedOption_ = java.util.Collections.emptyList(); |
} |
private byte memoizedIsInitialized = -1; |
public final boolean isInitialized() { |
byte isInitialized = memoizedIsInitialized; |
if (isInitialized != -1) return isInitialized == 1; |
for (int i = 0; i < getUninterpretedOptionCount(); i++) { |
if (!getUninterpretedOption(i).isInitialized()) { |
memoizedIsInitialized = 0; |
return false; |
} |
} |
if (!extensionsAreInitialized()) { |
memoizedIsInitialized = 0; |
return false; |
} |
memoizedIsInitialized = 1; |
return true; |
} |
public void writeTo(com.google.protobuf.CodedOutputStream output) |
throws java.io.IOException { |
getSerializedSize(); |
com.google.protobuf.GeneratedMessage |
.ExtendableMessage<com.google.protobuf.DescriptorProtos.EnumValueOptions>.ExtensionWriter extensionWriter = |
newExtensionWriter(); |
for (int i = 0; i < uninterpretedOption_.size(); i++) { |
output.writeMessage(999, uninterpretedOption_.get(i)); |
} |
extensionWriter.writeUntil(536870912, output); |
getUnknownFields().writeTo(output); |
} |
private int memoizedSerializedSize = -1; |
public int getSerializedSize() { |
int size = memoizedSerializedSize; |
if (size != -1) return size; |
size = 0; |
for (int i = 0; i < uninterpretedOption_.size(); i++) { |
size += com.google.protobuf.CodedOutputStream |
.computeMessageSize(999, uninterpretedOption_.get(i)); |
} |
size += extensionsSerializedSize(); |
size += getUnknownFields().getSerializedSize(); |
memoizedSerializedSize = size; |
return size; |
} |
private static final long serialVersionUID = 0L; |
@java.lang.Override |
protected java.lang.Object writeReplace() |
throws java.io.ObjectStreamException { |
return super.writeReplace(); |
} |
public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom( |
com.google.protobuf.ByteString data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom( |
com.google.protobuf.ByteString data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom(byte[] data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom( |
byte[] data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom(java.io.InputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseDelimitedFrom(java.io.InputStream input) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseDelimitedFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input, extensionRegistry)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom( |
com.google.protobuf.CodedInputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.EnumValueOptions parseFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static Builder newBuilder() { return Builder.create(); } |
public Builder newBuilderForType() { return newBuilder(); } |
public static Builder newBuilder(com.google.protobuf.DescriptorProtos.EnumValueOptions prototype) { |
return newBuilder().mergeFrom(prototype); |
} |
public Builder toBuilder() { return newBuilder(this); } |
@java.lang.Override |
protected Builder newBuilderForType( |
com.google.protobuf.GeneratedMessage.BuilderParent parent) { |
Builder builder = new Builder(parent); |
return builder; |
} |
public static final class Builder extends |
com.google.protobuf.GeneratedMessage.ExtendableBuilder< |
com.google.protobuf.DescriptorProtos.EnumValueOptions, Builder> implements com.google.protobuf.DescriptorProtos.EnumValueOptionsOrBuilder { |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumValueOptions_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_EnumValueOptions_fieldAccessorTable; |
} |
// Construct using com.google.protobuf.DescriptorProtos.EnumValueOptions.newBuilder() |
private Builder() { |
maybeForceBuilderInitialization(); |
} |
private Builder(BuilderParent parent) { |
super(parent); |
maybeForceBuilderInitialization(); |
} |
private void maybeForceBuilderInitialization() { |
if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { |
getUninterpretedOptionFieldBuilder(); |
} |
} |
private static Builder create() { |
return new Builder(); |
} |
public Builder clear() { |
super.clear(); |
if (uninterpretedOptionBuilder_ == null) { |
uninterpretedOption_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000001); |
} else { |
uninterpretedOptionBuilder_.clear(); |
} |
return this; |
} |
public Builder clone() { |
return create().mergeFrom(buildPartial()); |
} |
public com.google.protobuf.Descriptors.Descriptor |
getDescriptorForType() { |
return com.google.protobuf.DescriptorProtos.EnumValueOptions.getDescriptor(); |
} |
public com.google.protobuf.DescriptorProtos.EnumValueOptions getDefaultInstanceForType() { |
return com.google.protobuf.DescriptorProtos.EnumValueOptions.getDefaultInstance(); |
} |
public com.google.protobuf.DescriptorProtos.EnumValueOptions build() { |
com.google.protobuf.DescriptorProtos.EnumValueOptions result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException(result); |
} |
return result; |
} |
private com.google.protobuf.DescriptorProtos.EnumValueOptions buildParsed() |
throws com.google.protobuf.InvalidProtocolBufferException { |
com.google.protobuf.DescriptorProtos.EnumValueOptions result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException( |
result).asInvalidProtocolBufferException(); |
} |
return result; |
} |
public com.google.protobuf.DescriptorProtos.EnumValueOptions buildPartial() { |
com.google.protobuf.DescriptorProtos.EnumValueOptions result = new com.google.protobuf.DescriptorProtos.EnumValueOptions(this); |
int from_bitField0_ = bitField0_; |
if (uninterpretedOptionBuilder_ == null) { |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
uninterpretedOption_ = java.util.Collections.unmodifiableList(uninterpretedOption_); |
bitField0_ = (bitField0_ & ~0x00000001); |
} |
result.uninterpretedOption_ = uninterpretedOption_; |
} else { |
result.uninterpretedOption_ = uninterpretedOptionBuilder_.build(); |
} |
onBuilt(); |
return result; |
} |
public Builder mergeFrom(com.google.protobuf.Message other) { |
if (other instanceof com.google.protobuf.DescriptorProtos.EnumValueOptions) { |
return mergeFrom((com.google.protobuf.DescriptorProtos.EnumValueOptions)other); |
} else { |
super.mergeFrom(other); |
return this; |
} |
} |
public Builder mergeFrom(com.google.protobuf.DescriptorProtos.EnumValueOptions other) { |
if (other == com.google.protobuf.DescriptorProtos.EnumValueOptions.getDefaultInstance()) return this; |
if (uninterpretedOptionBuilder_ == null) { |
if (!other.uninterpretedOption_.isEmpty()) { |
if (uninterpretedOption_.isEmpty()) { |
uninterpretedOption_ = other.uninterpretedOption_; |
bitField0_ = (bitField0_ & ~0x00000001); |
} else { |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.addAll(other.uninterpretedOption_); |
} |
onChanged(); |
} |
} else { |
if (!other.uninterpretedOption_.isEmpty()) { |
if (uninterpretedOptionBuilder_.isEmpty()) { |
uninterpretedOptionBuilder_.dispose(); |
uninterpretedOptionBuilder_ = null; |
uninterpretedOption_ = other.uninterpretedOption_; |
bitField0_ = (bitField0_ & ~0x00000001); |
uninterpretedOptionBuilder_ = |
com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? |
getUninterpretedOptionFieldBuilder() : null; |
} else { |
uninterpretedOptionBuilder_.addAllMessages(other.uninterpretedOption_); |
} |
} |
} |
this.mergeExtensionFields(other); |
this.mergeUnknownFields(other.getUnknownFields()); |
return this; |
} |
public final boolean isInitialized() { |
for (int i = 0; i < getUninterpretedOptionCount(); i++) { |
if (!getUninterpretedOption(i).isInitialized()) { |
return false; |
} |
} |
if (!extensionsAreInitialized()) { |
return false; |
} |
return true; |
} |
public Builder mergeFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
com.google.protobuf.UnknownFieldSet.Builder unknownFields = |
com.google.protobuf.UnknownFieldSet.newBuilder( |
this.getUnknownFields()); |
while (true) { |
int tag = input.readTag(); |
switch (tag) { |
case 0: |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
default: { |
if (!parseUnknownField(input, unknownFields, |
extensionRegistry, tag)) { |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
} |
break; |
} |
case 7994: { |
com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder subBuilder = com.google.protobuf.DescriptorProtos.UninterpretedOption.newBuilder(); |
input.readMessage(subBuilder, extensionRegistry); |
addUninterpretedOption(subBuilder.buildPartial()); |
break; |
} |
} |
} |
} |
private int bitField0_; |
// repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; |
private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_ = |
java.util.Collections.emptyList(); |
private void ensureUninterpretedOptionIsMutable() { |
if (!((bitField0_ & 0x00000001) == 0x00000001)) { |
uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>(uninterpretedOption_); |
bitField0_ |= 0x00000001; |
} |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> uninterpretedOptionBuilder_; |
public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() { |
if (uninterpretedOptionBuilder_ == null) { |
return java.util.Collections.unmodifiableList(uninterpretedOption_); |
} else { |
return uninterpretedOptionBuilder_.getMessageList(); |
} |
} |
public int getUninterpretedOptionCount() { |
if (uninterpretedOptionBuilder_ == null) { |
return uninterpretedOption_.size(); |
} else { |
return uninterpretedOptionBuilder_.getCount(); |
} |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) { |
if (uninterpretedOptionBuilder_ == null) { |
return uninterpretedOption_.get(index); |
} else { |
return uninterpretedOptionBuilder_.getMessage(index); |
} |
} |
public Builder setUninterpretedOption( |
int index, com.google.protobuf.DescriptorProtos.UninterpretedOption value) { |
if (uninterpretedOptionBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.set(index, value); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.setMessage(index, value); |
} |
return this; |
} |
public Builder setUninterpretedOption( |
int index, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) { |
if (uninterpretedOptionBuilder_ == null) { |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.set(index, builderForValue.build()); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.setMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addUninterpretedOption(com.google.protobuf.DescriptorProtos.UninterpretedOption value) { |
if (uninterpretedOptionBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.add(value); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.addMessage(value); |
} |
return this; |
} |
public Builder addUninterpretedOption( |
int index, com.google.protobuf.DescriptorProtos.UninterpretedOption value) { |
if (uninterpretedOptionBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.add(index, value); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.addMessage(index, value); |
} |
return this; |
} |
public Builder addUninterpretedOption( |
com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) { |
if (uninterpretedOptionBuilder_ == null) { |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.add(builderForValue.build()); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.addMessage(builderForValue.build()); |
} |
return this; |
} |
public Builder addUninterpretedOption( |
int index, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) { |
if (uninterpretedOptionBuilder_ == null) { |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.add(index, builderForValue.build()); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.addMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addAllUninterpretedOption( |
java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.UninterpretedOption> values) { |
if (uninterpretedOptionBuilder_ == null) { |
ensureUninterpretedOptionIsMutable(); |
super.addAll(values, uninterpretedOption_); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.addAllMessages(values); |
} |
return this; |
} |
public Builder clearUninterpretedOption() { |
if (uninterpretedOptionBuilder_ == null) { |
uninterpretedOption_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000001); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.clear(); |
} |
return this; |
} |
public Builder removeUninterpretedOption(int index) { |
if (uninterpretedOptionBuilder_ == null) { |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.remove(index); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.remove(index); |
} |
return this; |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder getUninterpretedOptionBuilder( |
int index) { |
return getUninterpretedOptionFieldBuilder().getBuilder(index); |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder( |
int index) { |
if (uninterpretedOptionBuilder_ == null) { |
return uninterpretedOption_.get(index); } else { |
return uninterpretedOptionBuilder_.getMessageOrBuilder(index); |
} |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> |
getUninterpretedOptionOrBuilderList() { |
if (uninterpretedOptionBuilder_ != null) { |
return uninterpretedOptionBuilder_.getMessageOrBuilderList(); |
} else { |
return java.util.Collections.unmodifiableList(uninterpretedOption_); |
} |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder() { |
return getUninterpretedOptionFieldBuilder().addBuilder( |
com.google.protobuf.DescriptorProtos.UninterpretedOption.getDefaultInstance()); |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder( |
int index) { |
return getUninterpretedOptionFieldBuilder().addBuilder( |
index, com.google.protobuf.DescriptorProtos.UninterpretedOption.getDefaultInstance()); |
} |
public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder> |
getUninterpretedOptionBuilderList() { |
return getUninterpretedOptionFieldBuilder().getBuilderList(); |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> |
getUninterpretedOptionFieldBuilder() { |
if (uninterpretedOptionBuilder_ == null) { |
uninterpretedOptionBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>( |
uninterpretedOption_, |
((bitField0_ & 0x00000001) == 0x00000001), |
getParentForChildren(), |
isClean()); |
uninterpretedOption_ = null; |
} |
return uninterpretedOptionBuilder_; |
} |
// @@protoc_insertion_point(builder_scope:google.protobuf.EnumValueOptions) |
} |
static { |
defaultInstance = new EnumValueOptions(true); |
defaultInstance.initFields(); |
} |
// @@protoc_insertion_point(class_scope:google.protobuf.EnumValueOptions) |
} |
public interface ServiceOptionsOrBuilder extends |
com.google.protobuf.GeneratedMessage. |
ExtendableMessageOrBuilder<ServiceOptions> { |
// repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; |
java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> |
getUninterpretedOptionList(); |
com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index); |
int getUninterpretedOptionCount(); |
java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> |
getUninterpretedOptionOrBuilderList(); |
com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder( |
int index); |
} |
public static final class ServiceOptions extends |
com.google.protobuf.GeneratedMessage.ExtendableMessage< |
ServiceOptions> implements ServiceOptionsOrBuilder { |
// Use ServiceOptions.newBuilder() to construct. |
private ServiceOptions(Builder builder) { |
super(builder); |
} |
private ServiceOptions(boolean noInit) {} |
private static final ServiceOptions defaultInstance; |
public static ServiceOptions getDefaultInstance() { |
return defaultInstance; |
} |
public ServiceOptions getDefaultInstanceForType() { |
return defaultInstance; |
} |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ServiceOptions_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ServiceOptions_fieldAccessorTable; |
} |
// repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; |
public static final int UNINTERPRETED_OPTION_FIELD_NUMBER = 999; |
private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_; |
public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() { |
return uninterpretedOption_; |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> |
getUninterpretedOptionOrBuilderList() { |
return uninterpretedOption_; |
} |
public int getUninterpretedOptionCount() { |
return uninterpretedOption_.size(); |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) { |
return uninterpretedOption_.get(index); |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder( |
int index) { |
return uninterpretedOption_.get(index); |
} |
private void initFields() { |
uninterpretedOption_ = java.util.Collections.emptyList(); |
} |
private byte memoizedIsInitialized = -1; |
public final boolean isInitialized() { |
byte isInitialized = memoizedIsInitialized; |
if (isInitialized != -1) return isInitialized == 1; |
for (int i = 0; i < getUninterpretedOptionCount(); i++) { |
if (!getUninterpretedOption(i).isInitialized()) { |
memoizedIsInitialized = 0; |
return false; |
} |
} |
if (!extensionsAreInitialized()) { |
memoizedIsInitialized = 0; |
return false; |
} |
memoizedIsInitialized = 1; |
return true; |
} |
public void writeTo(com.google.protobuf.CodedOutputStream output) |
throws java.io.IOException { |
getSerializedSize(); |
com.google.protobuf.GeneratedMessage |
.ExtendableMessage<com.google.protobuf.DescriptorProtos.ServiceOptions>.ExtensionWriter extensionWriter = |
newExtensionWriter(); |
for (int i = 0; i < uninterpretedOption_.size(); i++) { |
output.writeMessage(999, uninterpretedOption_.get(i)); |
} |
extensionWriter.writeUntil(536870912, output); |
getUnknownFields().writeTo(output); |
} |
private int memoizedSerializedSize = -1; |
public int getSerializedSize() { |
int size = memoizedSerializedSize; |
if (size != -1) return size; |
size = 0; |
for (int i = 0; i < uninterpretedOption_.size(); i++) { |
size += com.google.protobuf.CodedOutputStream |
.computeMessageSize(999, uninterpretedOption_.get(i)); |
} |
size += extensionsSerializedSize(); |
size += getUnknownFields().getSerializedSize(); |
memoizedSerializedSize = size; |
return size; |
} |
private static final long serialVersionUID = 0L; |
@java.lang.Override |
protected java.lang.Object writeReplace() |
throws java.io.ObjectStreamException { |
return super.writeReplace(); |
} |
public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom( |
com.google.protobuf.ByteString data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom( |
com.google.protobuf.ByteString data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom(byte[] data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom( |
byte[] data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom(java.io.InputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.ServiceOptions parseDelimitedFrom(java.io.InputStream input) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.ServiceOptions parseDelimitedFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input, extensionRegistry)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom( |
com.google.protobuf.CodedInputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.ServiceOptions parseFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static Builder newBuilder() { return Builder.create(); } |
public Builder newBuilderForType() { return newBuilder(); } |
public static Builder newBuilder(com.google.protobuf.DescriptorProtos.ServiceOptions prototype) { |
return newBuilder().mergeFrom(prototype); |
} |
public Builder toBuilder() { return newBuilder(this); } |
@java.lang.Override |
protected Builder newBuilderForType( |
com.google.protobuf.GeneratedMessage.BuilderParent parent) { |
Builder builder = new Builder(parent); |
return builder; |
} |
public static final class Builder extends |
com.google.protobuf.GeneratedMessage.ExtendableBuilder< |
com.google.protobuf.DescriptorProtos.ServiceOptions, Builder> implements com.google.protobuf.DescriptorProtos.ServiceOptionsOrBuilder { |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ServiceOptions_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_ServiceOptions_fieldAccessorTable; |
} |
// Construct using com.google.protobuf.DescriptorProtos.ServiceOptions.newBuilder() |
private Builder() { |
maybeForceBuilderInitialization(); |
} |
private Builder(BuilderParent parent) { |
super(parent); |
maybeForceBuilderInitialization(); |
} |
private void maybeForceBuilderInitialization() { |
if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { |
getUninterpretedOptionFieldBuilder(); |
} |
} |
private static Builder create() { |
return new Builder(); |
} |
public Builder clear() { |
super.clear(); |
if (uninterpretedOptionBuilder_ == null) { |
uninterpretedOption_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000001); |
} else { |
uninterpretedOptionBuilder_.clear(); |
} |
return this; |
} |
public Builder clone() { |
return create().mergeFrom(buildPartial()); |
} |
public com.google.protobuf.Descriptors.Descriptor |
getDescriptorForType() { |
return com.google.protobuf.DescriptorProtos.ServiceOptions.getDescriptor(); |
} |
public com.google.protobuf.DescriptorProtos.ServiceOptions getDefaultInstanceForType() { |
return com.google.protobuf.DescriptorProtos.ServiceOptions.getDefaultInstance(); |
} |
public com.google.protobuf.DescriptorProtos.ServiceOptions build() { |
com.google.protobuf.DescriptorProtos.ServiceOptions result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException(result); |
} |
return result; |
} |
private com.google.protobuf.DescriptorProtos.ServiceOptions buildParsed() |
throws com.google.protobuf.InvalidProtocolBufferException { |
com.google.protobuf.DescriptorProtos.ServiceOptions result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException( |
result).asInvalidProtocolBufferException(); |
} |
return result; |
} |
public com.google.protobuf.DescriptorProtos.ServiceOptions buildPartial() { |
com.google.protobuf.DescriptorProtos.ServiceOptions result = new com.google.protobuf.DescriptorProtos.ServiceOptions(this); |
int from_bitField0_ = bitField0_; |
if (uninterpretedOptionBuilder_ == null) { |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
uninterpretedOption_ = java.util.Collections.unmodifiableList(uninterpretedOption_); |
bitField0_ = (bitField0_ & ~0x00000001); |
} |
result.uninterpretedOption_ = uninterpretedOption_; |
} else { |
result.uninterpretedOption_ = uninterpretedOptionBuilder_.build(); |
} |
onBuilt(); |
return result; |
} |
public Builder mergeFrom(com.google.protobuf.Message other) { |
if (other instanceof com.google.protobuf.DescriptorProtos.ServiceOptions) { |
return mergeFrom((com.google.protobuf.DescriptorProtos.ServiceOptions)other); |
} else { |
super.mergeFrom(other); |
return this; |
} |
} |
public Builder mergeFrom(com.google.protobuf.DescriptorProtos.ServiceOptions other) { |
if (other == com.google.protobuf.DescriptorProtos.ServiceOptions.getDefaultInstance()) return this; |
if (uninterpretedOptionBuilder_ == null) { |
if (!other.uninterpretedOption_.isEmpty()) { |
if (uninterpretedOption_.isEmpty()) { |
uninterpretedOption_ = other.uninterpretedOption_; |
bitField0_ = (bitField0_ & ~0x00000001); |
} else { |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.addAll(other.uninterpretedOption_); |
} |
onChanged(); |
} |
} else { |
if (!other.uninterpretedOption_.isEmpty()) { |
if (uninterpretedOptionBuilder_.isEmpty()) { |
uninterpretedOptionBuilder_.dispose(); |
uninterpretedOptionBuilder_ = null; |
uninterpretedOption_ = other.uninterpretedOption_; |
bitField0_ = (bitField0_ & ~0x00000001); |
uninterpretedOptionBuilder_ = |
com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? |
getUninterpretedOptionFieldBuilder() : null; |
} else { |
uninterpretedOptionBuilder_.addAllMessages(other.uninterpretedOption_); |
} |
} |
} |
this.mergeExtensionFields(other); |
this.mergeUnknownFields(other.getUnknownFields()); |
return this; |
} |
public final boolean isInitialized() { |
for (int i = 0; i < getUninterpretedOptionCount(); i++) { |
if (!getUninterpretedOption(i).isInitialized()) { |
return false; |
} |
} |
if (!extensionsAreInitialized()) { |
return false; |
} |
return true; |
} |
public Builder mergeFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
com.google.protobuf.UnknownFieldSet.Builder unknownFields = |
com.google.protobuf.UnknownFieldSet.newBuilder( |
this.getUnknownFields()); |
while (true) { |
int tag = input.readTag(); |
switch (tag) { |
case 0: |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
default: { |
if (!parseUnknownField(input, unknownFields, |
extensionRegistry, tag)) { |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
} |
break; |
} |
case 7994: { |
com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder subBuilder = com.google.protobuf.DescriptorProtos.UninterpretedOption.newBuilder(); |
input.readMessage(subBuilder, extensionRegistry); |
addUninterpretedOption(subBuilder.buildPartial()); |
break; |
} |
} |
} |
} |
private int bitField0_; |
// repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; |
private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_ = |
java.util.Collections.emptyList(); |
private void ensureUninterpretedOptionIsMutable() { |
if (!((bitField0_ & 0x00000001) == 0x00000001)) { |
uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>(uninterpretedOption_); |
bitField0_ |= 0x00000001; |
} |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> uninterpretedOptionBuilder_; |
public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() { |
if (uninterpretedOptionBuilder_ == null) { |
return java.util.Collections.unmodifiableList(uninterpretedOption_); |
} else { |
return uninterpretedOptionBuilder_.getMessageList(); |
} |
} |
public int getUninterpretedOptionCount() { |
if (uninterpretedOptionBuilder_ == null) { |
return uninterpretedOption_.size(); |
} else { |
return uninterpretedOptionBuilder_.getCount(); |
} |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) { |
if (uninterpretedOptionBuilder_ == null) { |
return uninterpretedOption_.get(index); |
} else { |
return uninterpretedOptionBuilder_.getMessage(index); |
} |
} |
public Builder setUninterpretedOption( |
int index, com.google.protobuf.DescriptorProtos.UninterpretedOption value) { |
if (uninterpretedOptionBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.set(index, value); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.setMessage(index, value); |
} |
return this; |
} |
public Builder setUninterpretedOption( |
int index, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) { |
if (uninterpretedOptionBuilder_ == null) { |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.set(index, builderForValue.build()); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.setMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addUninterpretedOption(com.google.protobuf.DescriptorProtos.UninterpretedOption value) { |
if (uninterpretedOptionBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.add(value); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.addMessage(value); |
} |
return this; |
} |
public Builder addUninterpretedOption( |
int index, com.google.protobuf.DescriptorProtos.UninterpretedOption value) { |
if (uninterpretedOptionBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.add(index, value); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.addMessage(index, value); |
} |
return this; |
} |
public Builder addUninterpretedOption( |
com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) { |
if (uninterpretedOptionBuilder_ == null) { |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.add(builderForValue.build()); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.addMessage(builderForValue.build()); |
} |
return this; |
} |
public Builder addUninterpretedOption( |
int index, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) { |
if (uninterpretedOptionBuilder_ == null) { |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.add(index, builderForValue.build()); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.addMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addAllUninterpretedOption( |
java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.UninterpretedOption> values) { |
if (uninterpretedOptionBuilder_ == null) { |
ensureUninterpretedOptionIsMutable(); |
super.addAll(values, uninterpretedOption_); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.addAllMessages(values); |
} |
return this; |
} |
public Builder clearUninterpretedOption() { |
if (uninterpretedOptionBuilder_ == null) { |
uninterpretedOption_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000001); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.clear(); |
} |
return this; |
} |
public Builder removeUninterpretedOption(int index) { |
if (uninterpretedOptionBuilder_ == null) { |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.remove(index); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.remove(index); |
} |
return this; |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder getUninterpretedOptionBuilder( |
int index) { |
return getUninterpretedOptionFieldBuilder().getBuilder(index); |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder( |
int index) { |
if (uninterpretedOptionBuilder_ == null) { |
return uninterpretedOption_.get(index); } else { |
return uninterpretedOptionBuilder_.getMessageOrBuilder(index); |
} |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> |
getUninterpretedOptionOrBuilderList() { |
if (uninterpretedOptionBuilder_ != null) { |
return uninterpretedOptionBuilder_.getMessageOrBuilderList(); |
} else { |
return java.util.Collections.unmodifiableList(uninterpretedOption_); |
} |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder() { |
return getUninterpretedOptionFieldBuilder().addBuilder( |
com.google.protobuf.DescriptorProtos.UninterpretedOption.getDefaultInstance()); |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder( |
int index) { |
return getUninterpretedOptionFieldBuilder().addBuilder( |
index, com.google.protobuf.DescriptorProtos.UninterpretedOption.getDefaultInstance()); |
} |
public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder> |
getUninterpretedOptionBuilderList() { |
return getUninterpretedOptionFieldBuilder().getBuilderList(); |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> |
getUninterpretedOptionFieldBuilder() { |
if (uninterpretedOptionBuilder_ == null) { |
uninterpretedOptionBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>( |
uninterpretedOption_, |
((bitField0_ & 0x00000001) == 0x00000001), |
getParentForChildren(), |
isClean()); |
uninterpretedOption_ = null; |
} |
return uninterpretedOptionBuilder_; |
} |
// @@protoc_insertion_point(builder_scope:google.protobuf.ServiceOptions) |
} |
static { |
defaultInstance = new ServiceOptions(true); |
defaultInstance.initFields(); |
} |
// @@protoc_insertion_point(class_scope:google.protobuf.ServiceOptions) |
} |
public interface MethodOptionsOrBuilder extends |
com.google.protobuf.GeneratedMessage. |
ExtendableMessageOrBuilder<MethodOptions> { |
// repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; |
java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> |
getUninterpretedOptionList(); |
com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index); |
int getUninterpretedOptionCount(); |
java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> |
getUninterpretedOptionOrBuilderList(); |
com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder( |
int index); |
} |
public static final class MethodOptions extends |
com.google.protobuf.GeneratedMessage.ExtendableMessage< |
MethodOptions> implements MethodOptionsOrBuilder { |
// Use MethodOptions.newBuilder() to construct. |
private MethodOptions(Builder builder) { |
super(builder); |
} |
private MethodOptions(boolean noInit) {} |
private static final MethodOptions defaultInstance; |
public static MethodOptions getDefaultInstance() { |
return defaultInstance; |
} |
public MethodOptions getDefaultInstanceForType() { |
return defaultInstance; |
} |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_MethodOptions_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_MethodOptions_fieldAccessorTable; |
} |
// repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; |
public static final int UNINTERPRETED_OPTION_FIELD_NUMBER = 999; |
private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_; |
public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() { |
return uninterpretedOption_; |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> |
getUninterpretedOptionOrBuilderList() { |
return uninterpretedOption_; |
} |
public int getUninterpretedOptionCount() { |
return uninterpretedOption_.size(); |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) { |
return uninterpretedOption_.get(index); |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder( |
int index) { |
return uninterpretedOption_.get(index); |
} |
private void initFields() { |
uninterpretedOption_ = java.util.Collections.emptyList(); |
} |
private byte memoizedIsInitialized = -1; |
public final boolean isInitialized() { |
byte isInitialized = memoizedIsInitialized; |
if (isInitialized != -1) return isInitialized == 1; |
for (int i = 0; i < getUninterpretedOptionCount(); i++) { |
if (!getUninterpretedOption(i).isInitialized()) { |
memoizedIsInitialized = 0; |
return false; |
} |
} |
if (!extensionsAreInitialized()) { |
memoizedIsInitialized = 0; |
return false; |
} |
memoizedIsInitialized = 1; |
return true; |
} |
public void writeTo(com.google.protobuf.CodedOutputStream output) |
throws java.io.IOException { |
getSerializedSize(); |
com.google.protobuf.GeneratedMessage |
.ExtendableMessage<com.google.protobuf.DescriptorProtos.MethodOptions>.ExtensionWriter extensionWriter = |
newExtensionWriter(); |
for (int i = 0; i < uninterpretedOption_.size(); i++) { |
output.writeMessage(999, uninterpretedOption_.get(i)); |
} |
extensionWriter.writeUntil(536870912, output); |
getUnknownFields().writeTo(output); |
} |
private int memoizedSerializedSize = -1; |
public int getSerializedSize() { |
int size = memoizedSerializedSize; |
if (size != -1) return size; |
size = 0; |
for (int i = 0; i < uninterpretedOption_.size(); i++) { |
size += com.google.protobuf.CodedOutputStream |
.computeMessageSize(999, uninterpretedOption_.get(i)); |
} |
size += extensionsSerializedSize(); |
size += getUnknownFields().getSerializedSize(); |
memoizedSerializedSize = size; |
return size; |
} |
private static final long serialVersionUID = 0L; |
@java.lang.Override |
protected java.lang.Object writeReplace() |
throws java.io.ObjectStreamException { |
return super.writeReplace(); |
} |
public static com.google.protobuf.DescriptorProtos.MethodOptions parseFrom( |
com.google.protobuf.ByteString data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.MethodOptions parseFrom( |
com.google.protobuf.ByteString data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.MethodOptions parseFrom(byte[] data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.MethodOptions parseFrom( |
byte[] data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.MethodOptions parseFrom(java.io.InputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.MethodOptions parseFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.MethodOptions parseDelimitedFrom(java.io.InputStream input) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.MethodOptions parseDelimitedFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input, extensionRegistry)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.MethodOptions parseFrom( |
com.google.protobuf.CodedInputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.MethodOptions parseFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static Builder newBuilder() { return Builder.create(); } |
public Builder newBuilderForType() { return newBuilder(); } |
public static Builder newBuilder(com.google.protobuf.DescriptorProtos.MethodOptions prototype) { |
return newBuilder().mergeFrom(prototype); |
} |
public Builder toBuilder() { return newBuilder(this); } |
@java.lang.Override |
protected Builder newBuilderForType( |
com.google.protobuf.GeneratedMessage.BuilderParent parent) { |
Builder builder = new Builder(parent); |
return builder; |
} |
public static final class Builder extends |
com.google.protobuf.GeneratedMessage.ExtendableBuilder< |
com.google.protobuf.DescriptorProtos.MethodOptions, Builder> implements com.google.protobuf.DescriptorProtos.MethodOptionsOrBuilder { |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_MethodOptions_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_MethodOptions_fieldAccessorTable; |
} |
// Construct using com.google.protobuf.DescriptorProtos.MethodOptions.newBuilder() |
private Builder() { |
maybeForceBuilderInitialization(); |
} |
private Builder(BuilderParent parent) { |
super(parent); |
maybeForceBuilderInitialization(); |
} |
private void maybeForceBuilderInitialization() { |
if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { |
getUninterpretedOptionFieldBuilder(); |
} |
} |
private static Builder create() { |
return new Builder(); |
} |
public Builder clear() { |
super.clear(); |
if (uninterpretedOptionBuilder_ == null) { |
uninterpretedOption_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000001); |
} else { |
uninterpretedOptionBuilder_.clear(); |
} |
return this; |
} |
public Builder clone() { |
return create().mergeFrom(buildPartial()); |
} |
public com.google.protobuf.Descriptors.Descriptor |
getDescriptorForType() { |
return com.google.protobuf.DescriptorProtos.MethodOptions.getDescriptor(); |
} |
public com.google.protobuf.DescriptorProtos.MethodOptions getDefaultInstanceForType() { |
return com.google.protobuf.DescriptorProtos.MethodOptions.getDefaultInstance(); |
} |
public com.google.protobuf.DescriptorProtos.MethodOptions build() { |
com.google.protobuf.DescriptorProtos.MethodOptions result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException(result); |
} |
return result; |
} |
private com.google.protobuf.DescriptorProtos.MethodOptions buildParsed() |
throws com.google.protobuf.InvalidProtocolBufferException { |
com.google.protobuf.DescriptorProtos.MethodOptions result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException( |
result).asInvalidProtocolBufferException(); |
} |
return result; |
} |
public com.google.protobuf.DescriptorProtos.MethodOptions buildPartial() { |
com.google.protobuf.DescriptorProtos.MethodOptions result = new com.google.protobuf.DescriptorProtos.MethodOptions(this); |
int from_bitField0_ = bitField0_; |
if (uninterpretedOptionBuilder_ == null) { |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
uninterpretedOption_ = java.util.Collections.unmodifiableList(uninterpretedOption_); |
bitField0_ = (bitField0_ & ~0x00000001); |
} |
result.uninterpretedOption_ = uninterpretedOption_; |
} else { |
result.uninterpretedOption_ = uninterpretedOptionBuilder_.build(); |
} |
onBuilt(); |
return result; |
} |
public Builder mergeFrom(com.google.protobuf.Message other) { |
if (other instanceof com.google.protobuf.DescriptorProtos.MethodOptions) { |
return mergeFrom((com.google.protobuf.DescriptorProtos.MethodOptions)other); |
} else { |
super.mergeFrom(other); |
return this; |
} |
} |
public Builder mergeFrom(com.google.protobuf.DescriptorProtos.MethodOptions other) { |
if (other == com.google.protobuf.DescriptorProtos.MethodOptions.getDefaultInstance()) return this; |
if (uninterpretedOptionBuilder_ == null) { |
if (!other.uninterpretedOption_.isEmpty()) { |
if (uninterpretedOption_.isEmpty()) { |
uninterpretedOption_ = other.uninterpretedOption_; |
bitField0_ = (bitField0_ & ~0x00000001); |
} else { |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.addAll(other.uninterpretedOption_); |
} |
onChanged(); |
} |
} else { |
if (!other.uninterpretedOption_.isEmpty()) { |
if (uninterpretedOptionBuilder_.isEmpty()) { |
uninterpretedOptionBuilder_.dispose(); |
uninterpretedOptionBuilder_ = null; |
uninterpretedOption_ = other.uninterpretedOption_; |
bitField0_ = (bitField0_ & ~0x00000001); |
uninterpretedOptionBuilder_ = |
com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? |
getUninterpretedOptionFieldBuilder() : null; |
} else { |
uninterpretedOptionBuilder_.addAllMessages(other.uninterpretedOption_); |
} |
} |
} |
this.mergeExtensionFields(other); |
this.mergeUnknownFields(other.getUnknownFields()); |
return this; |
} |
public final boolean isInitialized() { |
for (int i = 0; i < getUninterpretedOptionCount(); i++) { |
if (!getUninterpretedOption(i).isInitialized()) { |
return false; |
} |
} |
if (!extensionsAreInitialized()) { |
return false; |
} |
return true; |
} |
public Builder mergeFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
com.google.protobuf.UnknownFieldSet.Builder unknownFields = |
com.google.protobuf.UnknownFieldSet.newBuilder( |
this.getUnknownFields()); |
while (true) { |
int tag = input.readTag(); |
switch (tag) { |
case 0: |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
default: { |
if (!parseUnknownField(input, unknownFields, |
extensionRegistry, tag)) { |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
} |
break; |
} |
case 7994: { |
com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder subBuilder = com.google.protobuf.DescriptorProtos.UninterpretedOption.newBuilder(); |
input.readMessage(subBuilder, extensionRegistry); |
addUninterpretedOption(subBuilder.buildPartial()); |
break; |
} |
} |
} |
} |
private int bitField0_; |
// repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999; |
private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_ = |
java.util.Collections.emptyList(); |
private void ensureUninterpretedOptionIsMutable() { |
if (!((bitField0_ & 0x00000001) == 0x00000001)) { |
uninterpretedOption_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption>(uninterpretedOption_); |
bitField0_ |= 0x00000001; |
} |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> uninterpretedOptionBuilder_; |
public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption> getUninterpretedOptionList() { |
if (uninterpretedOptionBuilder_ == null) { |
return java.util.Collections.unmodifiableList(uninterpretedOption_); |
} else { |
return uninterpretedOptionBuilder_.getMessageList(); |
} |
} |
public int getUninterpretedOptionCount() { |
if (uninterpretedOptionBuilder_ == null) { |
return uninterpretedOption_.size(); |
} else { |
return uninterpretedOptionBuilder_.getCount(); |
} |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption getUninterpretedOption(int index) { |
if (uninterpretedOptionBuilder_ == null) { |
return uninterpretedOption_.get(index); |
} else { |
return uninterpretedOptionBuilder_.getMessage(index); |
} |
} |
public Builder setUninterpretedOption( |
int index, com.google.protobuf.DescriptorProtos.UninterpretedOption value) { |
if (uninterpretedOptionBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.set(index, value); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.setMessage(index, value); |
} |
return this; |
} |
public Builder setUninterpretedOption( |
int index, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) { |
if (uninterpretedOptionBuilder_ == null) { |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.set(index, builderForValue.build()); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.setMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addUninterpretedOption(com.google.protobuf.DescriptorProtos.UninterpretedOption value) { |
if (uninterpretedOptionBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.add(value); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.addMessage(value); |
} |
return this; |
} |
public Builder addUninterpretedOption( |
int index, com.google.protobuf.DescriptorProtos.UninterpretedOption value) { |
if (uninterpretedOptionBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.add(index, value); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.addMessage(index, value); |
} |
return this; |
} |
public Builder addUninterpretedOption( |
com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) { |
if (uninterpretedOptionBuilder_ == null) { |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.add(builderForValue.build()); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.addMessage(builderForValue.build()); |
} |
return this; |
} |
public Builder addUninterpretedOption( |
int index, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder builderForValue) { |
if (uninterpretedOptionBuilder_ == null) { |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.add(index, builderForValue.build()); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.addMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addAllUninterpretedOption( |
java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.UninterpretedOption> values) { |
if (uninterpretedOptionBuilder_ == null) { |
ensureUninterpretedOptionIsMutable(); |
super.addAll(values, uninterpretedOption_); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.addAllMessages(values); |
} |
return this; |
} |
public Builder clearUninterpretedOption() { |
if (uninterpretedOptionBuilder_ == null) { |
uninterpretedOption_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000001); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.clear(); |
} |
return this; |
} |
public Builder removeUninterpretedOption(int index) { |
if (uninterpretedOptionBuilder_ == null) { |
ensureUninterpretedOptionIsMutable(); |
uninterpretedOption_.remove(index); |
onChanged(); |
} else { |
uninterpretedOptionBuilder_.remove(index); |
} |
return this; |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder getUninterpretedOptionBuilder( |
int index) { |
return getUninterpretedOptionFieldBuilder().getBuilder(index); |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder getUninterpretedOptionOrBuilder( |
int index) { |
if (uninterpretedOptionBuilder_ == null) { |
return uninterpretedOption_.get(index); } else { |
return uninterpretedOptionBuilder_.getMessageOrBuilder(index); |
} |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> |
getUninterpretedOptionOrBuilderList() { |
if (uninterpretedOptionBuilder_ != null) { |
return uninterpretedOptionBuilder_.getMessageOrBuilderList(); |
} else { |
return java.util.Collections.unmodifiableList(uninterpretedOption_); |
} |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder() { |
return getUninterpretedOptionFieldBuilder().addBuilder( |
com.google.protobuf.DescriptorProtos.UninterpretedOption.getDefaultInstance()); |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder addUninterpretedOptionBuilder( |
int index) { |
return getUninterpretedOptionFieldBuilder().addBuilder( |
index, com.google.protobuf.DescriptorProtos.UninterpretedOption.getDefaultInstance()); |
} |
public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder> |
getUninterpretedOptionBuilderList() { |
return getUninterpretedOptionFieldBuilder().getBuilderList(); |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder> |
getUninterpretedOptionFieldBuilder() { |
if (uninterpretedOptionBuilder_ == null) { |
uninterpretedOptionBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.UninterpretedOption, com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder>( |
uninterpretedOption_, |
((bitField0_ & 0x00000001) == 0x00000001), |
getParentForChildren(), |
isClean()); |
uninterpretedOption_ = null; |
} |
return uninterpretedOptionBuilder_; |
} |
// @@protoc_insertion_point(builder_scope:google.protobuf.MethodOptions) |
} |
static { |
defaultInstance = new MethodOptions(true); |
defaultInstance.initFields(); |
} |
// @@protoc_insertion_point(class_scope:google.protobuf.MethodOptions) |
} |
public interface UninterpretedOptionOrBuilder |
extends com.google.protobuf.MessageOrBuilder { |
// repeated .google.protobuf.UninterpretedOption.NamePart name = 2; |
java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart> |
getNameList(); |
com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart getName(int index); |
int getNameCount(); |
java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePartOrBuilder> |
getNameOrBuilderList(); |
com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePartOrBuilder getNameOrBuilder( |
int index); |
// optional string identifier_value = 3; |
boolean hasIdentifierValue(); |
String getIdentifierValue(); |
// optional uint64 positive_int_value = 4; |
boolean hasPositiveIntValue(); |
long getPositiveIntValue(); |
// optional int64 negative_int_value = 5; |
boolean hasNegativeIntValue(); |
long getNegativeIntValue(); |
// optional double double_value = 6; |
boolean hasDoubleValue(); |
double getDoubleValue(); |
// optional bytes string_value = 7; |
boolean hasStringValue(); |
com.google.protobuf.ByteString getStringValue(); |
// optional string aggregate_value = 8; |
boolean hasAggregateValue(); |
String getAggregateValue(); |
} |
public static final class UninterpretedOption extends |
com.google.protobuf.GeneratedMessage |
implements UninterpretedOptionOrBuilder { |
// Use UninterpretedOption.newBuilder() to construct. |
private UninterpretedOption(Builder builder) { |
super(builder); |
} |
private UninterpretedOption(boolean noInit) {} |
private static final UninterpretedOption defaultInstance; |
public static UninterpretedOption getDefaultInstance() { |
return defaultInstance; |
} |
public UninterpretedOption getDefaultInstanceForType() { |
return defaultInstance; |
} |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_UninterpretedOption_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_UninterpretedOption_fieldAccessorTable; |
} |
public interface NamePartOrBuilder |
extends com.google.protobuf.MessageOrBuilder { |
// required string name_part = 1; |
boolean hasNamePart(); |
String getNamePart(); |
// required bool is_extension = 2; |
boolean hasIsExtension(); |
boolean getIsExtension(); |
} |
public static final class NamePart extends |
com.google.protobuf.GeneratedMessage |
implements NamePartOrBuilder { |
// Use NamePart.newBuilder() to construct. |
private NamePart(Builder builder) { |
super(builder); |
} |
private NamePart(boolean noInit) {} |
private static final NamePart defaultInstance; |
public static NamePart getDefaultInstance() { |
return defaultInstance; |
} |
public NamePart getDefaultInstanceForType() { |
return defaultInstance; |
} |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_UninterpretedOption_NamePart_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_UninterpretedOption_NamePart_fieldAccessorTable; |
} |
private int bitField0_; |
// required string name_part = 1; |
public static final int NAME_PART_FIELD_NUMBER = 1; |
private java.lang.Object namePart_; |
public boolean hasNamePart() { |
return ((bitField0_ & 0x00000001) == 0x00000001); |
} |
public String getNamePart() { |
java.lang.Object ref = namePart_; |
if (ref instanceof String) { |
return (String) ref; |
} else { |
com.google.protobuf.ByteString bs = |
(com.google.protobuf.ByteString) ref; |
String s = bs.toStringUtf8(); |
if (com.google.protobuf.Internal.isValidUtf8(bs)) { |
namePart_ = s; |
} |
return s; |
} |
} |
private com.google.protobuf.ByteString getNamePartBytes() { |
java.lang.Object ref = namePart_; |
if (ref instanceof String) { |
com.google.protobuf.ByteString b = |
com.google.protobuf.ByteString.copyFromUtf8((String) ref); |
namePart_ = b; |
return b; |
} else { |
return (com.google.protobuf.ByteString) ref; |
} |
} |
// required bool is_extension = 2; |
public static final int IS_EXTENSION_FIELD_NUMBER = 2; |
private boolean isExtension_; |
public boolean hasIsExtension() { |
return ((bitField0_ & 0x00000002) == 0x00000002); |
} |
public boolean getIsExtension() { |
return isExtension_; |
} |
private void initFields() { |
namePart_ = ""; |
isExtension_ = false; |
} |
private byte memoizedIsInitialized = -1; |
public final boolean isInitialized() { |
byte isInitialized = memoizedIsInitialized; |
if (isInitialized != -1) return isInitialized == 1; |
if (!hasNamePart()) { |
memoizedIsInitialized = 0; |
return false; |
} |
if (!hasIsExtension()) { |
memoizedIsInitialized = 0; |
return false; |
} |
memoizedIsInitialized = 1; |
return true; |
} |
public void writeTo(com.google.protobuf.CodedOutputStream output) |
throws java.io.IOException { |
getSerializedSize(); |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
output.writeBytes(1, getNamePartBytes()); |
} |
if (((bitField0_ & 0x00000002) == 0x00000002)) { |
output.writeBool(2, isExtension_); |
} |
getUnknownFields().writeTo(output); |
} |
private int memoizedSerializedSize = -1; |
public int getSerializedSize() { |
int size = memoizedSerializedSize; |
if (size != -1) return size; |
size = 0; |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
size += com.google.protobuf.CodedOutputStream |
.computeBytesSize(1, getNamePartBytes()); |
} |
if (((bitField0_ & 0x00000002) == 0x00000002)) { |
size += com.google.protobuf.CodedOutputStream |
.computeBoolSize(2, isExtension_); |
} |
size += getUnknownFields().getSerializedSize(); |
memoizedSerializedSize = size; |
return size; |
} |
private static final long serialVersionUID = 0L; |
@java.lang.Override |
protected java.lang.Object writeReplace() |
throws java.io.ObjectStreamException { |
return super.writeReplace(); |
} |
public static com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart parseFrom( |
com.google.protobuf.ByteString data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart parseFrom( |
com.google.protobuf.ByteString data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart parseFrom(byte[] data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart parseFrom( |
byte[] data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart parseFrom(java.io.InputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart parseFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart parseDelimitedFrom(java.io.InputStream input) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart parseDelimitedFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input, extensionRegistry)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart parseFrom( |
com.google.protobuf.CodedInputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart parseFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static Builder newBuilder() { return Builder.create(); } |
public Builder newBuilderForType() { return newBuilder(); } |
public static Builder newBuilder(com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart prototype) { |
return newBuilder().mergeFrom(prototype); |
} |
public Builder toBuilder() { return newBuilder(this); } |
@java.lang.Override |
protected Builder newBuilderForType( |
com.google.protobuf.GeneratedMessage.BuilderParent parent) { |
Builder builder = new Builder(parent); |
return builder; |
} |
public static final class Builder extends |
com.google.protobuf.GeneratedMessage.Builder<Builder> |
implements com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePartOrBuilder { |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_UninterpretedOption_NamePart_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_UninterpretedOption_NamePart_fieldAccessorTable; |
} |
// Construct using com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.newBuilder() |
private Builder() { |
maybeForceBuilderInitialization(); |
} |
private Builder(BuilderParent parent) { |
super(parent); |
maybeForceBuilderInitialization(); |
} |
private void maybeForceBuilderInitialization() { |
if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { |
} |
} |
private static Builder create() { |
return new Builder(); |
} |
public Builder clear() { |
super.clear(); |
namePart_ = ""; |
bitField0_ = (bitField0_ & ~0x00000001); |
isExtension_ = false; |
bitField0_ = (bitField0_ & ~0x00000002); |
return this; |
} |
public Builder clone() { |
return create().mergeFrom(buildPartial()); |
} |
public com.google.protobuf.Descriptors.Descriptor |
getDescriptorForType() { |
return com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.getDescriptor(); |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart getDefaultInstanceForType() { |
return com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.getDefaultInstance(); |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart build() { |
com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException(result); |
} |
return result; |
} |
private com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart buildParsed() |
throws com.google.protobuf.InvalidProtocolBufferException { |
com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException( |
result).asInvalidProtocolBufferException(); |
} |
return result; |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart buildPartial() { |
com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart result = new com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart(this); |
int from_bitField0_ = bitField0_; |
int to_bitField0_ = 0; |
if (((from_bitField0_ & 0x00000001) == 0x00000001)) { |
to_bitField0_ |= 0x00000001; |
} |
result.namePart_ = namePart_; |
if (((from_bitField0_ & 0x00000002) == 0x00000002)) { |
to_bitField0_ |= 0x00000002; |
} |
result.isExtension_ = isExtension_; |
result.bitField0_ = to_bitField0_; |
onBuilt(); |
return result; |
} |
public Builder mergeFrom(com.google.protobuf.Message other) { |
if (other instanceof com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart) { |
return mergeFrom((com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart)other); |
} else { |
super.mergeFrom(other); |
return this; |
} |
} |
public Builder mergeFrom(com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart other) { |
if (other == com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.getDefaultInstance()) return this; |
if (other.hasNamePart()) { |
setNamePart(other.getNamePart()); |
} |
if (other.hasIsExtension()) { |
setIsExtension(other.getIsExtension()); |
} |
this.mergeUnknownFields(other.getUnknownFields()); |
return this; |
} |
public final boolean isInitialized() { |
if (!hasNamePart()) { |
return false; |
} |
if (!hasIsExtension()) { |
return false; |
} |
return true; |
} |
public Builder mergeFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
com.google.protobuf.UnknownFieldSet.Builder unknownFields = |
com.google.protobuf.UnknownFieldSet.newBuilder( |
this.getUnknownFields()); |
while (true) { |
int tag = input.readTag(); |
switch (tag) { |
case 0: |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
default: { |
if (!parseUnknownField(input, unknownFields, |
extensionRegistry, tag)) { |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
} |
break; |
} |
case 10: { |
bitField0_ |= 0x00000001; |
namePart_ = input.readBytes(); |
break; |
} |
case 16: { |
bitField0_ |= 0x00000002; |
isExtension_ = input.readBool(); |
break; |
} |
} |
} |
} |
private int bitField0_; |
// required string name_part = 1; |
private java.lang.Object namePart_ = ""; |
public boolean hasNamePart() { |
return ((bitField0_ & 0x00000001) == 0x00000001); |
} |
public String getNamePart() { |
java.lang.Object ref = namePart_; |
if (!(ref instanceof String)) { |
String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); |
namePart_ = s; |
return s; |
} else { |
return (String) ref; |
} |
} |
public Builder setNamePart(String value) { |
if (value == null) { |
throw new NullPointerException(); |
} |
bitField0_ |= 0x00000001; |
namePart_ = value; |
onChanged(); |
return this; |
} |
public Builder clearNamePart() { |
bitField0_ = (bitField0_ & ~0x00000001); |
namePart_ = getDefaultInstance().getNamePart(); |
onChanged(); |
return this; |
} |
void setNamePart(com.google.protobuf.ByteString value) { |
bitField0_ |= 0x00000001; |
namePart_ = value; |
onChanged(); |
} |
// required bool is_extension = 2; |
private boolean isExtension_ ; |
public boolean hasIsExtension() { |
return ((bitField0_ & 0x00000002) == 0x00000002); |
} |
public boolean getIsExtension() { |
return isExtension_; |
} |
public Builder setIsExtension(boolean value) { |
bitField0_ |= 0x00000002; |
isExtension_ = value; |
onChanged(); |
return this; |
} |
public Builder clearIsExtension() { |
bitField0_ = (bitField0_ & ~0x00000002); |
isExtension_ = false; |
onChanged(); |
return this; |
} |
// @@protoc_insertion_point(builder_scope:google.protobuf.UninterpretedOption.NamePart) |
} |
static { |
defaultInstance = new NamePart(true); |
defaultInstance.initFields(); |
} |
// @@protoc_insertion_point(class_scope:google.protobuf.UninterpretedOption.NamePart) |
} |
private int bitField0_; |
// repeated .google.protobuf.UninterpretedOption.NamePart name = 2; |
public static final int NAME_FIELD_NUMBER = 2; |
private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart> name_; |
public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart> getNameList() { |
return name_; |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePartOrBuilder> |
getNameOrBuilderList() { |
return name_; |
} |
public int getNameCount() { |
return name_.size(); |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart getName(int index) { |
return name_.get(index); |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePartOrBuilder getNameOrBuilder( |
int index) { |
return name_.get(index); |
} |
// optional string identifier_value = 3; |
public static final int IDENTIFIER_VALUE_FIELD_NUMBER = 3; |
private java.lang.Object identifierValue_; |
public boolean hasIdentifierValue() { |
return ((bitField0_ & 0x00000001) == 0x00000001); |
} |
public String getIdentifierValue() { |
java.lang.Object ref = identifierValue_; |
if (ref instanceof String) { |
return (String) ref; |
} else { |
com.google.protobuf.ByteString bs = |
(com.google.protobuf.ByteString) ref; |
String s = bs.toStringUtf8(); |
if (com.google.protobuf.Internal.isValidUtf8(bs)) { |
identifierValue_ = s; |
} |
return s; |
} |
} |
private com.google.protobuf.ByteString getIdentifierValueBytes() { |
java.lang.Object ref = identifierValue_; |
if (ref instanceof String) { |
com.google.protobuf.ByteString b = |
com.google.protobuf.ByteString.copyFromUtf8((String) ref); |
identifierValue_ = b; |
return b; |
} else { |
return (com.google.protobuf.ByteString) ref; |
} |
} |
// optional uint64 positive_int_value = 4; |
public static final int POSITIVE_INT_VALUE_FIELD_NUMBER = 4; |
private long positiveIntValue_; |
public boolean hasPositiveIntValue() { |
return ((bitField0_ & 0x00000002) == 0x00000002); |
} |
public long getPositiveIntValue() { |
return positiveIntValue_; |
} |
// optional int64 negative_int_value = 5; |
public static final int NEGATIVE_INT_VALUE_FIELD_NUMBER = 5; |
private long negativeIntValue_; |
public boolean hasNegativeIntValue() { |
return ((bitField0_ & 0x00000004) == 0x00000004); |
} |
public long getNegativeIntValue() { |
return negativeIntValue_; |
} |
// optional double double_value = 6; |
public static final int DOUBLE_VALUE_FIELD_NUMBER = 6; |
private double doubleValue_; |
public boolean hasDoubleValue() { |
return ((bitField0_ & 0x00000008) == 0x00000008); |
} |
public double getDoubleValue() { |
return doubleValue_; |
} |
// optional bytes string_value = 7; |
public static final int STRING_VALUE_FIELD_NUMBER = 7; |
private com.google.protobuf.ByteString stringValue_; |
public boolean hasStringValue() { |
return ((bitField0_ & 0x00000010) == 0x00000010); |
} |
public com.google.protobuf.ByteString getStringValue() { |
return stringValue_; |
} |
// optional string aggregate_value = 8; |
public static final int AGGREGATE_VALUE_FIELD_NUMBER = 8; |
private java.lang.Object aggregateValue_; |
public boolean hasAggregateValue() { |
return ((bitField0_ & 0x00000020) == 0x00000020); |
} |
public String getAggregateValue() { |
java.lang.Object ref = aggregateValue_; |
if (ref instanceof String) { |
return (String) ref; |
} else { |
com.google.protobuf.ByteString bs = |
(com.google.protobuf.ByteString) ref; |
String s = bs.toStringUtf8(); |
if (com.google.protobuf.Internal.isValidUtf8(bs)) { |
aggregateValue_ = s; |
} |
return s; |
} |
} |
private com.google.protobuf.ByteString getAggregateValueBytes() { |
java.lang.Object ref = aggregateValue_; |
if (ref instanceof String) { |
com.google.protobuf.ByteString b = |
com.google.protobuf.ByteString.copyFromUtf8((String) ref); |
aggregateValue_ = b; |
return b; |
} else { |
return (com.google.protobuf.ByteString) ref; |
} |
} |
private void initFields() { |
name_ = java.util.Collections.emptyList(); |
identifierValue_ = ""; |
positiveIntValue_ = 0L; |
negativeIntValue_ = 0L; |
doubleValue_ = 0D; |
stringValue_ = com.google.protobuf.ByteString.EMPTY; |
aggregateValue_ = ""; |
} |
private byte memoizedIsInitialized = -1; |
public final boolean isInitialized() { |
byte isInitialized = memoizedIsInitialized; |
if (isInitialized != -1) return isInitialized == 1; |
for (int i = 0; i < getNameCount(); i++) { |
if (!getName(i).isInitialized()) { |
memoizedIsInitialized = 0; |
return false; |
} |
} |
memoizedIsInitialized = 1; |
return true; |
} |
public void writeTo(com.google.protobuf.CodedOutputStream output) |
throws java.io.IOException { |
getSerializedSize(); |
for (int i = 0; i < name_.size(); i++) { |
output.writeMessage(2, name_.get(i)); |
} |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
output.writeBytes(3, getIdentifierValueBytes()); |
} |
if (((bitField0_ & 0x00000002) == 0x00000002)) { |
output.writeUInt64(4, positiveIntValue_); |
} |
if (((bitField0_ & 0x00000004) == 0x00000004)) { |
output.writeInt64(5, negativeIntValue_); |
} |
if (((bitField0_ & 0x00000008) == 0x00000008)) { |
output.writeDouble(6, doubleValue_); |
} |
if (((bitField0_ & 0x00000010) == 0x00000010)) { |
output.writeBytes(7, stringValue_); |
} |
if (((bitField0_ & 0x00000020) == 0x00000020)) { |
output.writeBytes(8, getAggregateValueBytes()); |
} |
getUnknownFields().writeTo(output); |
} |
private int memoizedSerializedSize = -1; |
public int getSerializedSize() { |
int size = memoizedSerializedSize; |
if (size != -1) return size; |
size = 0; |
for (int i = 0; i < name_.size(); i++) { |
size += com.google.protobuf.CodedOutputStream |
.computeMessageSize(2, name_.get(i)); |
} |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
size += com.google.protobuf.CodedOutputStream |
.computeBytesSize(3, getIdentifierValueBytes()); |
} |
if (((bitField0_ & 0x00000002) == 0x00000002)) { |
size += com.google.protobuf.CodedOutputStream |
.computeUInt64Size(4, positiveIntValue_); |
} |
if (((bitField0_ & 0x00000004) == 0x00000004)) { |
size += com.google.protobuf.CodedOutputStream |
.computeInt64Size(5, negativeIntValue_); |
} |
if (((bitField0_ & 0x00000008) == 0x00000008)) { |
size += com.google.protobuf.CodedOutputStream |
.computeDoubleSize(6, doubleValue_); |
} |
if (((bitField0_ & 0x00000010) == 0x00000010)) { |
size += com.google.protobuf.CodedOutputStream |
.computeBytesSize(7, stringValue_); |
} |
if (((bitField0_ & 0x00000020) == 0x00000020)) { |
size += com.google.protobuf.CodedOutputStream |
.computeBytesSize(8, getAggregateValueBytes()); |
} |
size += getUnknownFields().getSerializedSize(); |
memoizedSerializedSize = size; |
return size; |
} |
private static final long serialVersionUID = 0L; |
@java.lang.Override |
protected java.lang.Object writeReplace() |
throws java.io.ObjectStreamException { |
return super.writeReplace(); |
} |
public static com.google.protobuf.DescriptorProtos.UninterpretedOption parseFrom( |
com.google.protobuf.ByteString data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.UninterpretedOption parseFrom( |
com.google.protobuf.ByteString data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.UninterpretedOption parseFrom(byte[] data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.UninterpretedOption parseFrom( |
byte[] data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.UninterpretedOption parseFrom(java.io.InputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.UninterpretedOption parseFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.UninterpretedOption parseDelimitedFrom(java.io.InputStream input) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.UninterpretedOption parseDelimitedFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input, extensionRegistry)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.UninterpretedOption parseFrom( |
com.google.protobuf.CodedInputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.UninterpretedOption parseFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static Builder newBuilder() { return Builder.create(); } |
public Builder newBuilderForType() { return newBuilder(); } |
public static Builder newBuilder(com.google.protobuf.DescriptorProtos.UninterpretedOption prototype) { |
return newBuilder().mergeFrom(prototype); |
} |
public Builder toBuilder() { return newBuilder(this); } |
@java.lang.Override |
protected Builder newBuilderForType( |
com.google.protobuf.GeneratedMessage.BuilderParent parent) { |
Builder builder = new Builder(parent); |
return builder; |
} |
public static final class Builder extends |
com.google.protobuf.GeneratedMessage.Builder<Builder> |
implements com.google.protobuf.DescriptorProtos.UninterpretedOptionOrBuilder { |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_UninterpretedOption_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_UninterpretedOption_fieldAccessorTable; |
} |
// Construct using com.google.protobuf.DescriptorProtos.UninterpretedOption.newBuilder() |
private Builder() { |
maybeForceBuilderInitialization(); |
} |
private Builder(BuilderParent parent) { |
super(parent); |
maybeForceBuilderInitialization(); |
} |
private void maybeForceBuilderInitialization() { |
if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { |
getNameFieldBuilder(); |
} |
} |
private static Builder create() { |
return new Builder(); |
} |
public Builder clear() { |
super.clear(); |
if (nameBuilder_ == null) { |
name_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000001); |
} else { |
nameBuilder_.clear(); |
} |
identifierValue_ = ""; |
bitField0_ = (bitField0_ & ~0x00000002); |
positiveIntValue_ = 0L; |
bitField0_ = (bitField0_ & ~0x00000004); |
negativeIntValue_ = 0L; |
bitField0_ = (bitField0_ & ~0x00000008); |
doubleValue_ = 0D; |
bitField0_ = (bitField0_ & ~0x00000010); |
stringValue_ = com.google.protobuf.ByteString.EMPTY; |
bitField0_ = (bitField0_ & ~0x00000020); |
aggregateValue_ = ""; |
bitField0_ = (bitField0_ & ~0x00000040); |
return this; |
} |
public Builder clone() { |
return create().mergeFrom(buildPartial()); |
} |
public com.google.protobuf.Descriptors.Descriptor |
getDescriptorForType() { |
return com.google.protobuf.DescriptorProtos.UninterpretedOption.getDescriptor(); |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption getDefaultInstanceForType() { |
return com.google.protobuf.DescriptorProtos.UninterpretedOption.getDefaultInstance(); |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption build() { |
com.google.protobuf.DescriptorProtos.UninterpretedOption result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException(result); |
} |
return result; |
} |
private com.google.protobuf.DescriptorProtos.UninterpretedOption buildParsed() |
throws com.google.protobuf.InvalidProtocolBufferException { |
com.google.protobuf.DescriptorProtos.UninterpretedOption result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException( |
result).asInvalidProtocolBufferException(); |
} |
return result; |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption buildPartial() { |
com.google.protobuf.DescriptorProtos.UninterpretedOption result = new com.google.protobuf.DescriptorProtos.UninterpretedOption(this); |
int from_bitField0_ = bitField0_; |
int to_bitField0_ = 0; |
if (nameBuilder_ == null) { |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
name_ = java.util.Collections.unmodifiableList(name_); |
bitField0_ = (bitField0_ & ~0x00000001); |
} |
result.name_ = name_; |
} else { |
result.name_ = nameBuilder_.build(); |
} |
if (((from_bitField0_ & 0x00000002) == 0x00000002)) { |
to_bitField0_ |= 0x00000001; |
} |
result.identifierValue_ = identifierValue_; |
if (((from_bitField0_ & 0x00000004) == 0x00000004)) { |
to_bitField0_ |= 0x00000002; |
} |
result.positiveIntValue_ = positiveIntValue_; |
if (((from_bitField0_ & 0x00000008) == 0x00000008)) { |
to_bitField0_ |= 0x00000004; |
} |
result.negativeIntValue_ = negativeIntValue_; |
if (((from_bitField0_ & 0x00000010) == 0x00000010)) { |
to_bitField0_ |= 0x00000008; |
} |
result.doubleValue_ = doubleValue_; |
if (((from_bitField0_ & 0x00000020) == 0x00000020)) { |
to_bitField0_ |= 0x00000010; |
} |
result.stringValue_ = stringValue_; |
if (((from_bitField0_ & 0x00000040) == 0x00000040)) { |
to_bitField0_ |= 0x00000020; |
} |
result.aggregateValue_ = aggregateValue_; |
result.bitField0_ = to_bitField0_; |
onBuilt(); |
return result; |
} |
public Builder mergeFrom(com.google.protobuf.Message other) { |
if (other instanceof com.google.protobuf.DescriptorProtos.UninterpretedOption) { |
return mergeFrom((com.google.protobuf.DescriptorProtos.UninterpretedOption)other); |
} else { |
super.mergeFrom(other); |
return this; |
} |
} |
public Builder mergeFrom(com.google.protobuf.DescriptorProtos.UninterpretedOption other) { |
if (other == com.google.protobuf.DescriptorProtos.UninterpretedOption.getDefaultInstance()) return this; |
if (nameBuilder_ == null) { |
if (!other.name_.isEmpty()) { |
if (name_.isEmpty()) { |
name_ = other.name_; |
bitField0_ = (bitField0_ & ~0x00000001); |
} else { |
ensureNameIsMutable(); |
name_.addAll(other.name_); |
} |
onChanged(); |
} |
} else { |
if (!other.name_.isEmpty()) { |
if (nameBuilder_.isEmpty()) { |
nameBuilder_.dispose(); |
nameBuilder_ = null; |
name_ = other.name_; |
bitField0_ = (bitField0_ & ~0x00000001); |
nameBuilder_ = |
com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? |
getNameFieldBuilder() : null; |
} else { |
nameBuilder_.addAllMessages(other.name_); |
} |
} |
} |
if (other.hasIdentifierValue()) { |
setIdentifierValue(other.getIdentifierValue()); |
} |
if (other.hasPositiveIntValue()) { |
setPositiveIntValue(other.getPositiveIntValue()); |
} |
if (other.hasNegativeIntValue()) { |
setNegativeIntValue(other.getNegativeIntValue()); |
} |
if (other.hasDoubleValue()) { |
setDoubleValue(other.getDoubleValue()); |
} |
if (other.hasStringValue()) { |
setStringValue(other.getStringValue()); |
} |
if (other.hasAggregateValue()) { |
setAggregateValue(other.getAggregateValue()); |
} |
this.mergeUnknownFields(other.getUnknownFields()); |
return this; |
} |
public final boolean isInitialized() { |
for (int i = 0; i < getNameCount(); i++) { |
if (!getName(i).isInitialized()) { |
return false; |
} |
} |
return true; |
} |
public Builder mergeFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
com.google.protobuf.UnknownFieldSet.Builder unknownFields = |
com.google.protobuf.UnknownFieldSet.newBuilder( |
this.getUnknownFields()); |
while (true) { |
int tag = input.readTag(); |
switch (tag) { |
case 0: |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
default: { |
if (!parseUnknownField(input, unknownFields, |
extensionRegistry, tag)) { |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
} |
break; |
} |
case 18: { |
com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.Builder subBuilder = com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.newBuilder(); |
input.readMessage(subBuilder, extensionRegistry); |
addName(subBuilder.buildPartial()); |
break; |
} |
case 26: { |
bitField0_ |= 0x00000002; |
identifierValue_ = input.readBytes(); |
break; |
} |
case 32: { |
bitField0_ |= 0x00000004; |
positiveIntValue_ = input.readUInt64(); |
break; |
} |
case 40: { |
bitField0_ |= 0x00000008; |
negativeIntValue_ = input.readInt64(); |
break; |
} |
case 49: { |
bitField0_ |= 0x00000010; |
doubleValue_ = input.readDouble(); |
break; |
} |
case 58: { |
bitField0_ |= 0x00000020; |
stringValue_ = input.readBytes(); |
break; |
} |
case 66: { |
bitField0_ |= 0x00000040; |
aggregateValue_ = input.readBytes(); |
break; |
} |
} |
} |
} |
private int bitField0_; |
// repeated .google.protobuf.UninterpretedOption.NamePart name = 2; |
private java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart> name_ = |
java.util.Collections.emptyList(); |
private void ensureNameIsMutable() { |
if (!((bitField0_ & 0x00000001) == 0x00000001)) { |
name_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart>(name_); |
bitField0_ |= 0x00000001; |
} |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart, com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePartOrBuilder> nameBuilder_; |
public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart> getNameList() { |
if (nameBuilder_ == null) { |
return java.util.Collections.unmodifiableList(name_); |
} else { |
return nameBuilder_.getMessageList(); |
} |
} |
public int getNameCount() { |
if (nameBuilder_ == null) { |
return name_.size(); |
} else { |
return nameBuilder_.getCount(); |
} |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart getName(int index) { |
if (nameBuilder_ == null) { |
return name_.get(index); |
} else { |
return nameBuilder_.getMessage(index); |
} |
} |
public Builder setName( |
int index, com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart value) { |
if (nameBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureNameIsMutable(); |
name_.set(index, value); |
onChanged(); |
} else { |
nameBuilder_.setMessage(index, value); |
} |
return this; |
} |
public Builder setName( |
int index, com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.Builder builderForValue) { |
if (nameBuilder_ == null) { |
ensureNameIsMutable(); |
name_.set(index, builderForValue.build()); |
onChanged(); |
} else { |
nameBuilder_.setMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addName(com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart value) { |
if (nameBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureNameIsMutable(); |
name_.add(value); |
onChanged(); |
} else { |
nameBuilder_.addMessage(value); |
} |
return this; |
} |
public Builder addName( |
int index, com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart value) { |
if (nameBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureNameIsMutable(); |
name_.add(index, value); |
onChanged(); |
} else { |
nameBuilder_.addMessage(index, value); |
} |
return this; |
} |
public Builder addName( |
com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.Builder builderForValue) { |
if (nameBuilder_ == null) { |
ensureNameIsMutable(); |
name_.add(builderForValue.build()); |
onChanged(); |
} else { |
nameBuilder_.addMessage(builderForValue.build()); |
} |
return this; |
} |
public Builder addName( |
int index, com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.Builder builderForValue) { |
if (nameBuilder_ == null) { |
ensureNameIsMutable(); |
name_.add(index, builderForValue.build()); |
onChanged(); |
} else { |
nameBuilder_.addMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addAllName( |
java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart> values) { |
if (nameBuilder_ == null) { |
ensureNameIsMutable(); |
super.addAll(values, name_); |
onChanged(); |
} else { |
nameBuilder_.addAllMessages(values); |
} |
return this; |
} |
public Builder clearName() { |
if (nameBuilder_ == null) { |
name_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000001); |
onChanged(); |
} else { |
nameBuilder_.clear(); |
} |
return this; |
} |
public Builder removeName(int index) { |
if (nameBuilder_ == null) { |
ensureNameIsMutable(); |
name_.remove(index); |
onChanged(); |
} else { |
nameBuilder_.remove(index); |
} |
return this; |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.Builder getNameBuilder( |
int index) { |
return getNameFieldBuilder().getBuilder(index); |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePartOrBuilder getNameOrBuilder( |
int index) { |
if (nameBuilder_ == null) { |
return name_.get(index); } else { |
return nameBuilder_.getMessageOrBuilder(index); |
} |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePartOrBuilder> |
getNameOrBuilderList() { |
if (nameBuilder_ != null) { |
return nameBuilder_.getMessageOrBuilderList(); |
} else { |
return java.util.Collections.unmodifiableList(name_); |
} |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.Builder addNameBuilder() { |
return getNameFieldBuilder().addBuilder( |
com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.getDefaultInstance()); |
} |
public com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.Builder addNameBuilder( |
int index) { |
return getNameFieldBuilder().addBuilder( |
index, com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.getDefaultInstance()); |
} |
public java.util.List<com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.Builder> |
getNameBuilderList() { |
return getNameFieldBuilder().getBuilderList(); |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart, com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePartOrBuilder> |
getNameFieldBuilder() { |
if (nameBuilder_ == null) { |
nameBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart, com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.Builder, com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePartOrBuilder>( |
name_, |
((bitField0_ & 0x00000001) == 0x00000001), |
getParentForChildren(), |
isClean()); |
name_ = null; |
} |
return nameBuilder_; |
} |
// optional string identifier_value = 3; |
private java.lang.Object identifierValue_ = ""; |
public boolean hasIdentifierValue() { |
return ((bitField0_ & 0x00000002) == 0x00000002); |
} |
public String getIdentifierValue() { |
java.lang.Object ref = identifierValue_; |
if (!(ref instanceof String)) { |
String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); |
identifierValue_ = s; |
return s; |
} else { |
return (String) ref; |
} |
} |
public Builder setIdentifierValue(String value) { |
if (value == null) { |
throw new NullPointerException(); |
} |
bitField0_ |= 0x00000002; |
identifierValue_ = value; |
onChanged(); |
return this; |
} |
public Builder clearIdentifierValue() { |
bitField0_ = (bitField0_ & ~0x00000002); |
identifierValue_ = getDefaultInstance().getIdentifierValue(); |
onChanged(); |
return this; |
} |
void setIdentifierValue(com.google.protobuf.ByteString value) { |
bitField0_ |= 0x00000002; |
identifierValue_ = value; |
onChanged(); |
} |
// optional uint64 positive_int_value = 4; |
private long positiveIntValue_ ; |
public boolean hasPositiveIntValue() { |
return ((bitField0_ & 0x00000004) == 0x00000004); |
} |
public long getPositiveIntValue() { |
return positiveIntValue_; |
} |
public Builder setPositiveIntValue(long value) { |
bitField0_ |= 0x00000004; |
positiveIntValue_ = value; |
onChanged(); |
return this; |
} |
public Builder clearPositiveIntValue() { |
bitField0_ = (bitField0_ & ~0x00000004); |
positiveIntValue_ = 0L; |
onChanged(); |
return this; |
} |
// optional int64 negative_int_value = 5; |
private long negativeIntValue_ ; |
public boolean hasNegativeIntValue() { |
return ((bitField0_ & 0x00000008) == 0x00000008); |
} |
public long getNegativeIntValue() { |
return negativeIntValue_; |
} |
public Builder setNegativeIntValue(long value) { |
bitField0_ |= 0x00000008; |
negativeIntValue_ = value; |
onChanged(); |
return this; |
} |
public Builder clearNegativeIntValue() { |
bitField0_ = (bitField0_ & ~0x00000008); |
negativeIntValue_ = 0L; |
onChanged(); |
return this; |
} |
// optional double double_value = 6; |
private double doubleValue_ ; |
public boolean hasDoubleValue() { |
return ((bitField0_ & 0x00000010) == 0x00000010); |
} |
public double getDoubleValue() { |
return doubleValue_; |
} |
public Builder setDoubleValue(double value) { |
bitField0_ |= 0x00000010; |
doubleValue_ = value; |
onChanged(); |
return this; |
} |
public Builder clearDoubleValue() { |
bitField0_ = (bitField0_ & ~0x00000010); |
doubleValue_ = 0D; |
onChanged(); |
return this; |
} |
// optional bytes string_value = 7; |
private com.google.protobuf.ByteString stringValue_ = com.google.protobuf.ByteString.EMPTY; |
public boolean hasStringValue() { |
return ((bitField0_ & 0x00000020) == 0x00000020); |
} |
public com.google.protobuf.ByteString getStringValue() { |
return stringValue_; |
} |
public Builder setStringValue(com.google.protobuf.ByteString value) { |
if (value == null) { |
throw new NullPointerException(); |
} |
bitField0_ |= 0x00000020; |
stringValue_ = value; |
onChanged(); |
return this; |
} |
public Builder clearStringValue() { |
bitField0_ = (bitField0_ & ~0x00000020); |
stringValue_ = getDefaultInstance().getStringValue(); |
onChanged(); |
return this; |
} |
// optional string aggregate_value = 8; |
private java.lang.Object aggregateValue_ = ""; |
public boolean hasAggregateValue() { |
return ((bitField0_ & 0x00000040) == 0x00000040); |
} |
public String getAggregateValue() { |
java.lang.Object ref = aggregateValue_; |
if (!(ref instanceof String)) { |
String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); |
aggregateValue_ = s; |
return s; |
} else { |
return (String) ref; |
} |
} |
public Builder setAggregateValue(String value) { |
if (value == null) { |
throw new NullPointerException(); |
} |
bitField0_ |= 0x00000040; |
aggregateValue_ = value; |
onChanged(); |
return this; |
} |
public Builder clearAggregateValue() { |
bitField0_ = (bitField0_ & ~0x00000040); |
aggregateValue_ = getDefaultInstance().getAggregateValue(); |
onChanged(); |
return this; |
} |
void setAggregateValue(com.google.protobuf.ByteString value) { |
bitField0_ |= 0x00000040; |
aggregateValue_ = value; |
onChanged(); |
} |
// @@protoc_insertion_point(builder_scope:google.protobuf.UninterpretedOption) |
} |
static { |
defaultInstance = new UninterpretedOption(true); |
defaultInstance.initFields(); |
} |
// @@protoc_insertion_point(class_scope:google.protobuf.UninterpretedOption) |
} |
public interface SourceCodeInfoOrBuilder |
extends com.google.protobuf.MessageOrBuilder { |
// repeated .google.protobuf.SourceCodeInfo.Location location = 1; |
java.util.List<com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location> |
getLocationList(); |
com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location getLocation(int index); |
int getLocationCount(); |
java.util.List<? extends com.google.protobuf.DescriptorProtos.SourceCodeInfo.LocationOrBuilder> |
getLocationOrBuilderList(); |
com.google.protobuf.DescriptorProtos.SourceCodeInfo.LocationOrBuilder getLocationOrBuilder( |
int index); |
} |
public static final class SourceCodeInfo extends |
com.google.protobuf.GeneratedMessage |
implements SourceCodeInfoOrBuilder { |
// Use SourceCodeInfo.newBuilder() to construct. |
private SourceCodeInfo(Builder builder) { |
super(builder); |
} |
private SourceCodeInfo(boolean noInit) {} |
private static final SourceCodeInfo defaultInstance; |
public static SourceCodeInfo getDefaultInstance() { |
return defaultInstance; |
} |
public SourceCodeInfo getDefaultInstanceForType() { |
return defaultInstance; |
} |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_SourceCodeInfo_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_SourceCodeInfo_fieldAccessorTable; |
} |
public interface LocationOrBuilder |
extends com.google.protobuf.MessageOrBuilder { |
// repeated int32 path = 1 [packed = true]; |
java.util.List<java.lang.Integer> getPathList(); |
int getPathCount(); |
int getPath(int index); |
// repeated int32 span = 2 [packed = true]; |
java.util.List<java.lang.Integer> getSpanList(); |
int getSpanCount(); |
int getSpan(int index); |
} |
public static final class Location extends |
com.google.protobuf.GeneratedMessage |
implements LocationOrBuilder { |
// Use Location.newBuilder() to construct. |
private Location(Builder builder) { |
super(builder); |
} |
private Location(boolean noInit) {} |
private static final Location defaultInstance; |
public static Location getDefaultInstance() { |
return defaultInstance; |
} |
public Location getDefaultInstanceForType() { |
return defaultInstance; |
} |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_SourceCodeInfo_Location_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_SourceCodeInfo_Location_fieldAccessorTable; |
} |
// repeated int32 path = 1 [packed = true]; |
public static final int PATH_FIELD_NUMBER = 1; |
private java.util.List<java.lang.Integer> path_; |
public java.util.List<java.lang.Integer> |
getPathList() { |
return path_; |
} |
public int getPathCount() { |
return path_.size(); |
} |
public int getPath(int index) { |
return path_.get(index); |
} |
private int pathMemoizedSerializedSize = -1; |
// repeated int32 span = 2 [packed = true]; |
public static final int SPAN_FIELD_NUMBER = 2; |
private java.util.List<java.lang.Integer> span_; |
public java.util.List<java.lang.Integer> |
getSpanList() { |
return span_; |
} |
public int getSpanCount() { |
return span_.size(); |
} |
public int getSpan(int index) { |
return span_.get(index); |
} |
private int spanMemoizedSerializedSize = -1; |
private void initFields() { |
path_ = java.util.Collections.emptyList();; |
span_ = java.util.Collections.emptyList();; |
} |
private byte memoizedIsInitialized = -1; |
public final boolean isInitialized() { |
byte isInitialized = memoizedIsInitialized; |
if (isInitialized != -1) return isInitialized == 1; |
memoizedIsInitialized = 1; |
return true; |
} |
public void writeTo(com.google.protobuf.CodedOutputStream output) |
throws java.io.IOException { |
getSerializedSize(); |
if (getPathList().size() > 0) { |
output.writeRawVarint32(10); |
output.writeRawVarint32(pathMemoizedSerializedSize); |
} |
for (int i = 0; i < path_.size(); i++) { |
output.writeInt32NoTag(path_.get(i)); |
} |
if (getSpanList().size() > 0) { |
output.writeRawVarint32(18); |
output.writeRawVarint32(spanMemoizedSerializedSize); |
} |
for (int i = 0; i < span_.size(); i++) { |
output.writeInt32NoTag(span_.get(i)); |
} |
getUnknownFields().writeTo(output); |
} |
private int memoizedSerializedSize = -1; |
public int getSerializedSize() { |
int size = memoizedSerializedSize; |
if (size != -1) return size; |
size = 0; |
{ |
int dataSize = 0; |
for (int i = 0; i < path_.size(); i++) { |
dataSize += com.google.protobuf.CodedOutputStream |
.computeInt32SizeNoTag(path_.get(i)); |
} |
size += dataSize; |
if (!getPathList().isEmpty()) { |
size += 1; |
size += com.google.protobuf.CodedOutputStream |
.computeInt32SizeNoTag(dataSize); |
} |
pathMemoizedSerializedSize = dataSize; |
} |
{ |
int dataSize = 0; |
for (int i = 0; i < span_.size(); i++) { |
dataSize += com.google.protobuf.CodedOutputStream |
.computeInt32SizeNoTag(span_.get(i)); |
} |
size += dataSize; |
if (!getSpanList().isEmpty()) { |
size += 1; |
size += com.google.protobuf.CodedOutputStream |
.computeInt32SizeNoTag(dataSize); |
} |
spanMemoizedSerializedSize = dataSize; |
} |
size += getUnknownFields().getSerializedSize(); |
memoizedSerializedSize = size; |
return size; |
} |
private static final long serialVersionUID = 0L; |
@java.lang.Override |
protected java.lang.Object writeReplace() |
throws java.io.ObjectStreamException { |
return super.writeReplace(); |
} |
public static com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location parseFrom( |
com.google.protobuf.ByteString data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location parseFrom( |
com.google.protobuf.ByteString data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location parseFrom(byte[] data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location parseFrom( |
byte[] data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location parseFrom(java.io.InputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location parseFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location parseDelimitedFrom(java.io.InputStream input) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location parseDelimitedFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input, extensionRegistry)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location parseFrom( |
com.google.protobuf.CodedInputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location parseFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static Builder newBuilder() { return Builder.create(); } |
public Builder newBuilderForType() { return newBuilder(); } |
public static Builder newBuilder(com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location prototype) { |
return newBuilder().mergeFrom(prototype); |
} |
public Builder toBuilder() { return newBuilder(this); } |
@java.lang.Override |
protected Builder newBuilderForType( |
com.google.protobuf.GeneratedMessage.BuilderParent parent) { |
Builder builder = new Builder(parent); |
return builder; |
} |
public static final class Builder extends |
com.google.protobuf.GeneratedMessage.Builder<Builder> |
implements com.google.protobuf.DescriptorProtos.SourceCodeInfo.LocationOrBuilder { |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_SourceCodeInfo_Location_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_SourceCodeInfo_Location_fieldAccessorTable; |
} |
// Construct using com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location.newBuilder() |
private Builder() { |
maybeForceBuilderInitialization(); |
} |
private Builder(BuilderParent parent) { |
super(parent); |
maybeForceBuilderInitialization(); |
} |
private void maybeForceBuilderInitialization() { |
if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { |
} |
} |
private static Builder create() { |
return new Builder(); |
} |
public Builder clear() { |
super.clear(); |
path_ = java.util.Collections.emptyList();; |
bitField0_ = (bitField0_ & ~0x00000001); |
span_ = java.util.Collections.emptyList();; |
bitField0_ = (bitField0_ & ~0x00000002); |
return this; |
} |
public Builder clone() { |
return create().mergeFrom(buildPartial()); |
} |
public com.google.protobuf.Descriptors.Descriptor |
getDescriptorForType() { |
return com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location.getDescriptor(); |
} |
public com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location getDefaultInstanceForType() { |
return com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location.getDefaultInstance(); |
} |
public com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location build() { |
com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException(result); |
} |
return result; |
} |
private com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location buildParsed() |
throws com.google.protobuf.InvalidProtocolBufferException { |
com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException( |
result).asInvalidProtocolBufferException(); |
} |
return result; |
} |
public com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location buildPartial() { |
com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location result = new com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location(this); |
int from_bitField0_ = bitField0_; |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
path_ = java.util.Collections.unmodifiableList(path_); |
bitField0_ = (bitField0_ & ~0x00000001); |
} |
result.path_ = path_; |
if (((bitField0_ & 0x00000002) == 0x00000002)) { |
span_ = java.util.Collections.unmodifiableList(span_); |
bitField0_ = (bitField0_ & ~0x00000002); |
} |
result.span_ = span_; |
onBuilt(); |
return result; |
} |
public Builder mergeFrom(com.google.protobuf.Message other) { |
if (other instanceof com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location) { |
return mergeFrom((com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location)other); |
} else { |
super.mergeFrom(other); |
return this; |
} |
} |
public Builder mergeFrom(com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location other) { |
if (other == com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location.getDefaultInstance()) return this; |
if (!other.path_.isEmpty()) { |
if (path_.isEmpty()) { |
path_ = other.path_; |
bitField0_ = (bitField0_ & ~0x00000001); |
} else { |
ensurePathIsMutable(); |
path_.addAll(other.path_); |
} |
onChanged(); |
} |
if (!other.span_.isEmpty()) { |
if (span_.isEmpty()) { |
span_ = other.span_; |
bitField0_ = (bitField0_ & ~0x00000002); |
} else { |
ensureSpanIsMutable(); |
span_.addAll(other.span_); |
} |
onChanged(); |
} |
this.mergeUnknownFields(other.getUnknownFields()); |
return this; |
} |
public final boolean isInitialized() { |
return true; |
} |
public Builder mergeFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
com.google.protobuf.UnknownFieldSet.Builder unknownFields = |
com.google.protobuf.UnknownFieldSet.newBuilder( |
this.getUnknownFields()); |
while (true) { |
int tag = input.readTag(); |
switch (tag) { |
case 0: |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
default: { |
if (!parseUnknownField(input, unknownFields, |
extensionRegistry, tag)) { |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
} |
break; |
} |
case 8: { |
ensurePathIsMutable(); |
path_.add(input.readInt32()); |
break; |
} |
case 10: { |
int length = input.readRawVarint32(); |
int limit = input.pushLimit(length); |
while (input.getBytesUntilLimit() > 0) { |
addPath(input.readInt32()); |
} |
input.popLimit(limit); |
break; |
} |
case 16: { |
ensureSpanIsMutable(); |
span_.add(input.readInt32()); |
break; |
} |
case 18: { |
int length = input.readRawVarint32(); |
int limit = input.pushLimit(length); |
while (input.getBytesUntilLimit() > 0) { |
addSpan(input.readInt32()); |
} |
input.popLimit(limit); |
break; |
} |
} |
} |
} |
private int bitField0_; |
// repeated int32 path = 1 [packed = true]; |
private java.util.List<java.lang.Integer> path_ = java.util.Collections.emptyList();; |
private void ensurePathIsMutable() { |
if (!((bitField0_ & 0x00000001) == 0x00000001)) { |
path_ = new java.util.ArrayList<java.lang.Integer>(path_); |
bitField0_ |= 0x00000001; |
} |
} |
public java.util.List<java.lang.Integer> |
getPathList() { |
return java.util.Collections.unmodifiableList(path_); |
} |
public int getPathCount() { |
return path_.size(); |
} |
public int getPath(int index) { |
return path_.get(index); |
} |
public Builder setPath( |
int index, int value) { |
ensurePathIsMutable(); |
path_.set(index, value); |
onChanged(); |
return this; |
} |
public Builder addPath(int value) { |
ensurePathIsMutable(); |
path_.add(value); |
onChanged(); |
return this; |
} |
public Builder addAllPath( |
java.lang.Iterable<? extends java.lang.Integer> values) { |
ensurePathIsMutable(); |
super.addAll(values, path_); |
onChanged(); |
return this; |
} |
public Builder clearPath() { |
path_ = java.util.Collections.emptyList();; |
bitField0_ = (bitField0_ & ~0x00000001); |
onChanged(); |
return this; |
} |
// repeated int32 span = 2 [packed = true]; |
private java.util.List<java.lang.Integer> span_ = java.util.Collections.emptyList();; |
private void ensureSpanIsMutable() { |
if (!((bitField0_ & 0x00000002) == 0x00000002)) { |
span_ = new java.util.ArrayList<java.lang.Integer>(span_); |
bitField0_ |= 0x00000002; |
} |
} |
public java.util.List<java.lang.Integer> |
getSpanList() { |
return java.util.Collections.unmodifiableList(span_); |
} |
public int getSpanCount() { |
return span_.size(); |
} |
public int getSpan(int index) { |
return span_.get(index); |
} |
public Builder setSpan( |
int index, int value) { |
ensureSpanIsMutable(); |
span_.set(index, value); |
onChanged(); |
return this; |
} |
public Builder addSpan(int value) { |
ensureSpanIsMutable(); |
span_.add(value); |
onChanged(); |
return this; |
} |
public Builder addAllSpan( |
java.lang.Iterable<? extends java.lang.Integer> values) { |
ensureSpanIsMutable(); |
super.addAll(values, span_); |
onChanged(); |
return this; |
} |
public Builder clearSpan() { |
span_ = java.util.Collections.emptyList();; |
bitField0_ = (bitField0_ & ~0x00000002); |
onChanged(); |
return this; |
} |
// @@protoc_insertion_point(builder_scope:google.protobuf.SourceCodeInfo.Location) |
} |
static { |
defaultInstance = new Location(true); |
defaultInstance.initFields(); |
} |
// @@protoc_insertion_point(class_scope:google.protobuf.SourceCodeInfo.Location) |
} |
// repeated .google.protobuf.SourceCodeInfo.Location location = 1; |
public static final int LOCATION_FIELD_NUMBER = 1; |
private java.util.List<com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location> location_; |
public java.util.List<com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location> getLocationList() { |
return location_; |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.SourceCodeInfo.LocationOrBuilder> |
getLocationOrBuilderList() { |
return location_; |
} |
public int getLocationCount() { |
return location_.size(); |
} |
public com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location getLocation(int index) { |
return location_.get(index); |
} |
public com.google.protobuf.DescriptorProtos.SourceCodeInfo.LocationOrBuilder getLocationOrBuilder( |
int index) { |
return location_.get(index); |
} |
private void initFields() { |
location_ = java.util.Collections.emptyList(); |
} |
private byte memoizedIsInitialized = -1; |
public final boolean isInitialized() { |
byte isInitialized = memoizedIsInitialized; |
if (isInitialized != -1) return isInitialized == 1; |
memoizedIsInitialized = 1; |
return true; |
} |
public void writeTo(com.google.protobuf.CodedOutputStream output) |
throws java.io.IOException { |
getSerializedSize(); |
for (int i = 0; i < location_.size(); i++) { |
output.writeMessage(1, location_.get(i)); |
} |
getUnknownFields().writeTo(output); |
} |
private int memoizedSerializedSize = -1; |
public int getSerializedSize() { |
int size = memoizedSerializedSize; |
if (size != -1) return size; |
size = 0; |
for (int i = 0; i < location_.size(); i++) { |
size += com.google.protobuf.CodedOutputStream |
.computeMessageSize(1, location_.get(i)); |
} |
size += getUnknownFields().getSerializedSize(); |
memoizedSerializedSize = size; |
return size; |
} |
private static final long serialVersionUID = 0L; |
@java.lang.Override |
protected java.lang.Object writeReplace() |
throws java.io.ObjectStreamException { |
return super.writeReplace(); |
} |
public static com.google.protobuf.DescriptorProtos.SourceCodeInfo parseFrom( |
com.google.protobuf.ByteString data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.SourceCodeInfo parseFrom( |
com.google.protobuf.ByteString data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.SourceCodeInfo parseFrom(byte[] data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.SourceCodeInfo parseFrom( |
byte[] data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.SourceCodeInfo parseFrom(java.io.InputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.SourceCodeInfo parseFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.SourceCodeInfo parseDelimitedFrom(java.io.InputStream input) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.SourceCodeInfo parseDelimitedFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input, extensionRegistry)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static com.google.protobuf.DescriptorProtos.SourceCodeInfo parseFrom( |
com.google.protobuf.CodedInputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static com.google.protobuf.DescriptorProtos.SourceCodeInfo parseFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static Builder newBuilder() { return Builder.create(); } |
public Builder newBuilderForType() { return newBuilder(); } |
public static Builder newBuilder(com.google.protobuf.DescriptorProtos.SourceCodeInfo prototype) { |
return newBuilder().mergeFrom(prototype); |
} |
public Builder toBuilder() { return newBuilder(this); } |
@java.lang.Override |
protected Builder newBuilderForType( |
com.google.protobuf.GeneratedMessage.BuilderParent parent) { |
Builder builder = new Builder(parent); |
return builder; |
} |
public static final class Builder extends |
com.google.protobuf.GeneratedMessage.Builder<Builder> |
implements com.google.protobuf.DescriptorProtos.SourceCodeInfoOrBuilder { |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_SourceCodeInfo_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return com.google.protobuf.DescriptorProtos.internal_static_google_protobuf_SourceCodeInfo_fieldAccessorTable; |
} |
// Construct using com.google.protobuf.DescriptorProtos.SourceCodeInfo.newBuilder() |
private Builder() { |
maybeForceBuilderInitialization(); |
} |
private Builder(BuilderParent parent) { |
super(parent); |
maybeForceBuilderInitialization(); |
} |
private void maybeForceBuilderInitialization() { |
if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { |
getLocationFieldBuilder(); |
} |
} |
private static Builder create() { |
return new Builder(); |
} |
public Builder clear() { |
super.clear(); |
if (locationBuilder_ == null) { |
location_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000001); |
} else { |
locationBuilder_.clear(); |
} |
return this; |
} |
public Builder clone() { |
return create().mergeFrom(buildPartial()); |
} |
public com.google.protobuf.Descriptors.Descriptor |
getDescriptorForType() { |
return com.google.protobuf.DescriptorProtos.SourceCodeInfo.getDescriptor(); |
} |
public com.google.protobuf.DescriptorProtos.SourceCodeInfo getDefaultInstanceForType() { |
return com.google.protobuf.DescriptorProtos.SourceCodeInfo.getDefaultInstance(); |
} |
public com.google.protobuf.DescriptorProtos.SourceCodeInfo build() { |
com.google.protobuf.DescriptorProtos.SourceCodeInfo result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException(result); |
} |
return result; |
} |
private com.google.protobuf.DescriptorProtos.SourceCodeInfo buildParsed() |
throws com.google.protobuf.InvalidProtocolBufferException { |
com.google.protobuf.DescriptorProtos.SourceCodeInfo result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException( |
result).asInvalidProtocolBufferException(); |
} |
return result; |
} |
public com.google.protobuf.DescriptorProtos.SourceCodeInfo buildPartial() { |
com.google.protobuf.DescriptorProtos.SourceCodeInfo result = new com.google.protobuf.DescriptorProtos.SourceCodeInfo(this); |
int from_bitField0_ = bitField0_; |
if (locationBuilder_ == null) { |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
location_ = java.util.Collections.unmodifiableList(location_); |
bitField0_ = (bitField0_ & ~0x00000001); |
} |
result.location_ = location_; |
} else { |
result.location_ = locationBuilder_.build(); |
} |
onBuilt(); |
return result; |
} |
public Builder mergeFrom(com.google.protobuf.Message other) { |
if (other instanceof com.google.protobuf.DescriptorProtos.SourceCodeInfo) { |
return mergeFrom((com.google.protobuf.DescriptorProtos.SourceCodeInfo)other); |
} else { |
super.mergeFrom(other); |
return this; |
} |
} |
public Builder mergeFrom(com.google.protobuf.DescriptorProtos.SourceCodeInfo other) { |
if (other == com.google.protobuf.DescriptorProtos.SourceCodeInfo.getDefaultInstance()) return this; |
if (locationBuilder_ == null) { |
if (!other.location_.isEmpty()) { |
if (location_.isEmpty()) { |
location_ = other.location_; |
bitField0_ = (bitField0_ & ~0x00000001); |
} else { |
ensureLocationIsMutable(); |
location_.addAll(other.location_); |
} |
onChanged(); |
} |
} else { |
if (!other.location_.isEmpty()) { |
if (locationBuilder_.isEmpty()) { |
locationBuilder_.dispose(); |
locationBuilder_ = null; |
location_ = other.location_; |
bitField0_ = (bitField0_ & ~0x00000001); |
locationBuilder_ = |
com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? |
getLocationFieldBuilder() : null; |
} else { |
locationBuilder_.addAllMessages(other.location_); |
} |
} |
} |
this.mergeUnknownFields(other.getUnknownFields()); |
return this; |
} |
public final boolean isInitialized() { |
return true; |
} |
public Builder mergeFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
com.google.protobuf.UnknownFieldSet.Builder unknownFields = |
com.google.protobuf.UnknownFieldSet.newBuilder( |
this.getUnknownFields()); |
while (true) { |
int tag = input.readTag(); |
switch (tag) { |
case 0: |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
default: { |
if (!parseUnknownField(input, unknownFields, |
extensionRegistry, tag)) { |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
} |
break; |
} |
case 10: { |
com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location.Builder subBuilder = com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location.newBuilder(); |
input.readMessage(subBuilder, extensionRegistry); |
addLocation(subBuilder.buildPartial()); |
break; |
} |
} |
} |
} |
private int bitField0_; |
// repeated .google.protobuf.SourceCodeInfo.Location location = 1; |
private java.util.List<com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location> location_ = |
java.util.Collections.emptyList(); |
private void ensureLocationIsMutable() { |
if (!((bitField0_ & 0x00000001) == 0x00000001)) { |
location_ = new java.util.ArrayList<com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location>(location_); |
bitField0_ |= 0x00000001; |
} |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location, com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location.Builder, com.google.protobuf.DescriptorProtos.SourceCodeInfo.LocationOrBuilder> locationBuilder_; |
public java.util.List<com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location> getLocationList() { |
if (locationBuilder_ == null) { |
return java.util.Collections.unmodifiableList(location_); |
} else { |
return locationBuilder_.getMessageList(); |
} |
} |
public int getLocationCount() { |
if (locationBuilder_ == null) { |
return location_.size(); |
} else { |
return locationBuilder_.getCount(); |
} |
} |
public com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location getLocation(int index) { |
if (locationBuilder_ == null) { |
return location_.get(index); |
} else { |
return locationBuilder_.getMessage(index); |
} |
} |
public Builder setLocation( |
int index, com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location value) { |
if (locationBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureLocationIsMutable(); |
location_.set(index, value); |
onChanged(); |
} else { |
locationBuilder_.setMessage(index, value); |
} |
return this; |
} |
public Builder setLocation( |
int index, com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location.Builder builderForValue) { |
if (locationBuilder_ == null) { |
ensureLocationIsMutable(); |
location_.set(index, builderForValue.build()); |
onChanged(); |
} else { |
locationBuilder_.setMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addLocation(com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location value) { |
if (locationBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureLocationIsMutable(); |
location_.add(value); |
onChanged(); |
} else { |
locationBuilder_.addMessage(value); |
} |
return this; |
} |
public Builder addLocation( |
int index, com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location value) { |
if (locationBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureLocationIsMutable(); |
location_.add(index, value); |
onChanged(); |
} else { |
locationBuilder_.addMessage(index, value); |
} |
return this; |
} |
public Builder addLocation( |
com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location.Builder builderForValue) { |
if (locationBuilder_ == null) { |
ensureLocationIsMutable(); |
location_.add(builderForValue.build()); |
onChanged(); |
} else { |
locationBuilder_.addMessage(builderForValue.build()); |
} |
return this; |
} |
public Builder addLocation( |
int index, com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location.Builder builderForValue) { |
if (locationBuilder_ == null) { |
ensureLocationIsMutable(); |
location_.add(index, builderForValue.build()); |
onChanged(); |
} else { |
locationBuilder_.addMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addAllLocation( |
java.lang.Iterable<? extends com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location> values) { |
if (locationBuilder_ == null) { |
ensureLocationIsMutable(); |
super.addAll(values, location_); |
onChanged(); |
} else { |
locationBuilder_.addAllMessages(values); |
} |
return this; |
} |
public Builder clearLocation() { |
if (locationBuilder_ == null) { |
location_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000001); |
onChanged(); |
} else { |
locationBuilder_.clear(); |
} |
return this; |
} |
public Builder removeLocation(int index) { |
if (locationBuilder_ == null) { |
ensureLocationIsMutable(); |
location_.remove(index); |
onChanged(); |
} else { |
locationBuilder_.remove(index); |
} |
return this; |
} |
public com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location.Builder getLocationBuilder( |
int index) { |
return getLocationFieldBuilder().getBuilder(index); |
} |
public com.google.protobuf.DescriptorProtos.SourceCodeInfo.LocationOrBuilder getLocationOrBuilder( |
int index) { |
if (locationBuilder_ == null) { |
return location_.get(index); } else { |
return locationBuilder_.getMessageOrBuilder(index); |
} |
} |
public java.util.List<? extends com.google.protobuf.DescriptorProtos.SourceCodeInfo.LocationOrBuilder> |
getLocationOrBuilderList() { |
if (locationBuilder_ != null) { |
return locationBuilder_.getMessageOrBuilderList(); |
} else { |
return java.util.Collections.unmodifiableList(location_); |
} |
} |
public com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location.Builder addLocationBuilder() { |
return getLocationFieldBuilder().addBuilder( |
com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location.getDefaultInstance()); |
} |
public com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location.Builder addLocationBuilder( |
int index) { |
return getLocationFieldBuilder().addBuilder( |
index, com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location.getDefaultInstance()); |
} |
public java.util.List<com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location.Builder> |
getLocationBuilderList() { |
return getLocationFieldBuilder().getBuilderList(); |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location, com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location.Builder, com.google.protobuf.DescriptorProtos.SourceCodeInfo.LocationOrBuilder> |
getLocationFieldBuilder() { |
if (locationBuilder_ == null) { |
locationBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< |
com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location, com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location.Builder, com.google.protobuf.DescriptorProtos.SourceCodeInfo.LocationOrBuilder>( |
location_, |
((bitField0_ & 0x00000001) == 0x00000001), |
getParentForChildren(), |
isClean()); |
location_ = null; |
} |
return locationBuilder_; |
} |
// @@protoc_insertion_point(builder_scope:google.protobuf.SourceCodeInfo) |
} |
static { |
defaultInstance = new SourceCodeInfo(true); |
defaultInstance.initFields(); |
} |
// @@protoc_insertion_point(class_scope:google.protobuf.SourceCodeInfo) |
} |
private static com.google.protobuf.Descriptors.Descriptor |
internal_static_google_protobuf_FileDescriptorSet_descriptor; |
private static |
com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internal_static_google_protobuf_FileDescriptorSet_fieldAccessorTable; |
private static com.google.protobuf.Descriptors.Descriptor |
internal_static_google_protobuf_FileDescriptorProto_descriptor; |
private static |
com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internal_static_google_protobuf_FileDescriptorProto_fieldAccessorTable; |
private static com.google.protobuf.Descriptors.Descriptor |
internal_static_google_protobuf_DescriptorProto_descriptor; |
private static |
com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internal_static_google_protobuf_DescriptorProto_fieldAccessorTable; |
private static com.google.protobuf.Descriptors.Descriptor |
internal_static_google_protobuf_DescriptorProto_ExtensionRange_descriptor; |
private static |
com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internal_static_google_protobuf_DescriptorProto_ExtensionRange_fieldAccessorTable; |
private static com.google.protobuf.Descriptors.Descriptor |
internal_static_google_protobuf_FieldDescriptorProto_descriptor; |
private static |
com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internal_static_google_protobuf_FieldDescriptorProto_fieldAccessorTable; |
private static com.google.protobuf.Descriptors.Descriptor |
internal_static_google_protobuf_EnumDescriptorProto_descriptor; |
private static |
com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internal_static_google_protobuf_EnumDescriptorProto_fieldAccessorTable; |
private static com.google.protobuf.Descriptors.Descriptor |
internal_static_google_protobuf_EnumValueDescriptorProto_descriptor; |
private static |
com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internal_static_google_protobuf_EnumValueDescriptorProto_fieldAccessorTable; |
private static com.google.protobuf.Descriptors.Descriptor |
internal_static_google_protobuf_ServiceDescriptorProto_descriptor; |
private static |
com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internal_static_google_protobuf_ServiceDescriptorProto_fieldAccessorTable; |
private static com.google.protobuf.Descriptors.Descriptor |
internal_static_google_protobuf_MethodDescriptorProto_descriptor; |
private static |
com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internal_static_google_protobuf_MethodDescriptorProto_fieldAccessorTable; |
private static com.google.protobuf.Descriptors.Descriptor |
internal_static_google_protobuf_FileOptions_descriptor; |
private static |
com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internal_static_google_protobuf_FileOptions_fieldAccessorTable; |
private static com.google.protobuf.Descriptors.Descriptor |
internal_static_google_protobuf_MessageOptions_descriptor; |
private static |
com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internal_static_google_protobuf_MessageOptions_fieldAccessorTable; |
private static com.google.protobuf.Descriptors.Descriptor |
internal_static_google_protobuf_FieldOptions_descriptor; |
private static |
com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internal_static_google_protobuf_FieldOptions_fieldAccessorTable; |
private static com.google.protobuf.Descriptors.Descriptor |
internal_static_google_protobuf_EnumOptions_descriptor; |
private static |
com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internal_static_google_protobuf_EnumOptions_fieldAccessorTable; |
private static com.google.protobuf.Descriptors.Descriptor |
internal_static_google_protobuf_EnumValueOptions_descriptor; |
private static |
com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internal_static_google_protobuf_EnumValueOptions_fieldAccessorTable; |
private static com.google.protobuf.Descriptors.Descriptor |
internal_static_google_protobuf_ServiceOptions_descriptor; |
private static |
com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internal_static_google_protobuf_ServiceOptions_fieldAccessorTable; |
private static com.google.protobuf.Descriptors.Descriptor |
internal_static_google_protobuf_MethodOptions_descriptor; |
private static |
com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internal_static_google_protobuf_MethodOptions_fieldAccessorTable; |
private static com.google.protobuf.Descriptors.Descriptor |
internal_static_google_protobuf_UninterpretedOption_descriptor; |
private static |
com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internal_static_google_protobuf_UninterpretedOption_fieldAccessorTable; |
private static com.google.protobuf.Descriptors.Descriptor |
internal_static_google_protobuf_UninterpretedOption_NamePart_descriptor; |
private static |
com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internal_static_google_protobuf_UninterpretedOption_NamePart_fieldAccessorTable; |
private static com.google.protobuf.Descriptors.Descriptor |
internal_static_google_protobuf_SourceCodeInfo_descriptor; |
private static |
com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internal_static_google_protobuf_SourceCodeInfo_fieldAccessorTable; |
private static com.google.protobuf.Descriptors.Descriptor |
internal_static_google_protobuf_SourceCodeInfo_Location_descriptor; |
private static |
com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internal_static_google_protobuf_SourceCodeInfo_Location_fieldAccessorTable; |
public static com.google.protobuf.Descriptors.FileDescriptor |
getDescriptor() { |
return descriptor; |
} |
private static com.google.protobuf.Descriptors.FileDescriptor |
descriptor; |
static { |
java.lang.String[] descriptorData = { |
"\n google/protobuf/descriptor.proto\022\017goog" + |
"le.protobuf\"G\n\021FileDescriptorSet\0222\n\004file" + |
"\030\001 \003(\0132$.google.protobuf.FileDescriptorP" + |
"roto\"\227\003\n\023FileDescriptorProto\022\014\n\004name\030\001 \001" + |
"(\t\022\017\n\007package\030\002 \001(\t\022\022\n\ndependency\030\003 \003(\t\022" + |
"6\n\014message_type\030\004 \003(\0132 .google.protobuf." + |
"DescriptorProto\0227\n\tenum_type\030\005 \003(\0132$.goo" + |
"gle.protobuf.EnumDescriptorProto\0228\n\007serv" + |
"ice\030\006 \003(\0132\'.google.protobuf.ServiceDescr" + |
"iptorProto\0228\n\textension\030\007 \003(\0132%.google.p", |
"rotobuf.FieldDescriptorProto\022-\n\007options\030" + |
"\010 \001(\0132\034.google.protobuf.FileOptions\0229\n\020s" + |
"ource_code_info\030\t \001(\0132\037.google.protobuf." + |
"SourceCodeInfo\"\251\003\n\017DescriptorProto\022\014\n\004na" + |
"me\030\001 \001(\t\0224\n\005field\030\002 \003(\0132%.google.protobu" + |
"f.FieldDescriptorProto\0228\n\textension\030\006 \003(" + |
"\0132%.google.protobuf.FieldDescriptorProto" + |
"\0225\n\013nested_type\030\003 \003(\0132 .google.protobuf." + |
"DescriptorProto\0227\n\tenum_type\030\004 \003(\0132$.goo" + |
"gle.protobuf.EnumDescriptorProto\022H\n\017exte", |
"nsion_range\030\005 \003(\0132/.google.protobuf.Desc" + |
"riptorProto.ExtensionRange\0220\n\007options\030\007 " + |
"\001(\0132\037.google.protobuf.MessageOptions\032,\n\016" + |
"ExtensionRange\022\r\n\005start\030\001 \001(\005\022\013\n\003end\030\002 \001" + |
"(\005\"\224\005\n\024FieldDescriptorProto\022\014\n\004name\030\001 \001(" + |
"\t\022\016\n\006number\030\003 \001(\005\022:\n\005label\030\004 \001(\0162+.googl" + |
"e.protobuf.FieldDescriptorProto.Label\0228\n" + |
"\004type\030\005 \001(\0162*.google.protobuf.FieldDescr" + |
"iptorProto.Type\022\021\n\ttype_name\030\006 \001(\t\022\020\n\010ex" + |
"tendee\030\002 \001(\t\022\025\n\rdefault_value\030\007 \001(\t\022.\n\007o", |
"ptions\030\010 \001(\0132\035.google.protobuf.FieldOpti" + |
"ons\"\266\002\n\004Type\022\017\n\013TYPE_DOUBLE\020\001\022\016\n\nTYPE_FL" + |
"OAT\020\002\022\016\n\nTYPE_INT64\020\003\022\017\n\013TYPE_UINT64\020\004\022\016" + |
"\n\nTYPE_INT32\020\005\022\020\n\014TYPE_FIXED64\020\006\022\020\n\014TYPE" + |
"_FIXED32\020\007\022\r\n\tTYPE_BOOL\020\010\022\017\n\013TYPE_STRING" + |
"\020\t\022\016\n\nTYPE_GROUP\020\n\022\020\n\014TYPE_MESSAGE\020\013\022\016\n\n" + |
"TYPE_BYTES\020\014\022\017\n\013TYPE_UINT32\020\r\022\r\n\tTYPE_EN" + |
"UM\020\016\022\021\n\rTYPE_SFIXED32\020\017\022\021\n\rTYPE_SFIXED64" + |
"\020\020\022\017\n\013TYPE_SINT32\020\021\022\017\n\013TYPE_SINT64\020\022\"C\n\005" + |
"Label\022\022\n\016LABEL_OPTIONAL\020\001\022\022\n\016LABEL_REQUI", |
"RED\020\002\022\022\n\016LABEL_REPEATED\020\003\"\214\001\n\023EnumDescri" + |
"ptorProto\022\014\n\004name\030\001 \001(\t\0228\n\005value\030\002 \003(\0132)" + |
".google.protobuf.EnumValueDescriptorProt" + |
"o\022-\n\007options\030\003 \001(\0132\034.google.protobuf.Enu" + |
"mOptions\"l\n\030EnumValueDescriptorProto\022\014\n\004" + |
"name\030\001 \001(\t\022\016\n\006number\030\002 \001(\005\0222\n\007options\030\003 " + |
"\001(\0132!.google.protobuf.EnumValueOptions\"\220" + |
"\001\n\026ServiceDescriptorProto\022\014\n\004name\030\001 \001(\t\022" + |
"6\n\006method\030\002 \003(\0132&.google.protobuf.Method" + |
"DescriptorProto\0220\n\007options\030\003 \001(\0132\037.googl", |
"e.protobuf.ServiceOptions\"\177\n\025MethodDescr" + |
"iptorProto\022\014\n\004name\030\001 \001(\t\022\022\n\ninput_type\030\002" + |
" \001(\t\022\023\n\013output_type\030\003 \001(\t\022/\n\007options\030\004 \001" + |
"(\0132\036.google.protobuf.MethodOptions\"\325\003\n\013F" + |
"ileOptions\022\024\n\014java_package\030\001 \001(\t\022\034\n\024java" + |
"_outer_classname\030\010 \001(\t\022\"\n\023java_multiple_" + |
"files\030\n \001(\010:\005false\022,\n\035java_generate_equa" + |
"ls_and_hash\030\024 \001(\010:\005false\022F\n\014optimize_for" + |
"\030\t \001(\0162).google.protobuf.FileOptions.Opt" + |
"imizeMode:\005SPEED\022\"\n\023cc_generic_services\030", |
"\020 \001(\010:\005false\022$\n\025java_generic_services\030\021 " + |
"\001(\010:\005false\022\"\n\023py_generic_services\030\022 \001(\010:" + |
"\005false\022C\n\024uninterpreted_option\030\347\007 \003(\0132$." + |
"google.protobuf.UninterpretedOption\":\n\014O" + |
"ptimizeMode\022\t\n\005SPEED\020\001\022\r\n\tCODE_SIZE\020\002\022\020\n" + |
"\014LITE_RUNTIME\020\003*\t\010\350\007\020\200\200\200\200\002\"\270\001\n\016MessageOp" + |
"tions\022&\n\027message_set_wire_format\030\001 \001(\010:\005" + |
"false\022.\n\037no_standard_descriptor_accessor" + |
"\030\002 \001(\010:\005false\022C\n\024uninterpreted_option\030\347\007" + |
" \003(\0132$.google.protobuf.UninterpretedOpti", |
"on*\t\010\350\007\020\200\200\200\200\002\"\224\002\n\014FieldOptions\022:\n\005ctype\030" + |
"\001 \001(\0162#.google.protobuf.FieldOptions.CTy" + |
"pe:\006STRING\022\016\n\006packed\030\002 \001(\010\022\031\n\ndeprecated" + |
"\030\003 \001(\010:\005false\022\034\n\024experimental_map_key\030\t " + |
"\001(\t\022C\n\024uninterpreted_option\030\347\007 \003(\0132$.goo" + |
"gle.protobuf.UninterpretedOption\"/\n\005CTyp" + |
"e\022\n\n\006STRING\020\000\022\010\n\004CORD\020\001\022\020\n\014STRING_PIECE\020" + |
"\002*\t\010\350\007\020\200\200\200\200\002\"]\n\013EnumOptions\022C\n\024uninterpr" + |
"eted_option\030\347\007 \003(\0132$.google.protobuf.Uni" + |
"nterpretedOption*\t\010\350\007\020\200\200\200\200\002\"b\n\020EnumValue", |
"Options\022C\n\024uninterpreted_option\030\347\007 \003(\0132$" + |
".google.protobuf.UninterpretedOption*\t\010\350" + |
"\007\020\200\200\200\200\002\"`\n\016ServiceOptions\022C\n\024uninterpret" + |
"ed_option\030\347\007 \003(\0132$.google.protobuf.Unint" + |
"erpretedOption*\t\010\350\007\020\200\200\200\200\002\"_\n\rMethodOptio" + |
"ns\022C\n\024uninterpreted_option\030\347\007 \003(\0132$.goog" + |
"le.protobuf.UninterpretedOption*\t\010\350\007\020\200\200\200" + |
"\200\002\"\236\002\n\023UninterpretedOption\022;\n\004name\030\002 \003(\013" + |
"2-.google.protobuf.UninterpretedOption.N" + |
"amePart\022\030\n\020identifier_value\030\003 \001(\t\022\032\n\022pos", |
"itive_int_value\030\004 \001(\004\022\032\n\022negative_int_va" + |
"lue\030\005 \001(\003\022\024\n\014double_value\030\006 \001(\001\022\024\n\014strin" + |
"g_value\030\007 \001(\014\022\027\n\017aggregate_value\030\010 \001(\t\0323" + |
"\n\010NamePart\022\021\n\tname_part\030\001 \002(\t\022\024\n\014is_exte" + |
"nsion\030\002 \002(\010\"|\n\016SourceCodeInfo\022:\n\010locatio" + |
"n\030\001 \003(\0132(.google.protobuf.SourceCodeInfo" + |
".Location\032.\n\010Location\022\020\n\004path\030\001 \003(\005B\002\020\001\022" + |
"\020\n\004span\030\002 \003(\005B\002\020\001B)\n\023com.google.protobuf" + |
"B\020DescriptorProtosH\001" |
}; |
com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = |
new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() { |
public com.google.protobuf.ExtensionRegistry assignDescriptors( |
com.google.protobuf.Descriptors.FileDescriptor root) { |
descriptor = root; |
internal_static_google_protobuf_FileDescriptorSet_descriptor = |
getDescriptor().getMessageTypes().get(0); |
internal_static_google_protobuf_FileDescriptorSet_fieldAccessorTable = new |
com.google.protobuf.GeneratedMessage.FieldAccessorTable( |
internal_static_google_protobuf_FileDescriptorSet_descriptor, |
new java.lang.String[] { "File", }, |
com.google.protobuf.DescriptorProtos.FileDescriptorSet.class, |
com.google.protobuf.DescriptorProtos.FileDescriptorSet.Builder.class); |
internal_static_google_protobuf_FileDescriptorProto_descriptor = |
getDescriptor().getMessageTypes().get(1); |
internal_static_google_protobuf_FileDescriptorProto_fieldAccessorTable = new |
com.google.protobuf.GeneratedMessage.FieldAccessorTable( |
internal_static_google_protobuf_FileDescriptorProto_descriptor, |
new java.lang.String[] { "Name", "Package", "Dependency", "MessageType", "EnumType", "Service", "Extension", "Options", "SourceCodeInfo", }, |
com.google.protobuf.DescriptorProtos.FileDescriptorProto.class, |
com.google.protobuf.DescriptorProtos.FileDescriptorProto.Builder.class); |
internal_static_google_protobuf_DescriptorProto_descriptor = |
getDescriptor().getMessageTypes().get(2); |
internal_static_google_protobuf_DescriptorProto_fieldAccessorTable = new |
com.google.protobuf.GeneratedMessage.FieldAccessorTable( |
internal_static_google_protobuf_DescriptorProto_descriptor, |
new java.lang.String[] { "Name", "Field", "Extension", "NestedType", "EnumType", "ExtensionRange", "Options", }, |
com.google.protobuf.DescriptorProtos.DescriptorProto.class, |
com.google.protobuf.DescriptorProtos.DescriptorProto.Builder.class); |
internal_static_google_protobuf_DescriptorProto_ExtensionRange_descriptor = |
internal_static_google_protobuf_DescriptorProto_descriptor.getNestedTypes().get(0); |
internal_static_google_protobuf_DescriptorProto_ExtensionRange_fieldAccessorTable = new |
com.google.protobuf.GeneratedMessage.FieldAccessorTable( |
internal_static_google_protobuf_DescriptorProto_ExtensionRange_descriptor, |
new java.lang.String[] { "Start", "End", }, |
com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.class, |
com.google.protobuf.DescriptorProtos.DescriptorProto.ExtensionRange.Builder.class); |
internal_static_google_protobuf_FieldDescriptorProto_descriptor = |
getDescriptor().getMessageTypes().get(3); |
internal_static_google_protobuf_FieldDescriptorProto_fieldAccessorTable = new |
com.google.protobuf.GeneratedMessage.FieldAccessorTable( |
internal_static_google_protobuf_FieldDescriptorProto_descriptor, |
new java.lang.String[] { "Name", "Number", "Label", "Type", "TypeName", "Extendee", "DefaultValue", "Options", }, |
com.google.protobuf.DescriptorProtos.FieldDescriptorProto.class, |
com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder.class); |
internal_static_google_protobuf_EnumDescriptorProto_descriptor = |
getDescriptor().getMessageTypes().get(4); |
internal_static_google_protobuf_EnumDescriptorProto_fieldAccessorTable = new |
com.google.protobuf.GeneratedMessage.FieldAccessorTable( |
internal_static_google_protobuf_EnumDescriptorProto_descriptor, |
new java.lang.String[] { "Name", "Value", "Options", }, |
com.google.protobuf.DescriptorProtos.EnumDescriptorProto.class, |
com.google.protobuf.DescriptorProtos.EnumDescriptorProto.Builder.class); |
internal_static_google_protobuf_EnumValueDescriptorProto_descriptor = |
getDescriptor().getMessageTypes().get(5); |
internal_static_google_protobuf_EnumValueDescriptorProto_fieldAccessorTable = new |
com.google.protobuf.GeneratedMessage.FieldAccessorTable( |
internal_static_google_protobuf_EnumValueDescriptorProto_descriptor, |
new java.lang.String[] { "Name", "Number", "Options", }, |
com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.class, |
com.google.protobuf.DescriptorProtos.EnumValueDescriptorProto.Builder.class); |
internal_static_google_protobuf_ServiceDescriptorProto_descriptor = |
getDescriptor().getMessageTypes().get(6); |
internal_static_google_protobuf_ServiceDescriptorProto_fieldAccessorTable = new |
com.google.protobuf.GeneratedMessage.FieldAccessorTable( |
internal_static_google_protobuf_ServiceDescriptorProto_descriptor, |
new java.lang.String[] { "Name", "Method", "Options", }, |
com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.class, |
com.google.protobuf.DescriptorProtos.ServiceDescriptorProto.Builder.class); |
internal_static_google_protobuf_MethodDescriptorProto_descriptor = |
getDescriptor().getMessageTypes().get(7); |
internal_static_google_protobuf_MethodDescriptorProto_fieldAccessorTable = new |
com.google.protobuf.GeneratedMessage.FieldAccessorTable( |
internal_static_google_protobuf_MethodDescriptorProto_descriptor, |
new java.lang.String[] { "Name", "InputType", "OutputType", "Options", }, |
com.google.protobuf.DescriptorProtos.MethodDescriptorProto.class, |
com.google.protobuf.DescriptorProtos.MethodDescriptorProto.Builder.class); |
internal_static_google_protobuf_FileOptions_descriptor = |
getDescriptor().getMessageTypes().get(8); |
internal_static_google_protobuf_FileOptions_fieldAccessorTable = new |
com.google.protobuf.GeneratedMessage.FieldAccessorTable( |
internal_static_google_protobuf_FileOptions_descriptor, |
new java.lang.String[] { "JavaPackage", "JavaOuterClassname", "JavaMultipleFiles", "JavaGenerateEqualsAndHash", "OptimizeFor", "CcGenericServices", "JavaGenericServices", "PyGenericServices", "UninterpretedOption", }, |
com.google.protobuf.DescriptorProtos.FileOptions.class, |
com.google.protobuf.DescriptorProtos.FileOptions.Builder.class); |
internal_static_google_protobuf_MessageOptions_descriptor = |
getDescriptor().getMessageTypes().get(9); |
internal_static_google_protobuf_MessageOptions_fieldAccessorTable = new |
com.google.protobuf.GeneratedMessage.FieldAccessorTable( |
internal_static_google_protobuf_MessageOptions_descriptor, |
new java.lang.String[] { "MessageSetWireFormat", "NoStandardDescriptorAccessor", "UninterpretedOption", }, |
com.google.protobuf.DescriptorProtos.MessageOptions.class, |
com.google.protobuf.DescriptorProtos.MessageOptions.Builder.class); |
internal_static_google_protobuf_FieldOptions_descriptor = |
getDescriptor().getMessageTypes().get(10); |
internal_static_google_protobuf_FieldOptions_fieldAccessorTable = new |
com.google.protobuf.GeneratedMessage.FieldAccessorTable( |
internal_static_google_protobuf_FieldOptions_descriptor, |
new java.lang.String[] { "Ctype", "Packed", "Deprecated", "ExperimentalMapKey", "UninterpretedOption", }, |
com.google.protobuf.DescriptorProtos.FieldOptions.class, |
com.google.protobuf.DescriptorProtos.FieldOptions.Builder.class); |
internal_static_google_protobuf_EnumOptions_descriptor = |
getDescriptor().getMessageTypes().get(11); |
internal_static_google_protobuf_EnumOptions_fieldAccessorTable = new |
com.google.protobuf.GeneratedMessage.FieldAccessorTable( |
internal_static_google_protobuf_EnumOptions_descriptor, |
new java.lang.String[] { "UninterpretedOption", }, |
com.google.protobuf.DescriptorProtos.EnumOptions.class, |
com.google.protobuf.DescriptorProtos.EnumOptions.Builder.class); |
internal_static_google_protobuf_EnumValueOptions_descriptor = |
getDescriptor().getMessageTypes().get(12); |
internal_static_google_protobuf_EnumValueOptions_fieldAccessorTable = new |
com.google.protobuf.GeneratedMessage.FieldAccessorTable( |
internal_static_google_protobuf_EnumValueOptions_descriptor, |
new java.lang.String[] { "UninterpretedOption", }, |
com.google.protobuf.DescriptorProtos.EnumValueOptions.class, |
com.google.protobuf.DescriptorProtos.EnumValueOptions.Builder.class); |
internal_static_google_protobuf_ServiceOptions_descriptor = |
getDescriptor().getMessageTypes().get(13); |
internal_static_google_protobuf_ServiceOptions_fieldAccessorTable = new |
com.google.protobuf.GeneratedMessage.FieldAccessorTable( |
internal_static_google_protobuf_ServiceOptions_descriptor, |
new java.lang.String[] { "UninterpretedOption", }, |
com.google.protobuf.DescriptorProtos.ServiceOptions.class, |
com.google.protobuf.DescriptorProtos.ServiceOptions.Builder.class); |
internal_static_google_protobuf_MethodOptions_descriptor = |
getDescriptor().getMessageTypes().get(14); |
internal_static_google_protobuf_MethodOptions_fieldAccessorTable = new |
com.google.protobuf.GeneratedMessage.FieldAccessorTable( |
internal_static_google_protobuf_MethodOptions_descriptor, |
new java.lang.String[] { "UninterpretedOption", }, |
com.google.protobuf.DescriptorProtos.MethodOptions.class, |
com.google.protobuf.DescriptorProtos.MethodOptions.Builder.class); |
internal_static_google_protobuf_UninterpretedOption_descriptor = |
getDescriptor().getMessageTypes().get(15); |
internal_static_google_protobuf_UninterpretedOption_fieldAccessorTable = new |
com.google.protobuf.GeneratedMessage.FieldAccessorTable( |
internal_static_google_protobuf_UninterpretedOption_descriptor, |
new java.lang.String[] { "Name", "IdentifierValue", "PositiveIntValue", "NegativeIntValue", "DoubleValue", "StringValue", "AggregateValue", }, |
com.google.protobuf.DescriptorProtos.UninterpretedOption.class, |
com.google.protobuf.DescriptorProtos.UninterpretedOption.Builder.class); |
internal_static_google_protobuf_UninterpretedOption_NamePart_descriptor = |
internal_static_google_protobuf_UninterpretedOption_descriptor.getNestedTypes().get(0); |
internal_static_google_protobuf_UninterpretedOption_NamePart_fieldAccessorTable = new |
com.google.protobuf.GeneratedMessage.FieldAccessorTable( |
internal_static_google_protobuf_UninterpretedOption_NamePart_descriptor, |
new java.lang.String[] { "NamePart", "IsExtension", }, |
com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.class, |
com.google.protobuf.DescriptorProtos.UninterpretedOption.NamePart.Builder.class); |
internal_static_google_protobuf_SourceCodeInfo_descriptor = |
getDescriptor().getMessageTypes().get(16); |
internal_static_google_protobuf_SourceCodeInfo_fieldAccessorTable = new |
com.google.protobuf.GeneratedMessage.FieldAccessorTable( |
internal_static_google_protobuf_SourceCodeInfo_descriptor, |
new java.lang.String[] { "Location", }, |
com.google.protobuf.DescriptorProtos.SourceCodeInfo.class, |
com.google.protobuf.DescriptorProtos.SourceCodeInfo.Builder.class); |
internal_static_google_protobuf_SourceCodeInfo_Location_descriptor = |
internal_static_google_protobuf_SourceCodeInfo_descriptor.getNestedTypes().get(0); |
internal_static_google_protobuf_SourceCodeInfo_Location_fieldAccessorTable = new |
com.google.protobuf.GeneratedMessage.FieldAccessorTable( |
internal_static_google_protobuf_SourceCodeInfo_Location_descriptor, |
new java.lang.String[] { "Path", "Span", }, |
com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location.class, |
com.google.protobuf.DescriptorProtos.SourceCodeInfo.Location.Builder.class); |
return null; |
} |
}; |
com.google.protobuf.Descriptors.FileDescriptor |
.internalBuildGeneratedFileFrom(descriptorData, |
new com.google.protobuf.Descriptors.FileDescriptor[] { |
}, assigner); |
} |
// @@protoc_insertion_point(outer_class_scope) |
} |
/Android Development/IOIODebugger/src/com/google/protobuf/Descriptors.java |
---|
0,0 → 1,1887 |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
// |
// * Redistributions of source code must retain the above copyright |
// notice, this list of conditions and the following disclaimer. |
// * Redistributions in binary form must reproduce the above |
// copyright notice, this list of conditions and the following disclaimer |
// in the documentation and/or other materials provided with the |
// distribution. |
// * Neither the name of Google Inc. nor the names of its |
// contributors may be used to endorse or promote products derived from |
// this software without specific prior written permission. |
// |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
package com.google.protobuf; |
import com.google.protobuf.DescriptorProtos.*; |
import java.util.Arrays; |
import java.util.Collections; |
import java.util.HashMap; |
import java.util.List; |
import java.util.Map; |
import java.io.UnsupportedEncodingException; |
/** |
* Contains a collection of classes which describe protocol message types. |
* |
* Every message type has a {@link Descriptor}, which lists all |
* its fields and other information about a type. You can get a message |
* type's descriptor by calling {@code MessageType.getDescriptor()}, or |
* (given a message object of the type) {@code message.getDescriptorForType()}. |
* Furthermore, each message is associated with a {@link FileDescriptor} for |
* a relevant {@code .proto} file. You can obtain it by calling |
* {@code Descriptor.getFile()}. A {@link FileDescriptor} contains descriptors |
* for all the messages defined in that file, and file descriptors for all the |
* imported {@code .proto} files. |
* |
* Descriptors are built from DescriptorProtos, as defined in |
* {@code google/protobuf/descriptor.proto}. |
* |
* @author kenton@google.com Kenton Varda |
*/ |
public final class Descriptors { |
/** |
* Describes a {@code .proto} file, including everything defined within. |
* That includes, in particular, descriptors for all the messages and |
* file descriptors for all other imported {@code .proto} files |
* (dependencies). |
*/ |
public static final class FileDescriptor { |
/** Convert the descriptor to its protocol message representation. */ |
public FileDescriptorProto toProto() { return proto; } |
/** Get the file name. */ |
public String getName() { return proto.getName(); } |
/** |
* Get the proto package name. This is the package name given by the |
* {@code package} statement in the {@code .proto} file, which differs |
* from the Java package. |
*/ |
public String getPackage() { return proto.getPackage(); } |
/** Get the {@code FileOptions}, defined in {@code descriptor.proto}. */ |
public FileOptions getOptions() { return proto.getOptions(); } |
/** Get a list of top-level message types declared in this file. */ |
public List<Descriptor> getMessageTypes() { |
return Collections.unmodifiableList(Arrays.asList(messageTypes)); |
} |
/** Get a list of top-level enum types declared in this file. */ |
public List<EnumDescriptor> getEnumTypes() { |
return Collections.unmodifiableList(Arrays.asList(enumTypes)); |
} |
/** Get a list of top-level services declared in this file. */ |
public List<ServiceDescriptor> getServices() { |
return Collections.unmodifiableList(Arrays.asList(services)); |
} |
/** Get a list of top-level extensions declared in this file. */ |
public List<FieldDescriptor> getExtensions() { |
return Collections.unmodifiableList(Arrays.asList(extensions)); |
} |
/** Get a list of this file's dependencies (imports). */ |
public List<FileDescriptor> getDependencies() { |
return Collections.unmodifiableList(Arrays.asList(dependencies)); |
} |
/** |
* Find a message type in the file by name. Does not find nested types. |
* |
* @param name The unqualified type name to look for. |
* @return The message type's descriptor, or {@code null} if not found. |
*/ |
public Descriptor findMessageTypeByName(String name) { |
// Don't allow looking up nested types. This will make optimization |
// easier later. |
if (name.indexOf('.') != -1) { |
return null; |
} |
if (getPackage().length() > 0) { |
name = getPackage() + '.' + name; |
} |
final GenericDescriptor result = pool.findSymbol(name); |
if (result != null && result instanceof Descriptor && |
result.getFile() == this) { |
return (Descriptor)result; |
} else { |
return null; |
} |
} |
/** |
* Find an enum type in the file by name. Does not find nested types. |
* |
* @param name The unqualified type name to look for. |
* @return The enum type's descriptor, or {@code null} if not found. |
*/ |
public EnumDescriptor findEnumTypeByName(String name) { |
// Don't allow looking up nested types. This will make optimization |
// easier later. |
if (name.indexOf('.') != -1) { |
return null; |
} |
if (getPackage().length() > 0) { |
name = getPackage() + '.' + name; |
} |
final GenericDescriptor result = pool.findSymbol(name); |
if (result != null && result instanceof EnumDescriptor && |
result.getFile() == this) { |
return (EnumDescriptor)result; |
} else { |
return null; |
} |
} |
/** |
* Find a service type in the file by name. |
* |
* @param name The unqualified type name to look for. |
* @return The service type's descriptor, or {@code null} if not found. |
*/ |
public ServiceDescriptor findServiceByName(String name) { |
// Don't allow looking up nested types. This will make optimization |
// easier later. |
if (name.indexOf('.') != -1) { |
return null; |
} |
if (getPackage().length() > 0) { |
name = getPackage() + '.' + name; |
} |
final GenericDescriptor result = pool.findSymbol(name); |
if (result != null && result instanceof ServiceDescriptor && |
result.getFile() == this) { |
return (ServiceDescriptor)result; |
} else { |
return null; |
} |
} |
/** |
* Find an extension in the file by name. Does not find extensions nested |
* inside message types. |
* |
* @param name The unqualified extension name to look for. |
* @return The extension's descriptor, or {@code null} if not found. |
*/ |
public FieldDescriptor findExtensionByName(String name) { |
if (name.indexOf('.') != -1) { |
return null; |
} |
if (getPackage().length() > 0) { |
name = getPackage() + '.' + name; |
} |
final GenericDescriptor result = pool.findSymbol(name); |
if (result != null && result instanceof FieldDescriptor && |
result.getFile() == this) { |
return (FieldDescriptor)result; |
} else { |
return null; |
} |
} |
/** |
* Construct a {@code FileDescriptor}. |
* |
* @param proto The protocol message form of the FileDescriptor. |
* @param dependencies {@code FileDescriptor}s corresponding to all of |
* the file's dependencies, in the exact order listed |
* in {@code proto}. |
* @throws DescriptorValidationException {@code proto} is not a valid |
* descriptor. This can occur for a number of reasons, e.g. |
* because a field has an undefined type or because two messages |
* were defined with the same name. |
*/ |
public static FileDescriptor buildFrom(final FileDescriptorProto proto, |
final FileDescriptor[] dependencies) |
throws DescriptorValidationException { |
// Building decsriptors involves two steps: translating and linking. |
// In the translation step (implemented by FileDescriptor's |
// constructor), we build an object tree mirroring the |
// FileDescriptorProto's tree and put all of the descriptors into the |
// DescriptorPool's lookup tables. In the linking step, we look up all |
// type references in the DescriptorPool, so that, for example, a |
// FieldDescriptor for an embedded message contains a pointer directly |
// to the Descriptor for that message's type. We also detect undefined |
// types in the linking step. |
final DescriptorPool pool = new DescriptorPool(dependencies); |
final FileDescriptor result = |
new FileDescriptor(proto, dependencies, pool); |
if (dependencies.length != proto.getDependencyCount()) { |
throw new DescriptorValidationException(result, |
"Dependencies passed to FileDescriptor.buildFrom() don't match " + |
"those listed in the FileDescriptorProto."); |
} |
for (int i = 0; i < proto.getDependencyCount(); i++) { |
if (!dependencies[i].getName().equals(proto.getDependency(i))) { |
throw new DescriptorValidationException(result, |
"Dependencies passed to FileDescriptor.buildFrom() don't match " + |
"those listed in the FileDescriptorProto."); |
} |
} |
result.crossLink(); |
return result; |
} |
/** |
* This method is to be called by generated code only. It is equivalent |
* to {@code buildFrom} except that the {@code FileDescriptorProto} is |
* encoded in protocol buffer wire format. |
*/ |
public static void internalBuildGeneratedFileFrom( |
final String[] descriptorDataParts, |
final FileDescriptor[] dependencies, |
final InternalDescriptorAssigner descriptorAssigner) { |
// Hack: We can't embed a raw byte array inside generated Java code |
// (at least, not efficiently), but we can embed Strings. So, the |
// protocol compiler embeds the FileDescriptorProto as a giant |
// string literal which is passed to this function to construct the |
// file's FileDescriptor. The string literal contains only 8-bit |
// characters, each one representing a byte of the FileDescriptorProto's |
// serialized form. So, if we convert it to bytes in ISO-8859-1, we |
// should get the original bytes that we want. |
// descriptorData may contain multiple strings in order to get around the |
// Java 64k string literal limit. |
StringBuilder descriptorData = new StringBuilder(); |
for (String part : descriptorDataParts) { |
descriptorData.append(part); |
} |
final byte[] descriptorBytes; |
try { |
descriptorBytes = descriptorData.toString().getBytes("ISO-8859-1"); |
} catch (UnsupportedEncodingException e) { |
throw new RuntimeException( |
"Standard encoding ISO-8859-1 not supported by JVM.", e); |
} |
FileDescriptorProto proto; |
try { |
proto = FileDescriptorProto.parseFrom(descriptorBytes); |
} catch (InvalidProtocolBufferException e) { |
throw new IllegalArgumentException( |
"Failed to parse protocol buffer descriptor for generated code.", e); |
} |
final FileDescriptor result; |
try { |
result = buildFrom(proto, dependencies); |
} catch (DescriptorValidationException e) { |
throw new IllegalArgumentException( |
"Invalid embedded descriptor for \"" + proto.getName() + "\".", e); |
} |
final ExtensionRegistry registry = |
descriptorAssigner.assignDescriptors(result); |
if (registry != null) { |
// We must re-parse the proto using the registry. |
try { |
proto = FileDescriptorProto.parseFrom(descriptorBytes, registry); |
} catch (InvalidProtocolBufferException e) { |
throw new IllegalArgumentException( |
"Failed to parse protocol buffer descriptor for generated code.", |
e); |
} |
result.setProto(proto); |
} |
} |
/** |
* This class should be used by generated code only. When calling |
* {@link FileDescriptor#internalBuildGeneratedFileFrom}, the caller |
* provides a callback implementing this interface. The callback is called |
* after the FileDescriptor has been constructed, in order to assign all |
* the global variales defined in the generated code which point at parts |
* of the FileDescriptor. The callback returns an ExtensionRegistry which |
* contains any extensions which might be used in the descriptor -- that |
* is, extensions of the various "Options" messages defined in |
* descriptor.proto. The callback may also return null to indicate that |
* no extensions are used in the decsriptor. |
*/ |
public interface InternalDescriptorAssigner { |
ExtensionRegistry assignDescriptors(FileDescriptor root); |
} |
private FileDescriptorProto proto; |
private final Descriptor[] messageTypes; |
private final EnumDescriptor[] enumTypes; |
private final ServiceDescriptor[] services; |
private final FieldDescriptor[] extensions; |
private final FileDescriptor[] dependencies; |
private final DescriptorPool pool; |
private FileDescriptor(final FileDescriptorProto proto, |
final FileDescriptor[] dependencies, |
final DescriptorPool pool) |
throws DescriptorValidationException { |
this.pool = pool; |
this.proto = proto; |
this.dependencies = dependencies.clone(); |
pool.addPackage(getPackage(), this); |
messageTypes = new Descriptor[proto.getMessageTypeCount()]; |
for (int i = 0; i < proto.getMessageTypeCount(); i++) { |
messageTypes[i] = |
new Descriptor(proto.getMessageType(i), this, null, i); |
} |
enumTypes = new EnumDescriptor[proto.getEnumTypeCount()]; |
for (int i = 0; i < proto.getEnumTypeCount(); i++) { |
enumTypes[i] = new EnumDescriptor(proto.getEnumType(i), this, null, i); |
} |
services = new ServiceDescriptor[proto.getServiceCount()]; |
for (int i = 0; i < proto.getServiceCount(); i++) { |
services[i] = new ServiceDescriptor(proto.getService(i), this, i); |
} |
extensions = new FieldDescriptor[proto.getExtensionCount()]; |
for (int i = 0; i < proto.getExtensionCount(); i++) { |
extensions[i] = new FieldDescriptor( |
proto.getExtension(i), this, null, i, true); |
} |
} |
/** Look up and cross-link all field types, etc. */ |
private void crossLink() throws DescriptorValidationException { |
for (final Descriptor messageType : messageTypes) { |
messageType.crossLink(); |
} |
for (final ServiceDescriptor service : services) { |
service.crossLink(); |
} |
for (final FieldDescriptor extension : extensions) { |
extension.crossLink(); |
} |
} |
/** |
* Replace our {@link FileDescriptorProto} with the given one, which is |
* identical except that it might contain extensions that weren't present |
* in the original. This method is needed for bootstrapping when a file |
* defines custom options. The options may be defined in the file itself, |
* so we can't actually parse them until we've constructed the descriptors, |
* but to construct the decsriptors we have to have parsed the descriptor |
* protos. So, we have to parse the descriptor protos a second time after |
* constructing the descriptors. |
*/ |
private void setProto(final FileDescriptorProto proto) { |
this.proto = proto; |
for (int i = 0; i < messageTypes.length; i++) { |
messageTypes[i].setProto(proto.getMessageType(i)); |
} |
for (int i = 0; i < enumTypes.length; i++) { |
enumTypes[i].setProto(proto.getEnumType(i)); |
} |
for (int i = 0; i < services.length; i++) { |
services[i].setProto(proto.getService(i)); |
} |
for (int i = 0; i < extensions.length; i++) { |
extensions[i].setProto(proto.getExtension(i)); |
} |
} |
} |
// ================================================================= |
/** Describes a message type. */ |
public static final class Descriptor implements GenericDescriptor { |
/** |
* Get the index of this descriptor within its parent. In other words, |
* given a {@link FileDescriptor} {@code file}, the following is true: |
* <pre> |
* for all i in [0, file.getMessageTypeCount()): |
* file.getMessageType(i).getIndex() == i |
* </pre> |
* Similarly, for a {@link Descriptor} {@code messageType}: |
* <pre> |
* for all i in [0, messageType.getNestedTypeCount()): |
* messageType.getNestedType(i).getIndex() == i |
* </pre> |
*/ |
public int getIndex() { return index; } |
/** Convert the descriptor to its protocol message representation. */ |
public DescriptorProto toProto() { return proto; } |
/** Get the type's unqualified name. */ |
public String getName() { return proto.getName(); } |
/** |
* Get the type's fully-qualified name, within the proto language's |
* namespace. This differs from the Java name. For example, given this |
* {@code .proto}: |
* <pre> |
* package foo.bar; |
* option java_package = "com.example.protos" |
* message Baz {} |
* </pre> |
* {@code Baz}'s full name is "foo.bar.Baz". |
*/ |
public String getFullName() { return fullName; } |
/** Get the {@link FileDescriptor} containing this descriptor. */ |
public FileDescriptor getFile() { return file; } |
/** If this is a nested type, get the outer descriptor, otherwise null. */ |
public Descriptor getContainingType() { return containingType; } |
/** Get the {@code MessageOptions}, defined in {@code descriptor.proto}. */ |
public MessageOptions getOptions() { return proto.getOptions(); } |
/** Get a list of this message type's fields. */ |
public List<FieldDescriptor> getFields() { |
return Collections.unmodifiableList(Arrays.asList(fields)); |
} |
/** Get a list of this message type's extensions. */ |
public List<FieldDescriptor> getExtensions() { |
return Collections.unmodifiableList(Arrays.asList(extensions)); |
} |
/** Get a list of message types nested within this one. */ |
public List<Descriptor> getNestedTypes() { |
return Collections.unmodifiableList(Arrays.asList(nestedTypes)); |
} |
/** Get a list of enum types nested within this one. */ |
public List<EnumDescriptor> getEnumTypes() { |
return Collections.unmodifiableList(Arrays.asList(enumTypes)); |
} |
/** Determines if the given field number is an extension. */ |
public boolean isExtensionNumber(final int number) { |
for (final DescriptorProto.ExtensionRange range : |
proto.getExtensionRangeList()) { |
if (range.getStart() <= number && number < range.getEnd()) { |
return true; |
} |
} |
return false; |
} |
/** |
* Finds a field by name. |
* @param name The unqualified name of the field (e.g. "foo"). |
* @return The field's descriptor, or {@code null} if not found. |
*/ |
public FieldDescriptor findFieldByName(final String name) { |
final GenericDescriptor result = |
file.pool.findSymbol(fullName + '.' + name); |
if (result != null && result instanceof FieldDescriptor) { |
return (FieldDescriptor)result; |
} else { |
return null; |
} |
} |
/** |
* Finds a field by field number. |
* @param number The field number within this message type. |
* @return The field's descriptor, or {@code null} if not found. |
*/ |
public FieldDescriptor findFieldByNumber(final int number) { |
return file.pool.fieldsByNumber.get( |
new DescriptorPool.DescriptorIntPair(this, number)); |
} |
/** |
* Finds a nested message type by name. |
* @param name The unqualified name of the nested type (e.g. "Foo"). |
* @return The types's descriptor, or {@code null} if not found. |
*/ |
public Descriptor findNestedTypeByName(final String name) { |
final GenericDescriptor result = |
file.pool.findSymbol(fullName + '.' + name); |
if (result != null && result instanceof Descriptor) { |
return (Descriptor)result; |
} else { |
return null; |
} |
} |
/** |
* Finds a nested enum type by name. |
* @param name The unqualified name of the nested type (e.g. "Foo"). |
* @return The types's descriptor, or {@code null} if not found. |
*/ |
public EnumDescriptor findEnumTypeByName(final String name) { |
final GenericDescriptor result = |
file.pool.findSymbol(fullName + '.' + name); |
if (result != null && result instanceof EnumDescriptor) { |
return (EnumDescriptor)result; |
} else { |
return null; |
} |
} |
private final int index; |
private DescriptorProto proto; |
private final String fullName; |
private final FileDescriptor file; |
private final Descriptor containingType; |
private final Descriptor[] nestedTypes; |
private final EnumDescriptor[] enumTypes; |
private final FieldDescriptor[] fields; |
private final FieldDescriptor[] extensions; |
private Descriptor(final DescriptorProto proto, |
final FileDescriptor file, |
final Descriptor parent, |
final int index) |
throws DescriptorValidationException { |
this.index = index; |
this.proto = proto; |
fullName = computeFullName(file, parent, proto.getName()); |
this.file = file; |
containingType = parent; |
nestedTypes = new Descriptor[proto.getNestedTypeCount()]; |
for (int i = 0; i < proto.getNestedTypeCount(); i++) { |
nestedTypes[i] = new Descriptor( |
proto.getNestedType(i), file, this, i); |
} |
enumTypes = new EnumDescriptor[proto.getEnumTypeCount()]; |
for (int i = 0; i < proto.getEnumTypeCount(); i++) { |
enumTypes[i] = new EnumDescriptor( |
proto.getEnumType(i), file, this, i); |
} |
fields = new FieldDescriptor[proto.getFieldCount()]; |
for (int i = 0; i < proto.getFieldCount(); i++) { |
fields[i] = new FieldDescriptor( |
proto.getField(i), file, this, i, false); |
} |
extensions = new FieldDescriptor[proto.getExtensionCount()]; |
for (int i = 0; i < proto.getExtensionCount(); i++) { |
extensions[i] = new FieldDescriptor( |
proto.getExtension(i), file, this, i, true); |
} |
file.pool.addSymbol(this); |
} |
/** Look up and cross-link all field types, etc. */ |
private void crossLink() throws DescriptorValidationException { |
for (final Descriptor nestedType : nestedTypes) { |
nestedType.crossLink(); |
} |
for (final FieldDescriptor field : fields) { |
field.crossLink(); |
} |
for (final FieldDescriptor extension : extensions) { |
extension.crossLink(); |
} |
} |
/** See {@link FileDescriptor#setProto}. */ |
private void setProto(final DescriptorProto proto) { |
this.proto = proto; |
for (int i = 0; i < nestedTypes.length; i++) { |
nestedTypes[i].setProto(proto.getNestedType(i)); |
} |
for (int i = 0; i < enumTypes.length; i++) { |
enumTypes[i].setProto(proto.getEnumType(i)); |
} |
for (int i = 0; i < fields.length; i++) { |
fields[i].setProto(proto.getField(i)); |
} |
for (int i = 0; i < extensions.length; i++) { |
extensions[i].setProto(proto.getExtension(i)); |
} |
} |
} |
// ================================================================= |
/** Describes a field of a message type. */ |
public static final class FieldDescriptor |
implements GenericDescriptor, Comparable<FieldDescriptor>, |
FieldSet.FieldDescriptorLite<FieldDescriptor> { |
/** |
* Get the index of this descriptor within its parent. |
* @see Descriptor#getIndex() |
*/ |
public int getIndex() { return index; } |
/** Convert the descriptor to its protocol message representation. */ |
public FieldDescriptorProto toProto() { return proto; } |
/** Get the field's unqualified name. */ |
public String getName() { return proto.getName(); } |
/** Get the field's number. */ |
public int getNumber() { return proto.getNumber(); } |
/** |
* Get the field's fully-qualified name. |
* @see Descriptor#getFullName() |
*/ |
public String getFullName() { return fullName; } |
/** |
* Get the field's java type. This is just for convenience. Every |
* {@code FieldDescriptorProto.Type} maps to exactly one Java type. |
*/ |
public JavaType getJavaType() { return type.getJavaType(); } |
/** For internal use only. */ |
public WireFormat.JavaType getLiteJavaType() { |
return getLiteType().getJavaType(); |
} |
/** Get the {@code FileDescriptor} containing this descriptor. */ |
public FileDescriptor getFile() { return file; } |
/** Get the field's declared type. */ |
public Type getType() { return type; } |
/** For internal use only. */ |
public WireFormat.FieldType getLiteType() { |
return table[type.ordinal()]; |
} |
// I'm pretty sure values() constructs a new array every time, since there |
// is nothing stopping the caller from mutating the array. Therefore we |
// make a static copy here. |
private static final WireFormat.FieldType[] table = |
WireFormat.FieldType.values(); |
/** Is this field declared required? */ |
public boolean isRequired() { |
return proto.getLabel() == FieldDescriptorProto.Label.LABEL_REQUIRED; |
} |
/** Is this field declared optional? */ |
public boolean isOptional() { |
return proto.getLabel() == FieldDescriptorProto.Label.LABEL_OPTIONAL; |
} |
/** Is this field declared repeated? */ |
public boolean isRepeated() { |
return proto.getLabel() == FieldDescriptorProto.Label.LABEL_REPEATED; |
} |
/** Does this field have the {@code [packed = true]} option? */ |
public boolean isPacked() { |
return getOptions().getPacked(); |
} |
/** Can this field be packed? i.e. is it a repeated primitive field? */ |
public boolean isPackable() { |
return isRepeated() && getLiteType().isPackable(); |
} |
/** Returns true if the field had an explicitly-defined default value. */ |
public boolean hasDefaultValue() { return proto.hasDefaultValue(); } |
/** |
* Returns the field's default value. Valid for all types except for |
* messages and groups. For all other types, the object returned is of |
* the same class that would returned by Message.getField(this). |
*/ |
public Object getDefaultValue() { |
if (getJavaType() == JavaType.MESSAGE) { |
throw new UnsupportedOperationException( |
"FieldDescriptor.getDefaultValue() called on an embedded message " + |
"field."); |
} |
return defaultValue; |
} |
/** Get the {@code FieldOptions}, defined in {@code descriptor.proto}. */ |
public FieldOptions getOptions() { return proto.getOptions(); } |
/** Is this field an extension? */ |
public boolean isExtension() { return proto.hasExtendee(); } |
/** |
* Get the field's containing type. For extensions, this is the type being |
* extended, not the location where the extension was defined. See |
* {@link #getExtensionScope()}. |
*/ |
public Descriptor getContainingType() { return containingType; } |
/** |
* For extensions defined nested within message types, gets the outer |
* type. Not valid for non-extension fields. For example, consider |
* this {@code .proto} file: |
* <pre> |
* message Foo { |
* extensions 1000 to max; |
* } |
* extend Foo { |
* optional int32 baz = 1234; |
* } |
* message Bar { |
* extend Foo { |
* optional int32 qux = 4321; |
* } |
* } |
* </pre> |
* Both {@code baz}'s and {@code qux}'s containing type is {@code Foo}. |
* However, {@code baz}'s extension scope is {@code null} while |
* {@code qux}'s extension scope is {@code Bar}. |
*/ |
public Descriptor getExtensionScope() { |
if (!isExtension()) { |
throw new UnsupportedOperationException( |
"This field is not an extension."); |
} |
return extensionScope; |
} |
/** For embedded message and group fields, gets the field's type. */ |
public Descriptor getMessageType() { |
if (getJavaType() != JavaType.MESSAGE) { |
throw new UnsupportedOperationException( |
"This field is not of message type."); |
} |
return messageType; |
} |
/** For enum fields, gets the field's type. */ |
public EnumDescriptor getEnumType() { |
if (getJavaType() != JavaType.ENUM) { |
throw new UnsupportedOperationException( |
"This field is not of enum type."); |
} |
return enumType; |
} |
/** |
* Compare with another {@code FieldDescriptor}. This orders fields in |
* "canonical" order, which simply means ascending order by field number. |
* {@code other} must be a field of the same type -- i.e. |
* {@code getContainingType()} must return the same {@code Descriptor} for |
* both fields. |
* |
* @return negative, zero, or positive if {@code this} is less than, |
* equal to, or greater than {@code other}, respectively. |
*/ |
public int compareTo(final FieldDescriptor other) { |
if (other.containingType != containingType) { |
throw new IllegalArgumentException( |
"FieldDescriptors can only be compared to other FieldDescriptors " + |
"for fields of the same message type."); |
} |
return getNumber() - other.getNumber(); |
} |
private final int index; |
private FieldDescriptorProto proto; |
private final String fullName; |
private final FileDescriptor file; |
private final Descriptor extensionScope; |
// Possibly initialized during cross-linking. |
private Type type; |
private Descriptor containingType; |
private Descriptor messageType; |
private EnumDescriptor enumType; |
private Object defaultValue; |
public enum Type { |
DOUBLE (JavaType.DOUBLE ), |
FLOAT (JavaType.FLOAT ), |
INT64 (JavaType.LONG ), |
UINT64 (JavaType.LONG ), |
INT32 (JavaType.INT ), |
FIXED64 (JavaType.LONG ), |
FIXED32 (JavaType.INT ), |
BOOL (JavaType.BOOLEAN ), |
STRING (JavaType.STRING ), |
GROUP (JavaType.MESSAGE ), |
MESSAGE (JavaType.MESSAGE ), |
BYTES (JavaType.BYTE_STRING), |
UINT32 (JavaType.INT ), |
ENUM (JavaType.ENUM ), |
SFIXED32(JavaType.INT ), |
SFIXED64(JavaType.LONG ), |
SINT32 (JavaType.INT ), |
SINT64 (JavaType.LONG ); |
Type(final JavaType javaType) { |
this.javaType = javaType; |
} |
private JavaType javaType; |
public FieldDescriptorProto.Type toProto() { |
return FieldDescriptorProto.Type.valueOf(ordinal() + 1); |
} |
public JavaType getJavaType() { return javaType; } |
public static Type valueOf(final FieldDescriptorProto.Type type) { |
return values()[type.getNumber() - 1]; |
} |
} |
static { |
// Refuse to init if someone added a new declared type. |
if (Type.values().length != FieldDescriptorProto.Type.values().length) { |
throw new RuntimeException( |
"descriptor.proto has a new declared type but Desrciptors.java " + |
"wasn't updated."); |
} |
} |
public enum JavaType { |
INT(0), |
LONG(0L), |
FLOAT(0F), |
DOUBLE(0D), |
BOOLEAN(false), |
STRING(""), |
BYTE_STRING(ByteString.EMPTY), |
ENUM(null), |
MESSAGE(null); |
JavaType(final Object defaultDefault) { |
this.defaultDefault = defaultDefault; |
} |
/** |
* The default default value for fields of this type, if it's a primitive |
* type. This is meant for use inside this file only, hence is private. |
*/ |
private final Object defaultDefault; |
} |
private FieldDescriptor(final FieldDescriptorProto proto, |
final FileDescriptor file, |
final Descriptor parent, |
final int index, |
final boolean isExtension) |
throws DescriptorValidationException { |
this.index = index; |
this.proto = proto; |
fullName = computeFullName(file, parent, proto.getName()); |
this.file = file; |
if (proto.hasType()) { |
type = Type.valueOf(proto.getType()); |
} |
if (getNumber() <= 0) { |
throw new DescriptorValidationException(this, |
"Field numbers must be positive integers."); |
} |
// Only repeated primitive fields may be packed. |
if (proto.getOptions().getPacked() && !isPackable()) { |
throw new DescriptorValidationException(this, |
"[packed = true] can only be specified for repeated primitive " + |
"fields."); |
} |
if (isExtension) { |
if (!proto.hasExtendee()) { |
throw new DescriptorValidationException(this, |
"FieldDescriptorProto.extendee not set for extension field."); |
} |
containingType = null; // Will be filled in when cross-linking |
if (parent != null) { |
extensionScope = parent; |
} else { |
extensionScope = null; |
} |
} else { |
if (proto.hasExtendee()) { |
throw new DescriptorValidationException(this, |
"FieldDescriptorProto.extendee set for non-extension field."); |
} |
containingType = parent; |
extensionScope = null; |
} |
file.pool.addSymbol(this); |
} |
/** Look up and cross-link all field types, etc. */ |
private void crossLink() throws DescriptorValidationException { |
if (proto.hasExtendee()) { |
final GenericDescriptor extendee = |
file.pool.lookupSymbol(proto.getExtendee(), this); |
if (!(extendee instanceof Descriptor)) { |
throw new DescriptorValidationException(this, |
'\"' + proto.getExtendee() + "\" is not a message type."); |
} |
containingType = (Descriptor)extendee; |
if (!getContainingType().isExtensionNumber(getNumber())) { |
throw new DescriptorValidationException(this, |
'\"' + getContainingType().getFullName() + |
"\" does not declare " + getNumber() + |
" as an extension number."); |
} |
} |
if (proto.hasTypeName()) { |
final GenericDescriptor typeDescriptor = |
file.pool.lookupSymbol(proto.getTypeName(), this); |
if (!proto.hasType()) { |
// Choose field type based on symbol. |
if (typeDescriptor instanceof Descriptor) { |
type = Type.MESSAGE; |
} else if (typeDescriptor instanceof EnumDescriptor) { |
type = Type.ENUM; |
} else { |
throw new DescriptorValidationException(this, |
'\"' + proto.getTypeName() + "\" is not a type."); |
} |
} |
if (getJavaType() == JavaType.MESSAGE) { |
if (!(typeDescriptor instanceof Descriptor)) { |
throw new DescriptorValidationException(this, |
'\"' + proto.getTypeName() + "\" is not a message type."); |
} |
messageType = (Descriptor)typeDescriptor; |
if (proto.hasDefaultValue()) { |
throw new DescriptorValidationException(this, |
"Messages can't have default values."); |
} |
} else if (getJavaType() == JavaType.ENUM) { |
if (!(typeDescriptor instanceof EnumDescriptor)) { |
throw new DescriptorValidationException(this, |
'\"' + proto.getTypeName() + "\" is not an enum type."); |
} |
enumType = (EnumDescriptor)typeDescriptor; |
} else { |
throw new DescriptorValidationException(this, |
"Field with primitive type has type_name."); |
} |
} else { |
if (getJavaType() == JavaType.MESSAGE || |
getJavaType() == JavaType.ENUM) { |
throw new DescriptorValidationException(this, |
"Field with message or enum type missing type_name."); |
} |
} |
// We don't attempt to parse the default value until here because for |
// enums we need the enum type's descriptor. |
if (proto.hasDefaultValue()) { |
if (isRepeated()) { |
throw new DescriptorValidationException(this, |
"Repeated fields cannot have default values."); |
} |
try { |
switch (getType()) { |
case INT32: |
case SINT32: |
case SFIXED32: |
defaultValue = TextFormat.parseInt32(proto.getDefaultValue()); |
break; |
case UINT32: |
case FIXED32: |
defaultValue = TextFormat.parseUInt32(proto.getDefaultValue()); |
break; |
case INT64: |
case SINT64: |
case SFIXED64: |
defaultValue = TextFormat.parseInt64(proto.getDefaultValue()); |
break; |
case UINT64: |
case FIXED64: |
defaultValue = TextFormat.parseUInt64(proto.getDefaultValue()); |
break; |
case FLOAT: |
if (proto.getDefaultValue().equals("inf")) { |
defaultValue = Float.POSITIVE_INFINITY; |
} else if (proto.getDefaultValue().equals("-inf")) { |
defaultValue = Float.NEGATIVE_INFINITY; |
} else if (proto.getDefaultValue().equals("nan")) { |
defaultValue = Float.NaN; |
} else { |
defaultValue = Float.valueOf(proto.getDefaultValue()); |
} |
break; |
case DOUBLE: |
if (proto.getDefaultValue().equals("inf")) { |
defaultValue = Double.POSITIVE_INFINITY; |
} else if (proto.getDefaultValue().equals("-inf")) { |
defaultValue = Double.NEGATIVE_INFINITY; |
} else if (proto.getDefaultValue().equals("nan")) { |
defaultValue = Double.NaN; |
} else { |
defaultValue = Double.valueOf(proto.getDefaultValue()); |
} |
break; |
case BOOL: |
defaultValue = Boolean.valueOf(proto.getDefaultValue()); |
break; |
case STRING: |
defaultValue = proto.getDefaultValue(); |
break; |
case BYTES: |
try { |
defaultValue = |
TextFormat.unescapeBytes(proto.getDefaultValue()); |
} catch (TextFormat.InvalidEscapeSequenceException e) { |
throw new DescriptorValidationException(this, |
"Couldn't parse default value: " + e.getMessage(), e); |
} |
break; |
case ENUM: |
defaultValue = enumType.findValueByName(proto.getDefaultValue()); |
if (defaultValue == null) { |
throw new DescriptorValidationException(this, |
"Unknown enum default value: \"" + |
proto.getDefaultValue() + '\"'); |
} |
break; |
case MESSAGE: |
case GROUP: |
throw new DescriptorValidationException(this, |
"Message type had default value."); |
} |
} catch (NumberFormatException e) { |
throw new DescriptorValidationException(this, |
"Could not parse default value: \"" + |
proto.getDefaultValue() + '\"', e); |
} |
} else { |
// Determine the default default for this field. |
if (isRepeated()) { |
defaultValue = Collections.emptyList(); |
} else { |
switch (getJavaType()) { |
case ENUM: |
// We guarantee elsewhere that an enum type always has at least |
// one possible value. |
defaultValue = enumType.getValues().get(0); |
break; |
case MESSAGE: |
defaultValue = null; |
break; |
default: |
defaultValue = getJavaType().defaultDefault; |
break; |
} |
} |
} |
if (!isExtension()) { |
file.pool.addFieldByNumber(this); |
} |
if (containingType != null && |
containingType.getOptions().getMessageSetWireFormat()) { |
if (isExtension()) { |
if (!isOptional() || getType() != Type.MESSAGE) { |
throw new DescriptorValidationException(this, |
"Extensions of MessageSets must be optional messages."); |
} |
} else { |
throw new DescriptorValidationException(this, |
"MessageSets cannot have fields, only extensions."); |
} |
} |
} |
/** See {@link FileDescriptor#setProto}. */ |
private void setProto(final FieldDescriptorProto proto) { |
this.proto = proto; |
} |
/** |
* For internal use only. This is to satisfy the FieldDescriptorLite |
* interface. |
*/ |
public MessageLite.Builder internalMergeFrom( |
MessageLite.Builder to, MessageLite from) { |
// FieldDescriptors are only used with non-lite messages so we can just |
// down-cast and call mergeFrom directly. |
return ((Message.Builder) to).mergeFrom((Message) from); |
} |
} |
// ================================================================= |
/** Describes an enum type. */ |
public static final class EnumDescriptor |
implements GenericDescriptor, Internal.EnumLiteMap<EnumValueDescriptor> { |
/** |
* Get the index of this descriptor within its parent. |
* @see Descriptor#getIndex() |
*/ |
public int getIndex() { return index; } |
/** Convert the descriptor to its protocol message representation. */ |
public EnumDescriptorProto toProto() { return proto; } |
/** Get the type's unqualified name. */ |
public String getName() { return proto.getName(); } |
/** |
* Get the type's fully-qualified name. |
* @see Descriptor#getFullName() |
*/ |
public String getFullName() { return fullName; } |
/** Get the {@link FileDescriptor} containing this descriptor. */ |
public FileDescriptor getFile() { return file; } |
/** If this is a nested type, get the outer descriptor, otherwise null. */ |
public Descriptor getContainingType() { return containingType; } |
/** Get the {@code EnumOptions}, defined in {@code descriptor.proto}. */ |
public EnumOptions getOptions() { return proto.getOptions(); } |
/** Get a list of defined values for this enum. */ |
public List<EnumValueDescriptor> getValues() { |
return Collections.unmodifiableList(Arrays.asList(values)); |
} |
/** |
* Find an enum value by name. |
* @param name The unqualified name of the value (e.g. "FOO"). |
* @return the value's decsriptor, or {@code null} if not found. |
*/ |
public EnumValueDescriptor findValueByName(final String name) { |
final GenericDescriptor result = |
file.pool.findSymbol(fullName + '.' + name); |
if (result != null && result instanceof EnumValueDescriptor) { |
return (EnumValueDescriptor)result; |
} else { |
return null; |
} |
} |
/** |
* Find an enum value by number. If multiple enum values have the same |
* number, this returns the first defined value with that number. |
* @param number The value's number. |
* @return the value's decsriptor, or {@code null} if not found. |
*/ |
public EnumValueDescriptor findValueByNumber(final int number) { |
return file.pool.enumValuesByNumber.get( |
new DescriptorPool.DescriptorIntPair(this, number)); |
} |
private final int index; |
private EnumDescriptorProto proto; |
private final String fullName; |
private final FileDescriptor file; |
private final Descriptor containingType; |
private EnumValueDescriptor[] values; |
private EnumDescriptor(final EnumDescriptorProto proto, |
final FileDescriptor file, |
final Descriptor parent, |
final int index) |
throws DescriptorValidationException { |
this.index = index; |
this.proto = proto; |
fullName = computeFullName(file, parent, proto.getName()); |
this.file = file; |
containingType = parent; |
if (proto.getValueCount() == 0) { |
// We cannot allow enums with no values because this would mean there |
// would be no valid default value for fields of this type. |
throw new DescriptorValidationException(this, |
"Enums must contain at least one value."); |
} |
values = new EnumValueDescriptor[proto.getValueCount()]; |
for (int i = 0; i < proto.getValueCount(); i++) { |
values[i] = new EnumValueDescriptor( |
proto.getValue(i), file, this, i); |
} |
file.pool.addSymbol(this); |
} |
/** See {@link FileDescriptor#setProto}. */ |
private void setProto(final EnumDescriptorProto proto) { |
this.proto = proto; |
for (int i = 0; i < values.length; i++) { |
values[i].setProto(proto.getValue(i)); |
} |
} |
} |
// ================================================================= |
/** |
* Describes one value within an enum type. Note that multiple defined |
* values may have the same number. In generated Java code, all values |
* with the same number after the first become aliases of the first. |
* However, they still have independent EnumValueDescriptors. |
*/ |
public static final class EnumValueDescriptor |
implements GenericDescriptor, Internal.EnumLite { |
/** |
* Get the index of this descriptor within its parent. |
* @see Descriptor#getIndex() |
*/ |
public int getIndex() { return index; } |
/** Convert the descriptor to its protocol message representation. */ |
public EnumValueDescriptorProto toProto() { return proto; } |
/** Get the value's unqualified name. */ |
public String getName() { return proto.getName(); } |
/** Get the value's number. */ |
public int getNumber() { return proto.getNumber(); } |
/** |
* Get the value's fully-qualified name. |
* @see Descriptor#getFullName() |
*/ |
public String getFullName() { return fullName; } |
/** Get the {@link FileDescriptor} containing this descriptor. */ |
public FileDescriptor getFile() { return file; } |
/** Get the value's enum type. */ |
public EnumDescriptor getType() { return type; } |
/** |
* Get the {@code EnumValueOptions}, defined in {@code descriptor.proto}. |
*/ |
public EnumValueOptions getOptions() { return proto.getOptions(); } |
private final int index; |
private EnumValueDescriptorProto proto; |
private final String fullName; |
private final FileDescriptor file; |
private final EnumDescriptor type; |
private EnumValueDescriptor(final EnumValueDescriptorProto proto, |
final FileDescriptor file, |
final EnumDescriptor parent, |
final int index) |
throws DescriptorValidationException { |
this.index = index; |
this.proto = proto; |
this.file = file; |
type = parent; |
fullName = parent.getFullName() + '.' + proto.getName(); |
file.pool.addSymbol(this); |
file.pool.addEnumValueByNumber(this); |
} |
/** See {@link FileDescriptor#setProto}. */ |
private void setProto(final EnumValueDescriptorProto proto) { |
this.proto = proto; |
} |
} |
// ================================================================= |
/** Describes a service type. */ |
public static final class ServiceDescriptor implements GenericDescriptor { |
/** |
* Get the index of this descriptor within its parent. |
* * @see Descriptors.Descriptor#getIndex() |
*/ |
public int getIndex() { return index; } |
/** Convert the descriptor to its protocol message representation. */ |
public ServiceDescriptorProto toProto() { return proto; } |
/** Get the type's unqualified name. */ |
public String getName() { return proto.getName(); } |
/** |
* Get the type's fully-qualified name. |
* @see Descriptor#getFullName() |
*/ |
public String getFullName() { return fullName; } |
/** Get the {@link FileDescriptor} containing this descriptor. */ |
public FileDescriptor getFile() { return file; } |
/** Get the {@code ServiceOptions}, defined in {@code descriptor.proto}. */ |
public ServiceOptions getOptions() { return proto.getOptions(); } |
/** Get a list of methods for this service. */ |
public List<MethodDescriptor> getMethods() { |
return Collections.unmodifiableList(Arrays.asList(methods)); |
} |
/** |
* Find a method by name. |
* @param name The unqualified name of the method (e.g. "Foo"). |
* @return the method's decsriptor, or {@code null} if not found. |
*/ |
public MethodDescriptor findMethodByName(final String name) { |
final GenericDescriptor result = |
file.pool.findSymbol(fullName + '.' + name); |
if (result != null && result instanceof MethodDescriptor) { |
return (MethodDescriptor)result; |
} else { |
return null; |
} |
} |
private final int index; |
private ServiceDescriptorProto proto; |
private final String fullName; |
private final FileDescriptor file; |
private MethodDescriptor[] methods; |
private ServiceDescriptor(final ServiceDescriptorProto proto, |
final FileDescriptor file, |
final int index) |
throws DescriptorValidationException { |
this.index = index; |
this.proto = proto; |
fullName = computeFullName(file, null, proto.getName()); |
this.file = file; |
methods = new MethodDescriptor[proto.getMethodCount()]; |
for (int i = 0; i < proto.getMethodCount(); i++) { |
methods[i] = new MethodDescriptor( |
proto.getMethod(i), file, this, i); |
} |
file.pool.addSymbol(this); |
} |
private void crossLink() throws DescriptorValidationException { |
for (final MethodDescriptor method : methods) { |
method.crossLink(); |
} |
} |
/** See {@link FileDescriptor#setProto}. */ |
private void setProto(final ServiceDescriptorProto proto) { |
this.proto = proto; |
for (int i = 0; i < methods.length; i++) { |
methods[i].setProto(proto.getMethod(i)); |
} |
} |
} |
// ================================================================= |
/** |
* Describes one method within a service type. |
*/ |
public static final class MethodDescriptor implements GenericDescriptor { |
/** |
* Get the index of this descriptor within its parent. |
* * @see Descriptors.Descriptor#getIndex() |
*/ |
public int getIndex() { return index; } |
/** Convert the descriptor to its protocol message representation. */ |
public MethodDescriptorProto toProto() { return proto; } |
/** Get the method's unqualified name. */ |
public String getName() { return proto.getName(); } |
/** |
* Get the method's fully-qualified name. |
* @see Descriptor#getFullName() |
*/ |
public String getFullName() { return fullName; } |
/** Get the {@link FileDescriptor} containing this descriptor. */ |
public FileDescriptor getFile() { return file; } |
/** Get the method's service type. */ |
public ServiceDescriptor getService() { return service; } |
/** Get the method's input type. */ |
public Descriptor getInputType() { return inputType; } |
/** Get the method's output type. */ |
public Descriptor getOutputType() { return outputType; } |
/** |
* Get the {@code MethodOptions}, defined in {@code descriptor.proto}. |
*/ |
public MethodOptions getOptions() { return proto.getOptions(); } |
private final int index; |
private MethodDescriptorProto proto; |
private final String fullName; |
private final FileDescriptor file; |
private final ServiceDescriptor service; |
// Initialized during cross-linking. |
private Descriptor inputType; |
private Descriptor outputType; |
private MethodDescriptor(final MethodDescriptorProto proto, |
final FileDescriptor file, |
final ServiceDescriptor parent, |
final int index) |
throws DescriptorValidationException { |
this.index = index; |
this.proto = proto; |
this.file = file; |
service = parent; |
fullName = parent.getFullName() + '.' + proto.getName(); |
file.pool.addSymbol(this); |
} |
private void crossLink() throws DescriptorValidationException { |
final GenericDescriptor input = |
file.pool.lookupSymbol(proto.getInputType(), this); |
if (!(input instanceof Descriptor)) { |
throw new DescriptorValidationException(this, |
'\"' + proto.getInputType() + "\" is not a message type."); |
} |
inputType = (Descriptor)input; |
final GenericDescriptor output = |
file.pool.lookupSymbol(proto.getOutputType(), this); |
if (!(output instanceof Descriptor)) { |
throw new DescriptorValidationException(this, |
'\"' + proto.getOutputType() + "\" is not a message type."); |
} |
outputType = (Descriptor)output; |
} |
/** See {@link FileDescriptor#setProto}. */ |
private void setProto(final MethodDescriptorProto proto) { |
this.proto = proto; |
} |
} |
// ================================================================= |
private static String computeFullName(final FileDescriptor file, |
final Descriptor parent, |
final String name) { |
if (parent != null) { |
return parent.getFullName() + '.' + name; |
} else if (file.getPackage().length() > 0) { |
return file.getPackage() + '.' + name; |
} else { |
return name; |
} |
} |
// ================================================================= |
/** |
* All descriptors except {@code FileDescriptor} implement this to make |
* {@code DescriptorPool}'s life easier. |
*/ |
private interface GenericDescriptor { |
Message toProto(); |
String getName(); |
String getFullName(); |
FileDescriptor getFile(); |
} |
/** |
* Thrown when building descriptors fails because the source DescriptorProtos |
* are not valid. |
*/ |
public static class DescriptorValidationException extends Exception { |
private static final long serialVersionUID = 5750205775490483148L; |
/** Gets the full name of the descriptor where the error occurred. */ |
public String getProblemSymbolName() { return name; } |
/** |
* Gets the the protocol message representation of the invalid descriptor. |
*/ |
public Message getProblemProto() { return proto; } |
/** |
* Gets a human-readable description of the error. |
*/ |
public String getDescription() { return description; } |
private final String name; |
private final Message proto; |
private final String description; |
private DescriptorValidationException( |
final GenericDescriptor problemDescriptor, |
final String description) { |
super(problemDescriptor.getFullName() + ": " + description); |
// Note that problemDescriptor may be partially uninitialized, so we |
// don't want to expose it directly to the user. So, we only provide |
// the name and the original proto. |
name = problemDescriptor.getFullName(); |
proto = problemDescriptor.toProto(); |
this.description = description; |
} |
private DescriptorValidationException( |
final GenericDescriptor problemDescriptor, |
final String description, |
final Throwable cause) { |
this(problemDescriptor, description); |
initCause(cause); |
} |
private DescriptorValidationException( |
final FileDescriptor problemDescriptor, |
final String description) { |
super(problemDescriptor.getName() + ": " + description); |
// Note that problemDescriptor may be partially uninitialized, so we |
// don't want to expose it directly to the user. So, we only provide |
// the name and the original proto. |
name = problemDescriptor.getName(); |
proto = problemDescriptor.toProto(); |
this.description = description; |
} |
} |
// ================================================================= |
/** |
* A private helper class which contains lookup tables containing all the |
* descriptors defined in a particular file. |
*/ |
private static final class DescriptorPool { |
DescriptorPool(final FileDescriptor[] dependencies) { |
this.dependencies = new DescriptorPool[dependencies.length]; |
for (int i = 0; i < dependencies.length; i++) { |
this.dependencies[i] = dependencies[i].pool; |
} |
for (final FileDescriptor dependency : dependencies) { |
try { |
addPackage(dependency.getPackage(), dependency); |
} catch (DescriptorValidationException e) { |
// Can't happen, because addPackage() only fails when the name |
// conflicts with a non-package, but we have not yet added any |
// non-packages at this point. |
assert false; |
} |
} |
} |
private final DescriptorPool[] dependencies; |
private final Map<String, GenericDescriptor> descriptorsByName = |
new HashMap<String, GenericDescriptor>(); |
private final Map<DescriptorIntPair, FieldDescriptor> fieldsByNumber = |
new HashMap<DescriptorIntPair, FieldDescriptor>(); |
private final Map<DescriptorIntPair, EnumValueDescriptor> enumValuesByNumber |
= new HashMap<DescriptorIntPair, EnumValueDescriptor>(); |
/** Find a generic descriptor by fully-qualified name. */ |
GenericDescriptor findSymbol(final String fullName) { |
GenericDescriptor result = descriptorsByName.get(fullName); |
if (result != null) { |
return result; |
} |
for (final DescriptorPool dependency : dependencies) { |
result = dependency.descriptorsByName.get(fullName); |
if (result != null) { |
return result; |
} |
} |
return null; |
} |
/** |
* Look up a descriptor by name, relative to some other descriptor. |
* The name may be fully-qualified (with a leading '.'), |
* partially-qualified, or unqualified. C++-like name lookup semantics |
* are used to search for the matching descriptor. |
*/ |
GenericDescriptor lookupSymbol(final String name, |
final GenericDescriptor relativeTo) |
throws DescriptorValidationException { |
// TODO(kenton): This could be optimized in a number of ways. |
GenericDescriptor result; |
if (name.startsWith(".")) { |
// Fully-qualified name. |
result = findSymbol(name.substring(1)); |
} else { |
// If "name" is a compound identifier, we want to search for the |
// first component of it, then search within it for the rest. |
final int firstPartLength = name.indexOf('.'); |
final String firstPart; |
if (firstPartLength == -1) { |
firstPart = name; |
} else { |
firstPart = name.substring(0, firstPartLength); |
} |
// We will search each parent scope of "relativeTo" looking for the |
// symbol. |
final StringBuilder scopeToTry = |
new StringBuilder(relativeTo.getFullName()); |
while (true) { |
// Chop off the last component of the scope. |
final int dotpos = scopeToTry.lastIndexOf("."); |
if (dotpos == -1) { |
result = findSymbol(name); |
break; |
} else { |
scopeToTry.setLength(dotpos + 1); |
// Append firstPart and try to find. |
scopeToTry.append(firstPart); |
result = findSymbol(scopeToTry.toString()); |
if (result != null) { |
if (firstPartLength != -1) { |
// We only found the first part of the symbol. Now look for |
// the whole thing. If this fails, we *don't* want to keep |
// searching parent scopes. |
scopeToTry.setLength(dotpos + 1); |
scopeToTry.append(name); |
result = findSymbol(scopeToTry.toString()); |
} |
break; |
} |
// Not found. Remove the name so we can try again. |
scopeToTry.setLength(dotpos); |
} |
} |
} |
if (result == null) { |
throw new DescriptorValidationException(relativeTo, |
'\"' + name + "\" is not defined."); |
} else { |
return result; |
} |
} |
/** |
* Adds a symbol to the symbol table. If a symbol with the same name |
* already exists, throws an error. |
*/ |
void addSymbol(final GenericDescriptor descriptor) |
throws DescriptorValidationException { |
validateSymbolName(descriptor); |
final String fullName = descriptor.getFullName(); |
final int dotpos = fullName.lastIndexOf('.'); |
final GenericDescriptor old = descriptorsByName.put(fullName, descriptor); |
if (old != null) { |
descriptorsByName.put(fullName, old); |
if (descriptor.getFile() == old.getFile()) { |
if (dotpos == -1) { |
throw new DescriptorValidationException(descriptor, |
'\"' + fullName + "\" is already defined."); |
} else { |
throw new DescriptorValidationException(descriptor, |
'\"' + fullName.substring(dotpos + 1) + |
"\" is already defined in \"" + |
fullName.substring(0, dotpos) + "\"."); |
} |
} else { |
throw new DescriptorValidationException(descriptor, |
'\"' + fullName + "\" is already defined in file \"" + |
old.getFile().getName() + "\"."); |
} |
} |
} |
/** |
* Represents a package in the symbol table. We use PackageDescriptors |
* just as placeholders so that someone cannot define, say, a message type |
* that has the same name as an existing package. |
*/ |
private static final class PackageDescriptor implements GenericDescriptor { |
public Message toProto() { return file.toProto(); } |
public String getName() { return name; } |
public String getFullName() { return fullName; } |
public FileDescriptor getFile() { return file; } |
PackageDescriptor(final String name, final String fullName, |
final FileDescriptor file) { |
this.file = file; |
this.fullName = fullName; |
this.name = name; |
} |
private final String name; |
private final String fullName; |
private final FileDescriptor file; |
} |
/** |
* Adds a package to the symbol tables. If a package by the same name |
* already exists, that is fine, but if some other kind of symbol exists |
* under the same name, an exception is thrown. If the package has |
* multiple components, this also adds the parent package(s). |
*/ |
void addPackage(final String fullName, final FileDescriptor file) |
throws DescriptorValidationException { |
final int dotpos = fullName.lastIndexOf('.'); |
final String name; |
if (dotpos == -1) { |
name = fullName; |
} else { |
addPackage(fullName.substring(0, dotpos), file); |
name = fullName.substring(dotpos + 1); |
} |
final GenericDescriptor old = |
descriptorsByName.put(fullName, |
new PackageDescriptor(name, fullName, file)); |
if (old != null) { |
descriptorsByName.put(fullName, old); |
if (!(old instanceof PackageDescriptor)) { |
throw new DescriptorValidationException(file, |
'\"' + name + "\" is already defined (as something other than a " |
+ "package) in file \"" + old.getFile().getName() + "\"."); |
} |
} |
} |
/** A (GenericDescriptor, int) pair, used as a map key. */ |
private static final class DescriptorIntPair { |
private final GenericDescriptor descriptor; |
private final int number; |
DescriptorIntPair(final GenericDescriptor descriptor, final int number) { |
this.descriptor = descriptor; |
this.number = number; |
} |
@Override |
public int hashCode() { |
return descriptor.hashCode() * ((1 << 16) - 1) + number; |
} |
@Override |
public boolean equals(final Object obj) { |
if (!(obj instanceof DescriptorIntPair)) { |
return false; |
} |
final DescriptorIntPair other = (DescriptorIntPair)obj; |
return descriptor == other.descriptor && number == other.number; |
} |
} |
/** |
* Adds a field to the fieldsByNumber table. Throws an exception if a |
* field with hte same containing type and number already exists. |
*/ |
void addFieldByNumber(final FieldDescriptor field) |
throws DescriptorValidationException { |
final DescriptorIntPair key = |
new DescriptorIntPair(field.getContainingType(), field.getNumber()); |
final FieldDescriptor old = fieldsByNumber.put(key, field); |
if (old != null) { |
fieldsByNumber.put(key, old); |
throw new DescriptorValidationException(field, |
"Field number " + field.getNumber() + |
"has already been used in \"" + |
field.getContainingType().getFullName() + |
"\" by field \"" + old.getName() + "\"."); |
} |
} |
/** |
* Adds an enum value to the enumValuesByNumber table. If an enum value |
* with the same type and number already exists, does nothing. (This is |
* allowed; the first value define with the number takes precedence.) |
*/ |
void addEnumValueByNumber(final EnumValueDescriptor value) { |
final DescriptorIntPair key = |
new DescriptorIntPair(value.getType(), value.getNumber()); |
final EnumValueDescriptor old = enumValuesByNumber.put(key, value); |
if (old != null) { |
enumValuesByNumber.put(key, old); |
// Not an error: Multiple enum values may have the same number, but |
// we only want the first one in the map. |
} |
} |
/** |
* Verifies that the descriptor's name is valid (i.e. it contains only |
* letters, digits, and underscores, and does not start with a digit). |
*/ |
static void validateSymbolName(final GenericDescriptor descriptor) |
throws DescriptorValidationException { |
final String name = descriptor.getName(); |
if (name.length() == 0) { |
throw new DescriptorValidationException(descriptor, "Missing name."); |
} else { |
boolean valid = true; |
for (int i = 0; i < name.length(); i++) { |
final char c = name.charAt(i); |
// Non-ASCII characters are not valid in protobuf identifiers, even |
// if they are letters or digits. |
if (c >= 128) { |
valid = false; |
} |
// First character must be letter or _. Subsequent characters may |
// be letters, numbers, or digits. |
if (Character.isLetter(c) || c == '_' || |
(Character.isDigit(c) && i > 0)) { |
// Valid |
} else { |
valid = false; |
} |
} |
if (!valid) { |
throw new DescriptorValidationException(descriptor, |
'\"' + name + "\" is not a valid identifier."); |
} |
} |
} |
} |
} |
/Android Development/IOIODebugger/src/com/google/protobuf/DynamicMessage.java |
---|
0,0 → 1,438 |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
// |
// * Redistributions of source code must retain the above copyright |
// notice, this list of conditions and the following disclaimer. |
// * Redistributions in binary form must reproduce the above |
// copyright notice, this list of conditions and the following disclaimer |
// in the documentation and/or other materials provided with the |
// distribution. |
// * Neither the name of Google Inc. nor the names of its |
// contributors may be used to endorse or promote products derived from |
// this software without specific prior written permission. |
// |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
package com.google.protobuf; |
import com.google.protobuf.Descriptors.Descriptor; |
import com.google.protobuf.Descriptors.FieldDescriptor; |
import java.io.InputStream; |
import java.io.IOException; |
import java.util.Map; |
/** |
* An implementation of {@link Message} that can represent arbitrary types, |
* given a {@link Descriptors.Descriptor}. |
* |
* @author kenton@google.com Kenton Varda |
*/ |
public final class DynamicMessage extends AbstractMessage { |
private final Descriptor type; |
private final FieldSet<FieldDescriptor> fields; |
private final UnknownFieldSet unknownFields; |
private int memoizedSize = -1; |
/** |
* Construct a {@code DynamicMessage} using the given {@code FieldSet}. |
*/ |
private DynamicMessage(Descriptor type, FieldSet<FieldDescriptor> fields, |
UnknownFieldSet unknownFields) { |
this.type = type; |
this.fields = fields; |
this.unknownFields = unknownFields; |
} |
/** |
* Get a {@code DynamicMessage} representing the default instance of the |
* given type. |
*/ |
public static DynamicMessage getDefaultInstance(Descriptor type) { |
return new DynamicMessage(type, FieldSet.<FieldDescriptor>emptySet(), |
UnknownFieldSet.getDefaultInstance()); |
} |
/** Parse a message of the given type from the given input stream. */ |
public static DynamicMessage parseFrom(Descriptor type, |
CodedInputStream input) |
throws IOException { |
return newBuilder(type).mergeFrom(input).buildParsed(); |
} |
/** Parse a message of the given type from the given input stream. */ |
public static DynamicMessage parseFrom( |
Descriptor type, |
CodedInputStream input, |
ExtensionRegistry extensionRegistry) |
throws IOException { |
return newBuilder(type).mergeFrom(input, extensionRegistry).buildParsed(); |
} |
/** Parse {@code data} as a message of the given type and return it. */ |
public static DynamicMessage parseFrom(Descriptor type, ByteString data) |
throws InvalidProtocolBufferException { |
return newBuilder(type).mergeFrom(data).buildParsed(); |
} |
/** Parse {@code data} as a message of the given type and return it. */ |
public static DynamicMessage parseFrom(Descriptor type, ByteString data, |
ExtensionRegistry extensionRegistry) |
throws InvalidProtocolBufferException { |
return newBuilder(type).mergeFrom(data, extensionRegistry).buildParsed(); |
} |
/** Parse {@code data} as a message of the given type and return it. */ |
public static DynamicMessage parseFrom(Descriptor type, byte[] data) |
throws InvalidProtocolBufferException { |
return newBuilder(type).mergeFrom(data).buildParsed(); |
} |
/** Parse {@code data} as a message of the given type and return it. */ |
public static DynamicMessage parseFrom(Descriptor type, byte[] data, |
ExtensionRegistry extensionRegistry) |
throws InvalidProtocolBufferException { |
return newBuilder(type).mergeFrom(data, extensionRegistry).buildParsed(); |
} |
/** Parse a message of the given type from {@code input} and return it. */ |
public static DynamicMessage parseFrom(Descriptor type, InputStream input) |
throws IOException { |
return newBuilder(type).mergeFrom(input).buildParsed(); |
} |
/** Parse a message of the given type from {@code input} and return it. */ |
public static DynamicMessage parseFrom(Descriptor type, InputStream input, |
ExtensionRegistry extensionRegistry) |
throws IOException { |
return newBuilder(type).mergeFrom(input, extensionRegistry).buildParsed(); |
} |
/** Construct a {@link Message.Builder} for the given type. */ |
public static Builder newBuilder(Descriptor type) { |
return new Builder(type); |
} |
/** |
* Construct a {@link Message.Builder} for a message of the same type as |
* {@code prototype}, and initialize it with {@code prototype}'s contents. |
*/ |
public static Builder newBuilder(Message prototype) { |
return new Builder(prototype.getDescriptorForType()).mergeFrom(prototype); |
} |
// ----------------------------------------------------------------- |
// Implementation of Message interface. |
public Descriptor getDescriptorForType() { |
return type; |
} |
public DynamicMessage getDefaultInstanceForType() { |
return getDefaultInstance(type); |
} |
public Map<FieldDescriptor, Object> getAllFields() { |
return fields.getAllFields(); |
} |
public boolean hasField(FieldDescriptor field) { |
verifyContainingType(field); |
return fields.hasField(field); |
} |
public Object getField(FieldDescriptor field) { |
verifyContainingType(field); |
Object result = fields.getField(field); |
if (result == null) { |
if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { |
result = getDefaultInstance(field.getMessageType()); |
} else { |
result = field.getDefaultValue(); |
} |
} |
return result; |
} |
public int getRepeatedFieldCount(FieldDescriptor field) { |
verifyContainingType(field); |
return fields.getRepeatedFieldCount(field); |
} |
public Object getRepeatedField(FieldDescriptor field, int index) { |
verifyContainingType(field); |
return fields.getRepeatedField(field, index); |
} |
public UnknownFieldSet getUnknownFields() { |
return unknownFields; |
} |
private static boolean isInitialized(Descriptor type, |
FieldSet<FieldDescriptor> fields) { |
// Check that all required fields are present. |
for (final FieldDescriptor field : type.getFields()) { |
if (field.isRequired()) { |
if (!fields.hasField(field)) { |
return false; |
} |
} |
} |
// Check that embedded messages are initialized. |
return fields.isInitialized(); |
} |
public boolean isInitialized() { |
return isInitialized(type, fields); |
} |
public void writeTo(CodedOutputStream output) throws IOException { |
if (type.getOptions().getMessageSetWireFormat()) { |
fields.writeMessageSetTo(output); |
unknownFields.writeAsMessageSetTo(output); |
} else { |
fields.writeTo(output); |
unknownFields.writeTo(output); |
} |
} |
public int getSerializedSize() { |
int size = memoizedSize; |
if (size != -1) return size; |
if (type.getOptions().getMessageSetWireFormat()) { |
size = fields.getMessageSetSerializedSize(); |
size += unknownFields.getSerializedSizeAsMessageSet(); |
} else { |
size = fields.getSerializedSize(); |
size += unknownFields.getSerializedSize(); |
} |
memoizedSize = size; |
return size; |
} |
public Builder newBuilderForType() { |
return new Builder(type); |
} |
public Builder toBuilder() { |
return newBuilderForType().mergeFrom(this); |
} |
/** Verifies that the field is a field of this message. */ |
private void verifyContainingType(FieldDescriptor field) { |
if (field.getContainingType() != type) { |
throw new IllegalArgumentException( |
"FieldDescriptor does not match message type."); |
} |
} |
// ================================================================= |
/** |
* Builder for {@link DynamicMessage}s. |
*/ |
public static final class Builder extends AbstractMessage.Builder<Builder> { |
private final Descriptor type; |
private FieldSet<FieldDescriptor> fields; |
private UnknownFieldSet unknownFields; |
/** Construct a {@code Builder} for the given type. */ |
private Builder(Descriptor type) { |
this.type = type; |
this.fields = FieldSet.newFieldSet(); |
this.unknownFields = UnknownFieldSet.getDefaultInstance(); |
} |
// --------------------------------------------------------------- |
// Implementation of Message.Builder interface. |
public Builder clear() { |
if (fields == null) { |
throw new IllegalStateException("Cannot call clear() after build()."); |
} |
fields.clear(); |
return this; |
} |
public Builder mergeFrom(Message other) { |
if (other instanceof DynamicMessage) { |
// This should be somewhat faster than calling super.mergeFrom(). |
DynamicMessage otherDynamicMessage = (DynamicMessage) other; |
if (otherDynamicMessage.type != type) { |
throw new IllegalArgumentException( |
"mergeFrom(Message) can only merge messages of the same type."); |
} |
fields.mergeFrom(otherDynamicMessage.fields); |
mergeUnknownFields(otherDynamicMessage.unknownFields); |
return this; |
} else { |
return super.mergeFrom(other); |
} |
} |
public DynamicMessage build() { |
// If fields == null, we'll throw an appropriate exception later. |
if (fields != null && !isInitialized()) { |
throw newUninitializedMessageException( |
new DynamicMessage(type, fields, unknownFields)); |
} |
return buildPartial(); |
} |
/** |
* Helper for DynamicMessage.parseFrom() methods to call. Throws |
* {@link InvalidProtocolBufferException} instead of |
* {@link UninitializedMessageException}. |
*/ |
private DynamicMessage buildParsed() throws InvalidProtocolBufferException { |
if (!isInitialized()) { |
throw newUninitializedMessageException( |
new DynamicMessage(type, fields, unknownFields)) |
.asInvalidProtocolBufferException(); |
} |
return buildPartial(); |
} |
public DynamicMessage buildPartial() { |
if (fields == null) { |
throw new IllegalStateException( |
"build() has already been called on this Builder."); |
} |
fields.makeImmutable(); |
DynamicMessage result = |
new DynamicMessage(type, fields, unknownFields); |
fields = null; |
unknownFields = null; |
return result; |
} |
public Builder clone() { |
Builder result = new Builder(type); |
result.fields.mergeFrom(fields); |
return result; |
} |
public boolean isInitialized() { |
return DynamicMessage.isInitialized(type, fields); |
} |
public Descriptor getDescriptorForType() { |
return type; |
} |
public DynamicMessage getDefaultInstanceForType() { |
return getDefaultInstance(type); |
} |
public Map<FieldDescriptor, Object> getAllFields() { |
return fields.getAllFields(); |
} |
public Builder newBuilderForField(FieldDescriptor field) { |
verifyContainingType(field); |
if (field.getJavaType() != FieldDescriptor.JavaType.MESSAGE) { |
throw new IllegalArgumentException( |
"newBuilderForField is only valid for fields with message type."); |
} |
return new Builder(field.getMessageType()); |
} |
public boolean hasField(FieldDescriptor field) { |
verifyContainingType(field); |
return fields.hasField(field); |
} |
public Object getField(FieldDescriptor field) { |
verifyContainingType(field); |
Object result = fields.getField(field); |
if (result == null) { |
if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { |
result = getDefaultInstance(field.getMessageType()); |
} else { |
result = field.getDefaultValue(); |
} |
} |
return result; |
} |
public Builder setField(FieldDescriptor field, Object value) { |
verifyContainingType(field); |
fields.setField(field, value); |
return this; |
} |
public Builder clearField(FieldDescriptor field) { |
verifyContainingType(field); |
fields.clearField(field); |
return this; |
} |
public int getRepeatedFieldCount(FieldDescriptor field) { |
verifyContainingType(field); |
return fields.getRepeatedFieldCount(field); |
} |
public Object getRepeatedField(FieldDescriptor field, int index) { |
verifyContainingType(field); |
return fields.getRepeatedField(field, index); |
} |
public Builder setRepeatedField(FieldDescriptor field, |
int index, Object value) { |
verifyContainingType(field); |
fields.setRepeatedField(field, index, value); |
return this; |
} |
public Builder addRepeatedField(FieldDescriptor field, Object value) { |
verifyContainingType(field); |
fields.addRepeatedField(field, value); |
return this; |
} |
public UnknownFieldSet getUnknownFields() { |
return unknownFields; |
} |
public Builder setUnknownFields(UnknownFieldSet unknownFields) { |
this.unknownFields = unknownFields; |
return this; |
} |
public Builder mergeUnknownFields(UnknownFieldSet unknownFields) { |
this.unknownFields = |
UnknownFieldSet.newBuilder(this.unknownFields) |
.mergeFrom(unknownFields) |
.build(); |
return this; |
} |
/** Verifies that the field is a field of this message. */ |
private void verifyContainingType(FieldDescriptor field) { |
if (field.getContainingType() != type) { |
throw new IllegalArgumentException( |
"FieldDescriptor does not match message type."); |
} |
} |
} |
} |
/Android Development/IOIODebugger/src/com/google/protobuf/ExtensionRegistry.java |
---|
0,0 → 1,266 |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
// |
// * Redistributions of source code must retain the above copyright |
// notice, this list of conditions and the following disclaimer. |
// * Redistributions in binary form must reproduce the above |
// copyright notice, this list of conditions and the following disclaimer |
// in the documentation and/or other materials provided with the |
// distribution. |
// * Neither the name of Google Inc. nor the names of its |
// contributors may be used to endorse or promote products derived from |
// this software without specific prior written permission. |
// |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
package com.google.protobuf; |
import com.google.protobuf.Descriptors.Descriptor; |
import com.google.protobuf.Descriptors.FieldDescriptor; |
import java.util.Collections; |
import java.util.HashMap; |
import java.util.Map; |
/** |
* A table of known extensions, searchable by name or field number. When |
* parsing a protocol message that might have extensions, you must provide |
* an {@code ExtensionRegistry} in which you have registered any extensions |
* that you want to be able to parse. Otherwise, those extensions will just |
* be treated like unknown fields. |
* |
* <p>For example, if you had the {@code .proto} file: |
* |
* <pre> |
* option java_class = "MyProto"; |
* |
* message Foo { |
* extensions 1000 to max; |
* } |
* |
* extend Foo { |
* optional int32 bar; |
* } |
* </pre> |
* |
* Then you might write code like: |
* |
* <pre> |
* ExtensionRegistry registry = ExtensionRegistry.newInstance(); |
* registry.add(MyProto.bar); |
* MyProto.Foo message = MyProto.Foo.parseFrom(input, registry); |
* </pre> |
* |
* <p>Background: |
* |
* <p>You might wonder why this is necessary. Two alternatives might come to |
* mind. First, you might imagine a system where generated extensions are |
* automatically registered when their containing classes are loaded. This |
* is a popular technique, but is bad design; among other things, it creates a |
* situation where behavior can change depending on what classes happen to be |
* loaded. It also introduces a security vulnerability, because an |
* unprivileged class could cause its code to be called unexpectedly from a |
* privileged class by registering itself as an extension of the right type. |
* |
* <p>Another option you might consider is lazy parsing: do not parse an |
* extension until it is first requested, at which point the caller must |
* provide a type to use. This introduces a different set of problems. First, |
* it would require a mutex lock any time an extension was accessed, which |
* would be slow. Second, corrupt data would not be detected until first |
* access, at which point it would be much harder to deal with it. Third, it |
* could violate the expectation that message objects are immutable, since the |
* type provided could be any arbitrary message class. An unprivileged user |
* could take advantage of this to inject a mutable object into a message |
* belonging to privileged code and create mischief. |
* |
* @author kenton@google.com Kenton Varda |
*/ |
public final class ExtensionRegistry extends ExtensionRegistryLite { |
/** Construct a new, empty instance. */ |
public static ExtensionRegistry newInstance() { |
return new ExtensionRegistry(); |
} |
/** Get the unmodifiable singleton empty instance. */ |
public static ExtensionRegistry getEmptyRegistry() { |
return EMPTY; |
} |
/** Returns an unmodifiable view of the registry. */ |
@Override |
public ExtensionRegistry getUnmodifiable() { |
return new ExtensionRegistry(this); |
} |
/** A (Descriptor, Message) pair, returned by lookup methods. */ |
public static final class ExtensionInfo { |
/** The extension's descriptor. */ |
public final FieldDescriptor descriptor; |
/** |
* A default instance of the extension's type, if it has a message type. |
* Otherwise, {@code null}. |
*/ |
public final Message defaultInstance; |
private ExtensionInfo(final FieldDescriptor descriptor) { |
this.descriptor = descriptor; |
defaultInstance = null; |
} |
private ExtensionInfo(final FieldDescriptor descriptor, |
final Message defaultInstance) { |
this.descriptor = descriptor; |
this.defaultInstance = defaultInstance; |
} |
} |
/** |
* Find an extension by fully-qualified field name, in the proto namespace. |
* I.e. {@code result.descriptor.fullName()} will match {@code fullName} if |
* a match is found. |
* |
* @return Information about the extension if found, or {@code null} |
* otherwise. |
*/ |
public ExtensionInfo findExtensionByName(final String fullName) { |
return extensionsByName.get(fullName); |
} |
/** |
* Find an extension by containing type and field number. |
* |
* @return Information about the extension if found, or {@code null} |
* otherwise. |
*/ |
public ExtensionInfo findExtensionByNumber(final Descriptor containingType, |
final int fieldNumber) { |
return extensionsByNumber.get( |
new DescriptorIntPair(containingType, fieldNumber)); |
} |
/** Add an extension from a generated file to the registry. */ |
public void add(final GeneratedMessage.GeneratedExtension<?, ?> extension) { |
if (extension.getDescriptor().getJavaType() == |
FieldDescriptor.JavaType.MESSAGE) { |
if (extension.getMessageDefaultInstance() == null) { |
throw new IllegalStateException( |
"Registered message-type extension had null default instance: " + |
extension.getDescriptor().getFullName()); |
} |
add(new ExtensionInfo(extension.getDescriptor(), |
extension.getMessageDefaultInstance())); |
} else { |
add(new ExtensionInfo(extension.getDescriptor(), null)); |
} |
} |
/** Add a non-message-type extension to the registry by descriptor. */ |
public void add(final FieldDescriptor type) { |
if (type.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { |
throw new IllegalArgumentException( |
"ExtensionRegistry.add() must be provided a default instance when " + |
"adding an embedded message extension."); |
} |
add(new ExtensionInfo(type, null)); |
} |
/** Add a message-type extension to the registry by descriptor. */ |
public void add(final FieldDescriptor type, final Message defaultInstance) { |
if (type.getJavaType() != FieldDescriptor.JavaType.MESSAGE) { |
throw new IllegalArgumentException( |
"ExtensionRegistry.add() provided a default instance for a " + |
"non-message extension."); |
} |
add(new ExtensionInfo(type, defaultInstance)); |
} |
// ================================================================= |
// Private stuff. |
private ExtensionRegistry() { |
this.extensionsByName = new HashMap<String, ExtensionInfo>(); |
this.extensionsByNumber = new HashMap<DescriptorIntPair, ExtensionInfo>(); |
} |
private ExtensionRegistry(ExtensionRegistry other) { |
super(other); |
this.extensionsByName = Collections.unmodifiableMap(other.extensionsByName); |
this.extensionsByNumber = |
Collections.unmodifiableMap(other.extensionsByNumber); |
} |
private final Map<String, ExtensionInfo> extensionsByName; |
private final Map<DescriptorIntPair, ExtensionInfo> extensionsByNumber; |
private ExtensionRegistry(boolean empty) { |
super(ExtensionRegistryLite.getEmptyRegistry()); |
this.extensionsByName = Collections.<String, ExtensionInfo>emptyMap(); |
this.extensionsByNumber = |
Collections.<DescriptorIntPair, ExtensionInfo>emptyMap(); |
} |
private static final ExtensionRegistry EMPTY = new ExtensionRegistry(true); |
private void add(final ExtensionInfo extension) { |
if (!extension.descriptor.isExtension()) { |
throw new IllegalArgumentException( |
"ExtensionRegistry.add() was given a FieldDescriptor for a regular " + |
"(non-extension) field."); |
} |
extensionsByName.put(extension.descriptor.getFullName(), extension); |
extensionsByNumber.put( |
new DescriptorIntPair(extension.descriptor.getContainingType(), |
extension.descriptor.getNumber()), |
extension); |
final FieldDescriptor field = extension.descriptor; |
if (field.getContainingType().getOptions().getMessageSetWireFormat() && |
field.getType() == FieldDescriptor.Type.MESSAGE && |
field.isOptional() && |
field.getExtensionScope() == field.getMessageType()) { |
// This is an extension of a MessageSet type defined within the extension |
// type's own scope. For backwards-compatibility, allow it to be looked |
// up by type name. |
extensionsByName.put(field.getMessageType().getFullName(), extension); |
} |
} |
/** A (GenericDescriptor, int) pair, used as a map key. */ |
private static final class DescriptorIntPair { |
private final Descriptor descriptor; |
private final int number; |
DescriptorIntPair(final Descriptor descriptor, final int number) { |
this.descriptor = descriptor; |
this.number = number; |
} |
@Override |
public int hashCode() { |
return descriptor.hashCode() * ((1 << 16) - 1) + number; |
} |
@Override |
public boolean equals(final Object obj) { |
if (!(obj instanceof DescriptorIntPair)) { |
return false; |
} |
final DescriptorIntPair other = (DescriptorIntPair)obj; |
return descriptor == other.descriptor && number == other.number; |
} |
} |
} |
/Android Development/IOIODebugger/src/com/google/protobuf/ExtensionRegistryLite.java |
---|
0,0 → 1,169 |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
// |
// * Redistributions of source code must retain the above copyright |
// notice, this list of conditions and the following disclaimer. |
// * Redistributions in binary form must reproduce the above |
// copyright notice, this list of conditions and the following disclaimer |
// in the documentation and/or other materials provided with the |
// distribution. |
// * Neither the name of Google Inc. nor the names of its |
// contributors may be used to endorse or promote products derived from |
// this software without specific prior written permission. |
// |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
package com.google.protobuf; |
import java.util.Collections; |
import java.util.HashMap; |
import java.util.Map; |
/** |
* Equivalent to {@link ExtensionRegistry} but supports only "lite" types. |
* <p> |
* If all of your types are lite types, then you only need to use |
* {@code ExtensionRegistryLite}. Similarly, if all your types are regular |
* types, then you only need {@link ExtensionRegistry}. Typically it does not |
* make sense to mix the two, since if you have any regular types in your |
* program, you then require the full runtime and lose all the benefits of |
* the lite runtime, so you might as well make all your types be regular types. |
* However, in some cases (e.g. when depending on multiple third-patry libraries |
* where one uses lite types and one uses regular), you may find yourself |
* wanting to mix the two. In this case things get more complicated. |
* <p> |
* There are three factors to consider: Whether the type being extended is |
* lite, whether the embedded type (in the case of a message-typed extension) |
* is lite, and whether the extension itself is lite. Since all three are |
* declared in different files, they could all be different. Here are all |
* the combinations and which type of registry to use: |
* <pre> |
* Extended type Inner type Extension Use registry |
* ======================================================================= |
* lite lite lite ExtensionRegistryLite |
* lite regular lite ExtensionRegistry |
* regular regular regular ExtensionRegistry |
* all other combinations not supported |
* </pre> |
* <p> |
* Note that just as regular types are not allowed to contain lite-type fields, |
* they are also not allowed to contain lite-type extensions. This is because |
* regular types must be fully accessible via reflection, which in turn means |
* that all the inner messages must also support reflection. On the other hand, |
* since regular types implement the entire lite interface, there is no problem |
* with embedding regular types inside lite types. |
* |
* @author kenton@google.com Kenton Varda |
*/ |
public class ExtensionRegistryLite { |
/** Construct a new, empty instance. */ |
public static ExtensionRegistryLite newInstance() { |
return new ExtensionRegistryLite(); |
} |
/** Get the unmodifiable singleton empty instance. */ |
public static ExtensionRegistryLite getEmptyRegistry() { |
return EMPTY; |
} |
/** Returns an unmodifiable view of the registry. */ |
public ExtensionRegistryLite getUnmodifiable() { |
return new ExtensionRegistryLite(this); |
} |
/** |
* Find an extension by containing type and field number. |
* |
* @return Information about the extension if found, or {@code null} |
* otherwise. |
*/ |
@SuppressWarnings("unchecked") |
public <ContainingType extends MessageLite> |
GeneratedMessageLite.GeneratedExtension<ContainingType, ?> |
findLiteExtensionByNumber( |
final ContainingType containingTypeDefaultInstance, |
final int fieldNumber) { |
return (GeneratedMessageLite.GeneratedExtension<ContainingType, ?>) |
extensionsByNumber.get( |
new ObjectIntPair(containingTypeDefaultInstance, fieldNumber)); |
} |
/** Add an extension from a lite generated file to the registry. */ |
public final void add( |
final GeneratedMessageLite.GeneratedExtension<?, ?> extension) { |
extensionsByNumber.put( |
new ObjectIntPair(extension.getContainingTypeDefaultInstance(), |
extension.getNumber()), |
extension); |
} |
// ================================================================= |
// Private stuff. |
// Constructors are package-private so that ExtensionRegistry can subclass |
// this. |
ExtensionRegistryLite() { |
this.extensionsByNumber = |
new HashMap<ObjectIntPair, |
GeneratedMessageLite.GeneratedExtension<?, ?>>(); |
} |
ExtensionRegistryLite(ExtensionRegistryLite other) { |
if (other == EMPTY) { |
this.extensionsByNumber = Collections.emptyMap(); |
} else { |
this.extensionsByNumber = |
Collections.unmodifiableMap(other.extensionsByNumber); |
} |
} |
private final Map<ObjectIntPair, |
GeneratedMessageLite.GeneratedExtension<?, ?>> |
extensionsByNumber; |
private ExtensionRegistryLite(boolean empty) { |
this.extensionsByNumber = Collections.emptyMap(); |
} |
private static final ExtensionRegistryLite EMPTY = |
new ExtensionRegistryLite(true); |
/** A (Object, int) pair, used as a map key. */ |
private static final class ObjectIntPair { |
private final Object object; |
private final int number; |
ObjectIntPair(final Object object, final int number) { |
this.object = object; |
this.number = number; |
} |
@Override |
public int hashCode() { |
return System.identityHashCode(object) * ((1 << 16) - 1) + number; |
} |
@Override |
public boolean equals(final Object obj) { |
if (!(obj instanceof ObjectIntPair)) { |
return false; |
} |
final ObjectIntPair other = (ObjectIntPair)obj; |
return object == other.object && number == other.number; |
} |
} |
} |
/Android Development/IOIODebugger/src/com/google/protobuf/FieldSet.java |
---|
0,0 → 1,788 |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
// |
// * Redistributions of source code must retain the above copyright |
// notice, this list of conditions and the following disclaimer. |
// * Redistributions in binary form must reproduce the above |
// copyright notice, this list of conditions and the following disclaimer |
// in the documentation and/or other materials provided with the |
// distribution. |
// * Neither the name of Google Inc. nor the names of its |
// contributors may be used to endorse or promote products derived from |
// this software without specific prior written permission. |
// |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
package com.google.protobuf; |
import java.util.ArrayList; |
import java.util.Collections; |
import java.util.Iterator; |
import java.util.List; |
import java.util.Map; |
import java.io.IOException; |
/** |
* A class which represents an arbitrary set of fields of some message type. |
* This is used to implement {@link DynamicMessage}, and also to represent |
* extensions in {@link GeneratedMessage}. This class is package-private, |
* since outside users should probably be using {@link DynamicMessage}. |
* |
* @author kenton@google.com Kenton Varda |
*/ |
final class FieldSet<FieldDescriptorType extends |
FieldSet.FieldDescriptorLite<FieldDescriptorType>> { |
/** |
* Interface for a FieldDescriptor or lite extension descriptor. This |
* prevents FieldSet from depending on {@link Descriptors.FieldDescriptor}. |
*/ |
public interface FieldDescriptorLite<T extends FieldDescriptorLite<T>> |
extends Comparable<T> { |
int getNumber(); |
WireFormat.FieldType getLiteType(); |
WireFormat.JavaType getLiteJavaType(); |
boolean isRepeated(); |
boolean isPacked(); |
Internal.EnumLiteMap<?> getEnumType(); |
// If getLiteJavaType() == MESSAGE, this merges a message object of the |
// type into a builder of the type. Returns {@code to}. |
MessageLite.Builder internalMergeFrom( |
MessageLite.Builder to, MessageLite from); |
} |
private final SmallSortedMap<FieldDescriptorType, Object> fields; |
private boolean isImmutable; |
/** Construct a new FieldSet. */ |
private FieldSet() { |
this.fields = SmallSortedMap.newFieldMap(16); |
} |
/** |
* Construct an empty FieldSet. This is only used to initialize |
* DEFAULT_INSTANCE. |
*/ |
private FieldSet(final boolean dummy) { |
this.fields = SmallSortedMap.newFieldMap(0); |
makeImmutable(); |
} |
/** Construct a new FieldSet. */ |
public static <T extends FieldSet.FieldDescriptorLite<T>> |
FieldSet<T> newFieldSet() { |
return new FieldSet<T>(); |
} |
/** Get an immutable empty FieldSet. */ |
@SuppressWarnings("unchecked") |
public static <T extends FieldSet.FieldDescriptorLite<T>> |
FieldSet<T> emptySet() { |
return DEFAULT_INSTANCE; |
} |
@SuppressWarnings("unchecked") |
private static final FieldSet DEFAULT_INSTANCE = new FieldSet(true); |
/** Make this FieldSet immutable from this point forward. */ |
@SuppressWarnings("unchecked") |
public void makeImmutable() { |
if (isImmutable) { |
return; |
} |
fields.makeImmutable(); |
isImmutable = true; |
} |
/** |
* Retuns whether the FieldSet is immutable. This is true if it is the |
* {@link #emptySet} or if {@link #makeImmutable} were called. |
* |
* @return whether the FieldSet is immutable. |
*/ |
public boolean isImmutable() { |
return isImmutable; |
} |
/** |
* Clones the FieldSet. The returned FieldSet will be mutable even if the |
* original FieldSet was immutable. |
* |
* @return the newly cloned FieldSet |
*/ |
@Override |
public FieldSet<FieldDescriptorType> clone() { |
// We can't just call fields.clone because List objects in the map |
// should not be shared. |
FieldSet<FieldDescriptorType> clone = FieldSet.newFieldSet(); |
for (int i = 0; i < fields.getNumArrayEntries(); i++) { |
Map.Entry<FieldDescriptorType, Object> entry = fields.getArrayEntryAt(i); |
FieldDescriptorType descriptor = entry.getKey(); |
clone.setField(descriptor, entry.getValue()); |
} |
for (Map.Entry<FieldDescriptorType, Object> entry : |
fields.getOverflowEntries()) { |
FieldDescriptorType descriptor = entry.getKey(); |
clone.setField(descriptor, entry.getValue()); |
} |
return clone; |
} |
// ================================================================= |
/** See {@link Message.Builder#clear()}. */ |
public void clear() { |
fields.clear(); |
} |
/** |
* Get a simple map containing all the fields. |
*/ |
public Map<FieldDescriptorType, Object> getAllFields() { |
return fields.isImmutable() ? fields : Collections.unmodifiableMap(fields); |
} |
/** |
* Get an iterator to the field map. This iterator should not be leaked out |
* of the protobuf library as it is not protected from mutation when |
* fields is not immutable. |
*/ |
public Iterator<Map.Entry<FieldDescriptorType, Object>> iterator() { |
return fields.entrySet().iterator(); |
} |
/** |
* Useful for implementing |
* {@link Message#hasField(Descriptors.FieldDescriptor)}. |
*/ |
public boolean hasField(final FieldDescriptorType descriptor) { |
if (descriptor.isRepeated()) { |
throw new IllegalArgumentException( |
"hasField() can only be called on non-repeated fields."); |
} |
return fields.get(descriptor) != null; |
} |
/** |
* Useful for implementing |
* {@link Message#getField(Descriptors.FieldDescriptor)}. This method |
* returns {@code null} if the field is not set; in this case it is up |
* to the caller to fetch the field's default value. |
*/ |
public Object getField(final FieldDescriptorType descriptor) { |
return fields.get(descriptor); |
} |
/** |
* Useful for implementing |
* {@link Message.Builder#setField(Descriptors.FieldDescriptor,Object)}. |
*/ |
@SuppressWarnings("unchecked") |
public void setField(final FieldDescriptorType descriptor, |
Object value) { |
if (descriptor.isRepeated()) { |
if (!(value instanceof List)) { |
throw new IllegalArgumentException( |
"Wrong object type used with protocol message reflection."); |
} |
// Wrap the contents in a new list so that the caller cannot change |
// the list's contents after setting it. |
final List newList = new ArrayList(); |
newList.addAll((List)value); |
for (final Object element : newList) { |
verifyType(descriptor.getLiteType(), element); |
} |
value = newList; |
} else { |
verifyType(descriptor.getLiteType(), value); |
} |
fields.put(descriptor, value); |
} |
/** |
* Useful for implementing |
* {@link Message.Builder#clearField(Descriptors.FieldDescriptor)}. |
*/ |
public void clearField(final FieldDescriptorType descriptor) { |
fields.remove(descriptor); |
} |
/** |
* Useful for implementing |
* {@link Message#getRepeatedFieldCount(Descriptors.FieldDescriptor)}. |
*/ |
public int getRepeatedFieldCount(final FieldDescriptorType descriptor) { |
if (!descriptor.isRepeated()) { |
throw new IllegalArgumentException( |
"getRepeatedField() can only be called on repeated fields."); |
} |
final Object value = fields.get(descriptor); |
if (value == null) { |
return 0; |
} else { |
return ((List<?>) value).size(); |
} |
} |
/** |
* Useful for implementing |
* {@link Message#getRepeatedField(Descriptors.FieldDescriptor,int)}. |
*/ |
public Object getRepeatedField(final FieldDescriptorType descriptor, |
final int index) { |
if (!descriptor.isRepeated()) { |
throw new IllegalArgumentException( |
"getRepeatedField() can only be called on repeated fields."); |
} |
final Object value = fields.get(descriptor); |
if (value == null) { |
throw new IndexOutOfBoundsException(); |
} else { |
return ((List<?>) value).get(index); |
} |
} |
/** |
* Useful for implementing |
* {@link Message.Builder#setRepeatedField(Descriptors.FieldDescriptor,int,Object)}. |
*/ |
@SuppressWarnings("unchecked") |
public void setRepeatedField(final FieldDescriptorType descriptor, |
final int index, |
final Object value) { |
if (!descriptor.isRepeated()) { |
throw new IllegalArgumentException( |
"getRepeatedField() can only be called on repeated fields."); |
} |
final Object list = fields.get(descriptor); |
if (list == null) { |
throw new IndexOutOfBoundsException(); |
} |
verifyType(descriptor.getLiteType(), value); |
((List) list).set(index, value); |
} |
/** |
* Useful for implementing |
* {@link Message.Builder#addRepeatedField(Descriptors.FieldDescriptor,Object)}. |
*/ |
@SuppressWarnings("unchecked") |
public void addRepeatedField(final FieldDescriptorType descriptor, |
final Object value) { |
if (!descriptor.isRepeated()) { |
throw new IllegalArgumentException( |
"addRepeatedField() can only be called on repeated fields."); |
} |
verifyType(descriptor.getLiteType(), value); |
final Object existingValue = fields.get(descriptor); |
List list; |
if (existingValue == null) { |
list = new ArrayList(); |
fields.put(descriptor, list); |
} else { |
list = (List) existingValue; |
} |
list.add(value); |
} |
/** |
* Verifies that the given object is of the correct type to be a valid |
* value for the given field. (For repeated fields, this checks if the |
* object is the right type to be one element of the field.) |
* |
* @throws IllegalArgumentException The value is not of the right type. |
*/ |
private static void verifyType(final WireFormat.FieldType type, |
final Object value) { |
if (value == null) { |
throw new NullPointerException(); |
} |
boolean isValid = false; |
switch (type.getJavaType()) { |
case INT: isValid = value instanceof Integer ; break; |
case LONG: isValid = value instanceof Long ; break; |
case FLOAT: isValid = value instanceof Float ; break; |
case DOUBLE: isValid = value instanceof Double ; break; |
case BOOLEAN: isValid = value instanceof Boolean ; break; |
case STRING: isValid = value instanceof String ; break; |
case BYTE_STRING: isValid = value instanceof ByteString; break; |
case ENUM: |
// TODO(kenton): Caller must do type checking here, I guess. |
isValid = value instanceof Internal.EnumLite; |
break; |
case MESSAGE: |
// TODO(kenton): Caller must do type checking here, I guess. |
isValid = value instanceof MessageLite; |
break; |
} |
if (!isValid) { |
// TODO(kenton): When chaining calls to setField(), it can be hard to |
// tell from the stack trace which exact call failed, since the whole |
// chain is considered one line of code. It would be nice to print |
// more information here, e.g. naming the field. We used to do that. |
// But we can't now that FieldSet doesn't use descriptors. Maybe this |
// isn't a big deal, though, since it would only really apply when using |
// reflection and generally people don't chain reflection setters. |
throw new IllegalArgumentException( |
"Wrong object type used with protocol message reflection."); |
} |
} |
// ================================================================= |
// Parsing and serialization |
/** |
* See {@link Message#isInitialized()}. Note: Since {@code FieldSet} |
* itself does not have any way of knowing about required fields that |
* aren't actually present in the set, it is up to the caller to check |
* that all required fields are present. |
*/ |
public boolean isInitialized() { |
for (int i = 0; i < fields.getNumArrayEntries(); i++) { |
if (!isInitialized(fields.getArrayEntryAt(i))) { |
return false; |
} |
} |
for (final Map.Entry<FieldDescriptorType, Object> entry : |
fields.getOverflowEntries()) { |
if (!isInitialized(entry)) { |
return false; |
} |
} |
return true; |
} |
@SuppressWarnings("unchecked") |
private boolean isInitialized( |
final Map.Entry<FieldDescriptorType, Object> entry) { |
final FieldDescriptorType descriptor = entry.getKey(); |
if (descriptor.getLiteJavaType() == WireFormat.JavaType.MESSAGE) { |
if (descriptor.isRepeated()) { |
for (final MessageLite element: |
(List<MessageLite>) entry.getValue()) { |
if (!element.isInitialized()) { |
return false; |
} |
} |
} else { |
if (!((MessageLite) entry.getValue()).isInitialized()) { |
return false; |
} |
} |
} |
return true; |
} |
/** |
* Given a field type, return the wire type. |
* |
* @returns One of the {@code WIRETYPE_} constants defined in |
* {@link WireFormat}. |
*/ |
static int getWireFormatForFieldType(final WireFormat.FieldType type, |
boolean isPacked) { |
if (isPacked) { |
return WireFormat.WIRETYPE_LENGTH_DELIMITED; |
} else { |
return type.getWireType(); |
} |
} |
/** |
* Like {@link #mergeFrom(Message)}, but merges from another {@link FieldSet}. |
*/ |
public void mergeFrom(final FieldSet<FieldDescriptorType> other) { |
for (int i = 0; i < other.fields.getNumArrayEntries(); i++) { |
mergeFromField(other.fields.getArrayEntryAt(i)); |
} |
for (final Map.Entry<FieldDescriptorType, Object> entry : |
other.fields.getOverflowEntries()) { |
mergeFromField(entry); |
} |
} |
@SuppressWarnings("unchecked") |
private void mergeFromField( |
final Map.Entry<FieldDescriptorType, Object> entry) { |
final FieldDescriptorType descriptor = entry.getKey(); |
final Object otherValue = entry.getValue(); |
if (descriptor.isRepeated()) { |
Object value = fields.get(descriptor); |
if (value == null) { |
// Our list is empty, but we still need to make a defensive copy of |
// the other list since we don't know if the other FieldSet is still |
// mutable. |
fields.put(descriptor, new ArrayList((List) otherValue)); |
} else { |
// Concatenate the lists. |
((List) value).addAll((List) otherValue); |
} |
} else if (descriptor.getLiteJavaType() == WireFormat.JavaType.MESSAGE) { |
Object value = fields.get(descriptor); |
if (value == null) { |
fields.put(descriptor, otherValue); |
} else { |
// Merge the messages. |
fields.put( |
descriptor, |
descriptor.internalMergeFrom( |
((MessageLite) value).toBuilder(), (MessageLite) otherValue) |
.build()); |
} |
} else { |
fields.put(descriptor, otherValue); |
} |
} |
// TODO(kenton): Move static parsing and serialization methods into some |
// other class. Probably WireFormat. |
/** |
* Read a field of any primitive type from a CodedInputStream. Enums, |
* groups, and embedded messages are not handled by this method. |
* |
* @param input The stream from which to read. |
* @param type Declared type of the field. |
* @return An object representing the field's value, of the exact |
* type which would be returned by |
* {@link Message#getField(Descriptors.FieldDescriptor)} for |
* this field. |
*/ |
public static Object readPrimitiveField( |
CodedInputStream input, |
final WireFormat.FieldType type) throws IOException { |
switch (type) { |
case DOUBLE : return input.readDouble (); |
case FLOAT : return input.readFloat (); |
case INT64 : return input.readInt64 (); |
case UINT64 : return input.readUInt64 (); |
case INT32 : return input.readInt32 (); |
case FIXED64 : return input.readFixed64 (); |
case FIXED32 : return input.readFixed32 (); |
case BOOL : return input.readBool (); |
case STRING : return input.readString (); |
case BYTES : return input.readBytes (); |
case UINT32 : return input.readUInt32 (); |
case SFIXED32: return input.readSFixed32(); |
case SFIXED64: return input.readSFixed64(); |
case SINT32 : return input.readSInt32 (); |
case SINT64 : return input.readSInt64 (); |
case GROUP: |
throw new IllegalArgumentException( |
"readPrimitiveField() cannot handle nested groups."); |
case MESSAGE: |
throw new IllegalArgumentException( |
"readPrimitiveField() cannot handle embedded messages."); |
case ENUM: |
// We don't handle enums because we don't know what to do if the |
// value is not recognized. |
throw new IllegalArgumentException( |
"readPrimitiveField() cannot handle enums."); |
} |
throw new RuntimeException( |
"There is no way to get here, but the compiler thinks otherwise."); |
} |
/** See {@link Message#writeTo(CodedOutputStream)}. */ |
public void writeTo(final CodedOutputStream output) |
throws IOException { |
for (int i = 0; i < fields.getNumArrayEntries(); i++) { |
final Map.Entry<FieldDescriptorType, Object> entry = |
fields.getArrayEntryAt(i); |
writeField(entry.getKey(), entry.getValue(), output); |
} |
for (final Map.Entry<FieldDescriptorType, Object> entry : |
fields.getOverflowEntries()) { |
writeField(entry.getKey(), entry.getValue(), output); |
} |
} |
/** |
* Like {@link #writeTo} but uses MessageSet wire format. |
*/ |
public void writeMessageSetTo(final CodedOutputStream output) |
throws IOException { |
for (int i = 0; i < fields.getNumArrayEntries(); i++) { |
writeMessageSetTo(fields.getArrayEntryAt(i), output); |
} |
for (final Map.Entry<FieldDescriptorType, Object> entry : |
fields.getOverflowEntries()) { |
writeMessageSetTo(entry, output); |
} |
} |
private void writeMessageSetTo( |
final Map.Entry<FieldDescriptorType, Object> entry, |
final CodedOutputStream output) throws IOException { |
final FieldDescriptorType descriptor = entry.getKey(); |
if (descriptor.getLiteJavaType() == WireFormat.JavaType.MESSAGE && |
!descriptor.isRepeated() && !descriptor.isPacked()) { |
output.writeMessageSetExtension(entry.getKey().getNumber(), |
(MessageLite) entry.getValue()); |
} else { |
writeField(descriptor, entry.getValue(), output); |
} |
} |
/** |
* Write a single tag-value pair to the stream. |
* |
* @param output The output stream. |
* @param type The field's type. |
* @param number The field's number. |
* @param value Object representing the field's value. Must be of the exact |
* type which would be returned by |
* {@link Message#getField(Descriptors.FieldDescriptor)} for |
* this field. |
*/ |
private static void writeElement(final CodedOutputStream output, |
final WireFormat.FieldType type, |
final int number, |
final Object value) throws IOException { |
// Special case for groups, which need a start and end tag; other fields |
// can just use writeTag() and writeFieldNoTag(). |
if (type == WireFormat.FieldType.GROUP) { |
output.writeGroup(number, (MessageLite) value); |
} else { |
output.writeTag(number, getWireFormatForFieldType(type, false)); |
writeElementNoTag(output, type, value); |
} |
} |
/** |
* Write a field of arbitrary type, without its tag, to the stream. |
* |
* @param output The output stream. |
* @param type The field's type. |
* @param value Object representing the field's value. Must be of the exact |
* type which would be returned by |
* {@link Message#getField(Descriptors.FieldDescriptor)} for |
* this field. |
*/ |
private static void writeElementNoTag( |
final CodedOutputStream output, |
final WireFormat.FieldType type, |
final Object value) throws IOException { |
switch (type) { |
case DOUBLE : output.writeDoubleNoTag ((Double ) value); break; |
case FLOAT : output.writeFloatNoTag ((Float ) value); break; |
case INT64 : output.writeInt64NoTag ((Long ) value); break; |
case UINT64 : output.writeUInt64NoTag ((Long ) value); break; |
case INT32 : output.writeInt32NoTag ((Integer ) value); break; |
case FIXED64 : output.writeFixed64NoTag ((Long ) value); break; |
case FIXED32 : output.writeFixed32NoTag ((Integer ) value); break; |
case BOOL : output.writeBoolNoTag ((Boolean ) value); break; |
case STRING : output.writeStringNoTag ((String ) value); break; |
case GROUP : output.writeGroupNoTag ((MessageLite) value); break; |
case MESSAGE : output.writeMessageNoTag ((MessageLite) value); break; |
case BYTES : output.writeBytesNoTag ((ByteString ) value); break; |
case UINT32 : output.writeUInt32NoTag ((Integer ) value); break; |
case SFIXED32: output.writeSFixed32NoTag((Integer ) value); break; |
case SFIXED64: output.writeSFixed64NoTag((Long ) value); break; |
case SINT32 : output.writeSInt32NoTag ((Integer ) value); break; |
case SINT64 : output.writeSInt64NoTag ((Long ) value); break; |
case ENUM: |
output.writeEnumNoTag(((Internal.EnumLite) value).getNumber()); |
break; |
} |
} |
/** Write a single field. */ |
public static void writeField(final FieldDescriptorLite<?> descriptor, |
final Object value, |
final CodedOutputStream output) |
throws IOException { |
WireFormat.FieldType type = descriptor.getLiteType(); |
int number = descriptor.getNumber(); |
if (descriptor.isRepeated()) { |
final List<?> valueList = (List<?>)value; |
if (descriptor.isPacked()) { |
output.writeTag(number, WireFormat.WIRETYPE_LENGTH_DELIMITED); |
// Compute the total data size so the length can be written. |
int dataSize = 0; |
for (final Object element : valueList) { |
dataSize += computeElementSizeNoTag(type, element); |
} |
output.writeRawVarint32(dataSize); |
// Write the data itself, without any tags. |
for (final Object element : valueList) { |
writeElementNoTag(output, type, element); |
} |
} else { |
for (final Object element : valueList) { |
writeElement(output, type, number, element); |
} |
} |
} else { |
writeElement(output, type, number, value); |
} |
} |
/** |
* See {@link Message#getSerializedSize()}. It's up to the caller to cache |
* the resulting size if desired. |
*/ |
public int getSerializedSize() { |
int size = 0; |
for (int i = 0; i < fields.getNumArrayEntries(); i++) { |
final Map.Entry<FieldDescriptorType, Object> entry = |
fields.getArrayEntryAt(i); |
size += computeFieldSize(entry.getKey(), entry.getValue()); |
} |
for (final Map.Entry<FieldDescriptorType, Object> entry : |
fields.getOverflowEntries()) { |
size += computeFieldSize(entry.getKey(), entry.getValue()); |
} |
return size; |
} |
/** |
* Like {@link #getSerializedSize} but uses MessageSet wire format. |
*/ |
public int getMessageSetSerializedSize() { |
int size = 0; |
for (int i = 0; i < fields.getNumArrayEntries(); i++) { |
size += getMessageSetSerializedSize(fields.getArrayEntryAt(i)); |
} |
for (final Map.Entry<FieldDescriptorType, Object> entry : |
fields.getOverflowEntries()) { |
size += getMessageSetSerializedSize(entry); |
} |
return size; |
} |
private int getMessageSetSerializedSize( |
final Map.Entry<FieldDescriptorType, Object> entry) { |
final FieldDescriptorType descriptor = entry.getKey(); |
if (descriptor.getLiteJavaType() == WireFormat.JavaType.MESSAGE && |
!descriptor.isRepeated() && !descriptor.isPacked()) { |
return CodedOutputStream.computeMessageSetExtensionSize( |
entry.getKey().getNumber(), (MessageLite) entry.getValue()); |
} else { |
return computeFieldSize(descriptor, entry.getValue()); |
} |
} |
/** |
* Compute the number of bytes that would be needed to encode a |
* single tag/value pair of arbitrary type. |
* |
* @param type The field's type. |
* @param number The field's number. |
* @param value Object representing the field's value. Must be of the exact |
* type which would be returned by |
* {@link Message#getField(Descriptors.FieldDescriptor)} for |
* this field. |
*/ |
private static int computeElementSize( |
final WireFormat.FieldType type, |
final int number, final Object value) { |
int tagSize = CodedOutputStream.computeTagSize(number); |
if (type == WireFormat.FieldType.GROUP) { |
tagSize *= 2; |
} |
return tagSize + computeElementSizeNoTag(type, value); |
} |
/** |
* Compute the number of bytes that would be needed to encode a |
* particular value of arbitrary type, excluding tag. |
* |
* @param type The field's type. |
* @param value Object representing the field's value. Must be of the exact |
* type which would be returned by |
* {@link Message#getField(Descriptors.FieldDescriptor)} for |
* this field. |
*/ |
private static int computeElementSizeNoTag( |
final WireFormat.FieldType type, final Object value) { |
switch (type) { |
// Note: Minor violation of 80-char limit rule here because this would |
// actually be harder to read if we wrapped the lines. |
case DOUBLE : return CodedOutputStream.computeDoubleSizeNoTag ((Double )value); |
case FLOAT : return CodedOutputStream.computeFloatSizeNoTag ((Float )value); |
case INT64 : return CodedOutputStream.computeInt64SizeNoTag ((Long )value); |
case UINT64 : return CodedOutputStream.computeUInt64SizeNoTag ((Long )value); |
case INT32 : return CodedOutputStream.computeInt32SizeNoTag ((Integer )value); |
case FIXED64 : return CodedOutputStream.computeFixed64SizeNoTag ((Long )value); |
case FIXED32 : return CodedOutputStream.computeFixed32SizeNoTag ((Integer )value); |
case BOOL : return CodedOutputStream.computeBoolSizeNoTag ((Boolean )value); |
case STRING : return CodedOutputStream.computeStringSizeNoTag ((String )value); |
case GROUP : return CodedOutputStream.computeGroupSizeNoTag ((MessageLite)value); |
case MESSAGE : return CodedOutputStream.computeMessageSizeNoTag ((MessageLite)value); |
case BYTES : return CodedOutputStream.computeBytesSizeNoTag ((ByteString )value); |
case UINT32 : return CodedOutputStream.computeUInt32SizeNoTag ((Integer )value); |
case SFIXED32: return CodedOutputStream.computeSFixed32SizeNoTag((Integer )value); |
case SFIXED64: return CodedOutputStream.computeSFixed64SizeNoTag((Long )value); |
case SINT32 : return CodedOutputStream.computeSInt32SizeNoTag ((Integer )value); |
case SINT64 : return CodedOutputStream.computeSInt64SizeNoTag ((Long )value); |
case ENUM: |
return CodedOutputStream.computeEnumSizeNoTag( |
((Internal.EnumLite) value).getNumber()); |
} |
throw new RuntimeException( |
"There is no way to get here, but the compiler thinks otherwise."); |
} |
/** |
* Compute the number of bytes needed to encode a particular field. |
*/ |
public static int computeFieldSize(final FieldDescriptorLite<?> descriptor, |
final Object value) { |
WireFormat.FieldType type = descriptor.getLiteType(); |
int number = descriptor.getNumber(); |
if (descriptor.isRepeated()) { |
if (descriptor.isPacked()) { |
int dataSize = 0; |
for (final Object element : (List<?>)value) { |
dataSize += computeElementSizeNoTag(type, element); |
} |
return dataSize + |
CodedOutputStream.computeTagSize(number) + |
CodedOutputStream.computeRawVarint32Size(dataSize); |
} else { |
int size = 0; |
for (final Object element : (List<?>)value) { |
size += computeElementSize(type, number, element); |
} |
return size; |
} |
} else { |
return computeElementSize(type, number, value); |
} |
} |
} |
/Android Development/IOIODebugger/src/com/google/protobuf/GeneratedMessage.java |
---|
0,0 → 1,1834 |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
// |
// * Redistributions of source code must retain the above copyright |
// notice, this list of conditions and the following disclaimer. |
// * Redistributions in binary form must reproduce the above |
// copyright notice, this list of conditions and the following disclaimer |
// in the documentation and/or other materials provided with the |
// distribution. |
// * Neither the name of Google Inc. nor the names of its |
// contributors may be used to endorse or promote products derived from |
// this software without specific prior written permission. |
// |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
package com.google.protobuf; |
import com.google.protobuf.Descriptors.Descriptor; |
import com.google.protobuf.Descriptors.EnumValueDescriptor; |
import com.google.protobuf.Descriptors.FieldDescriptor; |
import java.io.IOException; |
import java.io.ObjectStreamException; |
import java.io.Serializable; |
import java.lang.reflect.InvocationTargetException; |
import java.lang.reflect.Method; |
import java.util.ArrayList; |
import java.util.Collections; |
import java.util.Iterator; |
import java.util.List; |
import java.util.Map; |
import java.util.TreeMap; |
/** |
* All generated protocol message classes extend this class. This class |
* implements most of the Message and Builder interfaces using Java reflection. |
* Users can ignore this class and pretend that generated messages implement |
* the Message interface directly. |
* |
* @author kenton@google.com Kenton Varda |
*/ |
public abstract class GeneratedMessage extends AbstractMessage |
implements Serializable { |
private static final long serialVersionUID = 1L; |
private final UnknownFieldSet unknownFields; |
/** |
* For testing. Allows a test to disable the optimization that avoids using |
* field builders for nested messages until they are requested. By disabling |
* this optimization, existing tests can be reused to test the field builders. |
*/ |
protected static boolean alwaysUseFieldBuilders = false; |
protected GeneratedMessage() { |
this.unknownFields = UnknownFieldSet.getDefaultInstance(); |
} |
protected GeneratedMessage(Builder<?> builder) { |
this.unknownFields = builder.getUnknownFields(); |
} |
/** |
* For testing. Allows a test to disable the optimization that avoids using |
* field builders for nested messages until they are requested. By disabling |
* this optimization, existing tests can be reused to test the field builders. |
* See {@link RepeatedFieldBuilder} and {@link SingleFieldBuilder}. |
*/ |
static void enableAlwaysUseFieldBuildersForTesting() { |
alwaysUseFieldBuilders = true; |
} |
/** |
* Get the FieldAccessorTable for this type. We can't have the message |
* class pass this in to the constructor because of bootstrapping trouble |
* with DescriptorProtos. |
*/ |
protected abstract FieldAccessorTable internalGetFieldAccessorTable(); |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public Descriptor getDescriptorForType() { |
return internalGetFieldAccessorTable().descriptor; |
} |
/** Internal helper which returns a mutable map. */ |
private Map<FieldDescriptor, Object> getAllFieldsMutable() { |
final TreeMap<FieldDescriptor, Object> result = |
new TreeMap<FieldDescriptor, Object>(); |
final Descriptor descriptor = internalGetFieldAccessorTable().descriptor; |
for (final FieldDescriptor field : descriptor.getFields()) { |
if (field.isRepeated()) { |
final List<?> value = (List<?>) getField(field); |
if (!value.isEmpty()) { |
result.put(field, value); |
} |
} else { |
if (hasField(field)) { |
result.put(field, getField(field)); |
} |
} |
} |
return result; |
} |
@Override |
public boolean isInitialized() { |
for (final FieldDescriptor field : getDescriptorForType().getFields()) { |
// Check that all required fields are present. |
if (field.isRequired()) { |
if (!hasField(field)) { |
return false; |
} |
} |
// Check that embedded messages are initialized. |
if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { |
if (field.isRepeated()) { |
@SuppressWarnings("unchecked") final |
List<Message> messageList = (List<Message>) getField(field); |
for (final Message element : messageList) { |
if (!element.isInitialized()) { |
return false; |
} |
} |
} else { |
if (hasField(field) && !((Message) getField(field)).isInitialized()) { |
return false; |
} |
} |
} |
} |
return true; |
} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public Map<FieldDescriptor, Object> getAllFields() { |
return Collections.unmodifiableMap(getAllFieldsMutable()); |
} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public boolean hasField(final FieldDescriptor field) { |
return internalGetFieldAccessorTable().getField(field).has(this); |
} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public Object getField(final FieldDescriptor field) { |
return internalGetFieldAccessorTable().getField(field).get(this); |
} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public int getRepeatedFieldCount(final FieldDescriptor field) { |
return internalGetFieldAccessorTable().getField(field) |
.getRepeatedCount(this); |
} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public Object getRepeatedField(final FieldDescriptor field, final int index) { |
return internalGetFieldAccessorTable().getField(field) |
.getRepeated(this, index); |
} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public final UnknownFieldSet getUnknownFields() { |
return unknownFields; |
} |
protected abstract Message.Builder newBuilderForType(BuilderParent parent); |
/** |
* Interface for the parent of a Builder that allows the builder to |
* communicate invalidations back to the parent for use when using nested |
* builders. |
*/ |
protected interface BuilderParent { |
/** |
* A builder becomes dirty whenever a field is modified -- including fields |
* in nested builders -- and becomes clean when build() is called. Thus, |
* when a builder becomes dirty, all its parents become dirty as well, and |
* when it becomes clean, all its children become clean. The dirtiness |
* state is used to invalidate certain cached values. |
* <br> |
* To this end, a builder calls markAsDirty() on its parent whenever it |
* transitions from clean to dirty. The parent must propagate this call to |
* its own parent, unless it was already dirty, in which case the |
* grandparent must necessarily already be dirty as well. The parent can |
* only transition back to "clean" after calling build() on all children. |
*/ |
void markDirty(); |
} |
@SuppressWarnings("unchecked") |
public abstract static class Builder <BuilderType extends Builder> |
extends AbstractMessage.Builder<BuilderType> { |
private BuilderParent builderParent; |
private BuilderParentImpl meAsParent; |
// Indicates that we've built a message and so we are now obligated |
// to dispatch dirty invalidations. See GeneratedMessage.BuilderListener. |
private boolean isClean; |
private UnknownFieldSet unknownFields = |
UnknownFieldSet.getDefaultInstance(); |
protected Builder() { |
this(null); |
} |
protected Builder(BuilderParent builderParent) { |
this.builderParent = builderParent; |
} |
void dispose() { |
builderParent = null; |
} |
/** |
* Called by the subclass when a message is built. |
*/ |
protected void onBuilt() { |
if (builderParent != null) { |
markClean(); |
} |
} |
/** |
* Called by the subclass or a builder to notify us that a message was |
* built and may be cached and therefore invalidations are needed. |
*/ |
protected void markClean() { |
this.isClean = true; |
} |
/** |
* Gets whether invalidations are needed |
* |
* @return whether invalidations are needed |
*/ |
protected boolean isClean() { |
return isClean; |
} |
// This is implemented here only to work around an apparent bug in the |
// Java compiler and/or build system. See bug #1898463. The mere presence |
// of this dummy clone() implementation makes it go away. |
@Override |
public BuilderType clone() { |
throw new UnsupportedOperationException( |
"This is supposed to be overridden by subclasses."); |
} |
/** |
* Called by the initialization and clear code paths to allow subclasses to |
* reset any of their builtin fields back to the initial values. |
*/ |
public BuilderType clear() { |
unknownFields = UnknownFieldSet.getDefaultInstance(); |
onChanged(); |
return (BuilderType) this; |
} |
/** |
* Get the FieldAccessorTable for this type. We can't have the message |
* class pass this in to the constructor because of bootstrapping trouble |
* with DescriptorProtos. |
*/ |
protected abstract FieldAccessorTable internalGetFieldAccessorTable(); |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public Descriptor getDescriptorForType() { |
return internalGetFieldAccessorTable().descriptor; |
} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public Map<FieldDescriptor, Object> getAllFields() { |
return Collections.unmodifiableMap(getAllFieldsMutable()); |
} |
/** Internal helper which returns a mutable map. */ |
private Map<FieldDescriptor, Object> getAllFieldsMutable() { |
final TreeMap<FieldDescriptor, Object> result = |
new TreeMap<FieldDescriptor, Object>(); |
final Descriptor descriptor = internalGetFieldAccessorTable().descriptor; |
for (final FieldDescriptor field : descriptor.getFields()) { |
if (field.isRepeated()) { |
final List value = (List) getField(field); |
if (!value.isEmpty()) { |
result.put(field, value); |
} |
} else { |
if (hasField(field)) { |
result.put(field, getField(field)); |
} |
} |
} |
return result; |
} |
public Message.Builder newBuilderForField( |
final FieldDescriptor field) { |
return internalGetFieldAccessorTable().getField(field).newBuilder(); |
} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public boolean hasField(final FieldDescriptor field) { |
return internalGetFieldAccessorTable().getField(field).has(this); |
} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public Object getField(final FieldDescriptor field) { |
Object object = internalGetFieldAccessorTable().getField(field).get(this); |
if (field.isRepeated()) { |
// The underlying list object is still modifiable at this point. |
// Make sure not to expose the modifiable list to the caller. |
return Collections.unmodifiableList((List) object); |
} else { |
return object; |
} |
} |
public BuilderType setField(final FieldDescriptor field, |
final Object value) { |
internalGetFieldAccessorTable().getField(field).set(this, value); |
return (BuilderType) this; |
} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public BuilderType clearField(final FieldDescriptor field) { |
internalGetFieldAccessorTable().getField(field).clear(this); |
return (BuilderType) this; |
} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public int getRepeatedFieldCount(final FieldDescriptor field) { |
return internalGetFieldAccessorTable().getField(field) |
.getRepeatedCount(this); |
} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public Object getRepeatedField(final FieldDescriptor field, |
final int index) { |
return internalGetFieldAccessorTable().getField(field) |
.getRepeated(this, index); |
} |
public BuilderType setRepeatedField(final FieldDescriptor field, |
final int index, final Object value) { |
internalGetFieldAccessorTable().getField(field) |
.setRepeated(this, index, value); |
return (BuilderType) this; |
} |
public BuilderType addRepeatedField(final FieldDescriptor field, |
final Object value) { |
internalGetFieldAccessorTable().getField(field).addRepeated(this, value); |
return (BuilderType) this; |
} |
public final BuilderType setUnknownFields( |
final UnknownFieldSet unknownFields) { |
this.unknownFields = unknownFields; |
onChanged(); |
return (BuilderType) this; |
} |
@Override |
public final BuilderType mergeUnknownFields( |
final UnknownFieldSet unknownFields) { |
this.unknownFields = |
UnknownFieldSet.newBuilder(this.unknownFields) |
.mergeFrom(unknownFields) |
.build(); |
onChanged(); |
return (BuilderType) this; |
} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public boolean isInitialized() { |
for (final FieldDescriptor field : getDescriptorForType().getFields()) { |
// Check that all required fields are present. |
if (field.isRequired()) { |
if (!hasField(field)) { |
return false; |
} |
} |
// Check that embedded messages are initialized. |
if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { |
if (field.isRepeated()) { |
@SuppressWarnings("unchecked") final |
List<Message> messageList = (List<Message>) getField(field); |
for (final Message element : messageList) { |
if (!element.isInitialized()) { |
return false; |
} |
} |
} else { |
if (hasField(field) && |
!((Message) getField(field)).isInitialized()) { |
return false; |
} |
} |
} |
} |
return true; |
} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public final UnknownFieldSet getUnknownFields() { |
return unknownFields; |
} |
/** |
* Called by subclasses to parse an unknown field. |
* @return {@code true} unless the tag is an end-group tag. |
*/ |
protected boolean parseUnknownField( |
final CodedInputStream input, |
final UnknownFieldSet.Builder unknownFields, |
final ExtensionRegistryLite extensionRegistry, |
final int tag) throws IOException { |
return unknownFields.mergeFieldFrom(tag, input); |
} |
/** |
* Implementation of {@link BuilderParent} for giving to our children. This |
* small inner class makes it so we don't publicly expose the BuilderParent |
* methods. |
*/ |
private class BuilderParentImpl implements BuilderParent { |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public void markDirty() { |
onChanged(); |
} |
} |
/** |
* Gets the {@link BuilderParent} for giving to our children. |
* @return The builder parent for our children. |
*/ |
protected BuilderParent getParentForChildren() { |
if (meAsParent == null) { |
meAsParent = new BuilderParentImpl(); |
} |
return meAsParent; |
} |
/** |
* Called when a the builder or one of its nested children has changed |
* and any parent should be notified of its invalidation. |
*/ |
protected final void onChanged() { |
if (isClean && builderParent != null) { |
builderParent.markDirty(); |
// Don't keep dispatching invalidations until build is called again. |
isClean = false; |
} |
} |
} |
// ================================================================= |
// Extensions-related stuff |
public interface ExtendableMessageOrBuilder< |
MessageType extends ExtendableMessage> extends MessageOrBuilder { |
/** Check if a singular extension is present. */ |
<Type> boolean hasExtension( |
GeneratedExtension<MessageType, Type> extension); |
/** Get the number of elements in a repeated extension. */ |
<Type> int getExtensionCount( |
GeneratedExtension<MessageType, List<Type>> extension); |
/** Get the value of an extension. */ |
<Type> Type getExtension(GeneratedExtension<MessageType, Type> extension); |
/** Get one element of a repeated extension. */ |
<Type> Type getExtension( |
GeneratedExtension<MessageType, List<Type>> extension, |
int index); |
} |
/** |
* Generated message classes for message types that contain extension ranges |
* subclass this. |
* |
* <p>This class implements type-safe accessors for extensions. They |
* implement all the same operations that you can do with normal fields -- |
* e.g. "has", "get", and "getCount" -- but for extensions. The extensions |
* are identified using instances of the class {@link GeneratedExtension}; |
* the protocol compiler generates a static instance of this class for every |
* extension in its input. Through the magic of generics, all is made |
* type-safe. |
* |
* <p>For example, imagine you have the {@code .proto} file: |
* |
* <pre> |
* option java_class = "MyProto"; |
* |
* message Foo { |
* extensions 1000 to max; |
* } |
* |
* extend Foo { |
* optional int32 bar; |
* } |
* </pre> |
* |
* <p>Then you might write code like: |
* |
* <pre> |
* MyProto.Foo foo = getFoo(); |
* int i = foo.getExtension(MyProto.bar); |
* </pre> |
* |
* <p>See also {@link ExtendableBuilder}. |
*/ |
public abstract static class ExtendableMessage< |
MessageType extends ExtendableMessage> |
extends GeneratedMessage |
implements ExtendableMessageOrBuilder<MessageType> { |
private final FieldSet<FieldDescriptor> extensions; |
protected ExtendableMessage() { |
this.extensions = FieldSet.newFieldSet(); |
} |
protected ExtendableMessage( |
ExtendableBuilder<MessageType, ?> builder) { |
super(builder); |
this.extensions = builder.buildExtensions(); |
} |
private void verifyExtensionContainingType( |
final GeneratedExtension<MessageType, ?> extension) { |
if (extension.getDescriptor().getContainingType() != |
getDescriptorForType()) { |
// This can only happen if someone uses unchecked operations. |
throw new IllegalArgumentException( |
"Extension is for type \"" + |
extension.getDescriptor().getContainingType().getFullName() + |
"\" which does not match message type \"" + |
getDescriptorForType().getFullName() + "\"."); |
} |
} |
/** Check if a singular extension is present. */ |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public final <Type> boolean hasExtension( |
final GeneratedExtension<MessageType, Type> extension) { |
verifyExtensionContainingType(extension); |
return extensions.hasField(extension.getDescriptor()); |
} |
/** Get the number of elements in a repeated extension. */ |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public final <Type> int getExtensionCount( |
final GeneratedExtension<MessageType, List<Type>> extension) { |
verifyExtensionContainingType(extension); |
final FieldDescriptor descriptor = extension.getDescriptor(); |
return extensions.getRepeatedFieldCount(descriptor); |
} |
/** Get the value of an extension. */ |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
@SuppressWarnings("unchecked") |
public final <Type> Type getExtension( |
final GeneratedExtension<MessageType, Type> extension) { |
verifyExtensionContainingType(extension); |
FieldDescriptor descriptor = extension.getDescriptor(); |
final Object value = extensions.getField(descriptor); |
if (value == null) { |
if (descriptor.isRepeated()) { |
return (Type) Collections.emptyList(); |
} else if (descriptor.getJavaType() == |
FieldDescriptor.JavaType.MESSAGE) { |
return (Type) extension.getMessageDefaultInstance(); |
} else { |
return (Type) extension.fromReflectionType( |
descriptor.getDefaultValue()); |
} |
} else { |
return (Type) extension.fromReflectionType(value); |
} |
} |
/** Get one element of a repeated extension. */ |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
@SuppressWarnings("unchecked") |
public final <Type> Type getExtension( |
final GeneratedExtension<MessageType, List<Type>> extension, |
final int index) { |
verifyExtensionContainingType(extension); |
FieldDescriptor descriptor = extension.getDescriptor(); |
return (Type) extension.singularFromReflectionType( |
extensions.getRepeatedField(descriptor, index)); |
} |
/** Called by subclasses to check if all extensions are initialized. */ |
protected boolean extensionsAreInitialized() { |
return extensions.isInitialized(); |
} |
@Override |
public boolean isInitialized() { |
return super.isInitialized() && extensionsAreInitialized(); |
} |
/** |
* Used by subclasses to serialize extensions. Extension ranges may be |
* interleaved with field numbers, but we must write them in canonical |
* (sorted by field number) order. ExtensionWriter helps us write |
* individual ranges of extensions at once. |
*/ |
protected class ExtensionWriter { |
// Imagine how much simpler this code would be if Java iterators had |
// a way to get the next element without advancing the iterator. |
private final Iterator<Map.Entry<FieldDescriptor, Object>> iter = |
extensions.iterator(); |
private Map.Entry<FieldDescriptor, Object> next; |
private final boolean messageSetWireFormat; |
private ExtensionWriter(final boolean messageSetWireFormat) { |
if (iter.hasNext()) { |
next = iter.next(); |
} |
this.messageSetWireFormat = messageSetWireFormat; |
} |
public void writeUntil(final int end, final CodedOutputStream output) |
throws IOException { |
while (next != null && next.getKey().getNumber() < end) { |
FieldDescriptor descriptor = next.getKey(); |
if (messageSetWireFormat && descriptor.getLiteJavaType() == |
WireFormat.JavaType.MESSAGE && |
!descriptor.isRepeated()) { |
output.writeMessageSetExtension(descriptor.getNumber(), |
(Message) next.getValue()); |
} else { |
FieldSet.writeField(descriptor, next.getValue(), output); |
} |
if (iter.hasNext()) { |
next = iter.next(); |
} else { |
next = null; |
} |
} |
} |
} |
protected ExtensionWriter newExtensionWriter() { |
return new ExtensionWriter(false); |
} |
protected ExtensionWriter newMessageSetExtensionWriter() { |
return new ExtensionWriter(true); |
} |
/** Called by subclasses to compute the size of extensions. */ |
protected int extensionsSerializedSize() { |
return extensions.getSerializedSize(); |
} |
protected int extensionsSerializedSizeAsMessageSet() { |
return extensions.getMessageSetSerializedSize(); |
} |
// --------------------------------------------------------------- |
// Reflection |
protected Map<FieldDescriptor, Object> getExtensionFields() { |
return extensions.getAllFields(); |
} |
@Override |
public Map<FieldDescriptor, Object> getAllFields() { |
final Map<FieldDescriptor, Object> result = super.getAllFieldsMutable(); |
result.putAll(getExtensionFields()); |
return Collections.unmodifiableMap(result); |
} |
@Override |
public boolean hasField(final FieldDescriptor field) { |
if (field.isExtension()) { |
verifyContainingType(field); |
return extensions.hasField(field); |
} else { |
return super.hasField(field); |
} |
} |
@Override |
public Object getField(final FieldDescriptor field) { |
if (field.isExtension()) { |
verifyContainingType(field); |
final Object value = extensions.getField(field); |
if (value == null) { |
if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { |
// Lacking an ExtensionRegistry, we have no way to determine the |
// extension's real type, so we return a DynamicMessage. |
return DynamicMessage.getDefaultInstance(field.getMessageType()); |
} else { |
return field.getDefaultValue(); |
} |
} else { |
return value; |
} |
} else { |
return super.getField(field); |
} |
} |
@Override |
public int getRepeatedFieldCount(final FieldDescriptor field) { |
if (field.isExtension()) { |
verifyContainingType(field); |
return extensions.getRepeatedFieldCount(field); |
} else { |
return super.getRepeatedFieldCount(field); |
} |
} |
@Override |
public Object getRepeatedField(final FieldDescriptor field, |
final int index) { |
if (field.isExtension()) { |
verifyContainingType(field); |
return extensions.getRepeatedField(field, index); |
} else { |
return super.getRepeatedField(field, index); |
} |
} |
private void verifyContainingType(final FieldDescriptor field) { |
if (field.getContainingType() != getDescriptorForType()) { |
throw new IllegalArgumentException( |
"FieldDescriptor does not match message type."); |
} |
} |
} |
/** |
* Generated message builders for message types that contain extension ranges |
* subclass this. |
* |
* <p>This class implements type-safe accessors for extensions. They |
* implement all the same operations that you can do with normal fields -- |
* e.g. "get", "set", and "add" -- but for extensions. The extensions are |
* identified using instances of the class {@link GeneratedExtension}; the |
* protocol compiler generates a static instance of this class for every |
* extension in its input. Through the magic of generics, all is made |
* type-safe. |
* |
* <p>For example, imagine you have the {@code .proto} file: |
* |
* <pre> |
* option java_class = "MyProto"; |
* |
* message Foo { |
* extensions 1000 to max; |
* } |
* |
* extend Foo { |
* optional int32 bar; |
* } |
* </pre> |
* |
* <p>Then you might write code like: |
* |
* <pre> |
* MyProto.Foo foo = |
* MyProto.Foo.newBuilder() |
* .setExtension(MyProto.bar, 123) |
* .build(); |
* </pre> |
* |
* <p>See also {@link ExtendableMessage}. |
*/ |
@SuppressWarnings("unchecked") |
public abstract static class ExtendableBuilder< |
MessageType extends ExtendableMessage, |
BuilderType extends ExtendableBuilder> |
extends Builder<BuilderType> |
implements ExtendableMessageOrBuilder<MessageType> { |
private FieldSet<FieldDescriptor> extensions = FieldSet.emptySet(); |
protected ExtendableBuilder() {} |
protected ExtendableBuilder( |
BuilderParent parent) { |
super(parent); |
} |
@Override |
public BuilderType clear() { |
extensions = FieldSet.emptySet(); |
return super.clear(); |
} |
// This is implemented here only to work around an apparent bug in the |
// Java compiler and/or build system. See bug #1898463. The mere presence |
// of this dummy clone() implementation makes it go away. |
@Override |
public BuilderType clone() { |
throw new UnsupportedOperationException( |
"This is supposed to be overridden by subclasses."); |
} |
private void ensureExtensionsIsMutable() { |
if (extensions.isImmutable()) { |
extensions = extensions.clone(); |
} |
} |
private void verifyExtensionContainingType( |
final GeneratedExtension<MessageType, ?> extension) { |
if (extension.getDescriptor().getContainingType() != |
getDescriptorForType()) { |
// This can only happen if someone uses unchecked operations. |
throw new IllegalArgumentException( |
"Extension is for type \"" + |
extension.getDescriptor().getContainingType().getFullName() + |
"\" which does not match message type \"" + |
getDescriptorForType().getFullName() + "\"."); |
} |
} |
/** Check if a singular extension is present. */ |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public final <Type> boolean hasExtension( |
final GeneratedExtension<MessageType, Type> extension) { |
verifyExtensionContainingType(extension); |
return extensions.hasField(extension.getDescriptor()); |
} |
/** Get the number of elements in a repeated extension. */ |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public final <Type> int getExtensionCount( |
final GeneratedExtension<MessageType, List<Type>> extension) { |
verifyExtensionContainingType(extension); |
final FieldDescriptor descriptor = extension.getDescriptor(); |
return extensions.getRepeatedFieldCount(descriptor); |
} |
/** Get the value of an extension. */ |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public final <Type> Type getExtension( |
final GeneratedExtension<MessageType, Type> extension) { |
verifyExtensionContainingType(extension); |
FieldDescriptor descriptor = extension.getDescriptor(); |
final Object value = extensions.getField(descriptor); |
if (value == null) { |
if (descriptor.isRepeated()) { |
return (Type) Collections.emptyList(); |
} else if (descriptor.getJavaType() == |
FieldDescriptor.JavaType.MESSAGE) { |
return (Type) extension.getMessageDefaultInstance(); |
} else { |
return (Type) extension.fromReflectionType( |
descriptor.getDefaultValue()); |
} |
} else { |
return (Type) extension.fromReflectionType(value); |
} |
} |
/** Get one element of a repeated extension. */ |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public final <Type> Type getExtension( |
final GeneratedExtension<MessageType, List<Type>> extension, |
final int index) { |
verifyExtensionContainingType(extension); |
FieldDescriptor descriptor = extension.getDescriptor(); |
return (Type) extension.singularFromReflectionType( |
extensions.getRepeatedField(descriptor, index)); |
} |
/** Set the value of an extension. */ |
public final <Type> BuilderType setExtension( |
final GeneratedExtension<MessageType, Type> extension, |
final Type value) { |
verifyExtensionContainingType(extension); |
ensureExtensionsIsMutable(); |
final FieldDescriptor descriptor = extension.getDescriptor(); |
extensions.setField(descriptor, extension.toReflectionType(value)); |
onChanged(); |
return (BuilderType) this; |
} |
/** Set the value of one element of a repeated extension. */ |
public final <Type> BuilderType setExtension( |
final GeneratedExtension<MessageType, List<Type>> extension, |
final int index, final Type value) { |
verifyExtensionContainingType(extension); |
ensureExtensionsIsMutable(); |
final FieldDescriptor descriptor = extension.getDescriptor(); |
extensions.setRepeatedField( |
descriptor, index, |
extension.singularToReflectionType(value)); |
onChanged(); |
return (BuilderType) this; |
} |
/** Append a value to a repeated extension. */ |
public final <Type> BuilderType addExtension( |
final GeneratedExtension<MessageType, List<Type>> extension, |
final Type value) { |
verifyExtensionContainingType(extension); |
ensureExtensionsIsMutable(); |
final FieldDescriptor descriptor = extension.getDescriptor(); |
extensions.addRepeatedField( |
descriptor, extension.singularToReflectionType(value)); |
onChanged(); |
return (BuilderType) this; |
} |
/** Clear an extension. */ |
public final <Type> BuilderType clearExtension( |
final GeneratedExtension<MessageType, ?> extension) { |
verifyExtensionContainingType(extension); |
ensureExtensionsIsMutable(); |
extensions.clearField(extension.getDescriptor()); |
onChanged(); |
return (BuilderType) this; |
} |
/** Called by subclasses to check if all extensions are initialized. */ |
protected boolean extensionsAreInitialized() { |
return extensions.isInitialized(); |
} |
/** |
* Called by the build code path to create a copy of the extensions for |
* building the message. |
*/ |
private FieldSet<FieldDescriptor> buildExtensions() { |
extensions.makeImmutable(); |
return extensions; |
} |
@Override |
public boolean isInitialized() { |
return super.isInitialized() && extensionsAreInitialized(); |
} |
/** |
* Called by subclasses to parse an unknown field or an extension. |
* @return {@code true} unless the tag is an end-group tag. |
*/ |
@Override |
protected boolean parseUnknownField( |
final CodedInputStream input, |
final UnknownFieldSet.Builder unknownFields, |
final ExtensionRegistryLite extensionRegistry, |
final int tag) throws IOException { |
return AbstractMessage.Builder.mergeFieldFrom( |
input, unknownFields, extensionRegistry, this, tag); |
} |
// --------------------------------------------------------------- |
// Reflection |
@Override |
public Map<FieldDescriptor, Object> getAllFields() { |
final Map<FieldDescriptor, Object> result = super.getAllFieldsMutable(); |
result.putAll(extensions.getAllFields()); |
return Collections.unmodifiableMap(result); |
} |
@Override |
public Object getField(final FieldDescriptor field) { |
if (field.isExtension()) { |
verifyContainingType(field); |
final Object value = extensions.getField(field); |
if (value == null) { |
if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { |
// Lacking an ExtensionRegistry, we have no way to determine the |
// extension's real type, so we return a DynamicMessage. |
return DynamicMessage.getDefaultInstance(field.getMessageType()); |
} else { |
return field.getDefaultValue(); |
} |
} else { |
return value; |
} |
} else { |
return super.getField(field); |
} |
} |
@Override |
public int getRepeatedFieldCount(final FieldDescriptor field) { |
if (field.isExtension()) { |
verifyContainingType(field); |
return extensions.getRepeatedFieldCount(field); |
} else { |
return super.getRepeatedFieldCount(field); |
} |
} |
@Override |
public Object getRepeatedField(final FieldDescriptor field, |
final int index) { |
if (field.isExtension()) { |
verifyContainingType(field); |
return extensions.getRepeatedField(field, index); |
} else { |
return super.getRepeatedField(field, index); |
} |
} |
@Override |
public boolean hasField(final FieldDescriptor field) { |
if (field.isExtension()) { |
verifyContainingType(field); |
return extensions.hasField(field); |
} else { |
return super.hasField(field); |
} |
} |
@Override |
public BuilderType setField(final FieldDescriptor field, |
final Object value) { |
if (field.isExtension()) { |
verifyContainingType(field); |
ensureExtensionsIsMutable(); |
extensions.setField(field, value); |
onChanged(); |
return (BuilderType) this; |
} else { |
return super.setField(field, value); |
} |
} |
@Override |
public BuilderType clearField(final FieldDescriptor field) { |
if (field.isExtension()) { |
verifyContainingType(field); |
ensureExtensionsIsMutable(); |
extensions.clearField(field); |
onChanged(); |
return (BuilderType) this; |
} else { |
return super.clearField(field); |
} |
} |
@Override |
public BuilderType setRepeatedField(final FieldDescriptor field, |
final int index, final Object value) { |
if (field.isExtension()) { |
verifyContainingType(field); |
ensureExtensionsIsMutable(); |
extensions.setRepeatedField(field, index, value); |
onChanged(); |
return (BuilderType) this; |
} else { |
return super.setRepeatedField(field, index, value); |
} |
} |
@Override |
public BuilderType addRepeatedField(final FieldDescriptor field, |
final Object value) { |
if (field.isExtension()) { |
verifyContainingType(field); |
ensureExtensionsIsMutable(); |
extensions.addRepeatedField(field, value); |
onChanged(); |
return (BuilderType) this; |
} else { |
return super.addRepeatedField(field, value); |
} |
} |
protected final void mergeExtensionFields(final ExtendableMessage other) { |
ensureExtensionsIsMutable(); |
extensions.mergeFrom(other.extensions); |
onChanged(); |
} |
private void verifyContainingType(final FieldDescriptor field) { |
if (field.getContainingType() != getDescriptorForType()) { |
throw new IllegalArgumentException( |
"FieldDescriptor does not match message type."); |
} |
} |
} |
// ----------------------------------------------------------------- |
/** |
* Gets the descriptor for an extension. The implementation depends on whether |
* the extension is scoped in the top level of a file or scoped in a Message. |
*/ |
private static interface ExtensionDescriptorRetriever { |
FieldDescriptor getDescriptor(); |
} |
/** For use by generated code only. */ |
public static <ContainingType extends Message, Type> |
GeneratedExtension<ContainingType, Type> |
newMessageScopedGeneratedExtension(final Message scope, |
final int descriptorIndex, |
final Class singularType, |
final Message defaultInstance) { |
// For extensions scoped within a Message, we use the Message to resolve |
// the outer class's descriptor, from which the extension descriptor is |
// obtained. |
return new GeneratedExtension<ContainingType, Type>( |
new ExtensionDescriptorRetriever() { |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public FieldDescriptor getDescriptor() { |
return scope.getDescriptorForType().getExtensions() |
.get(descriptorIndex); |
} |
}, |
singularType, |
defaultInstance); |
} |
/** For use by generated code only. */ |
public static <ContainingType extends Message, Type> |
GeneratedExtension<ContainingType, Type> |
newFileScopedGeneratedExtension(final Class singularType, |
final Message defaultInstance) { |
// For extensions scoped within a file, we rely on the outer class's |
// static initializer to call internalInit() on the extension when the |
// descriptor is available. |
return new GeneratedExtension<ContainingType, Type>( |
null, // ExtensionDescriptorRetriever is initialized in internalInit(); |
singularType, |
defaultInstance); |
} |
/** |
* Type used to represent generated extensions. The protocol compiler |
* generates a static singleton instance of this class for each extension. |
* |
* <p>For example, imagine you have the {@code .proto} file: |
* |
* <pre> |
* option java_class = "MyProto"; |
* |
* message Foo { |
* extensions 1000 to max; |
* } |
* |
* extend Foo { |
* optional int32 bar; |
* } |
* </pre> |
* |
* <p>Then, {@code MyProto.Foo.bar} has type |
* {@code GeneratedExtension<MyProto.Foo, Integer>}. |
* |
* <p>In general, users should ignore the details of this type, and simply use |
* these static singletons as parameters to the extension accessors defined |
* in {@link ExtendableMessage} and {@link ExtendableBuilder}. |
*/ |
public static final class GeneratedExtension< |
ContainingType extends Message, Type> { |
// TODO(kenton): Find ways to avoid using Java reflection within this |
// class. Also try to avoid suppressing unchecked warnings. |
// We can't always initialize the descriptor of a GeneratedExtension when |
// we first construct it due to initialization order difficulties (namely, |
// the descriptor may not have been constructed yet, since it is often |
// constructed by the initializer of a separate module). |
// |
// In the case of nested extensions, we initialize the |
// ExtensionDescriptorRetriever with an instance that uses the scoping |
// Message's default instance to retrieve the extension's descriptor. |
// |
// In the case of non-nested extensions, we initialize the |
// ExtensionDescriptorRetriever to null and rely on the outer class's static |
// initializer to call internalInit() after the descriptor has been parsed. |
private GeneratedExtension(ExtensionDescriptorRetriever descriptorRetriever, |
Class singularType, |
Message messageDefaultInstance) { |
if (Message.class.isAssignableFrom(singularType) && |
!singularType.isInstance(messageDefaultInstance)) { |
throw new IllegalArgumentException( |
"Bad messageDefaultInstance for " + singularType.getName()); |
} |
this.descriptorRetriever = descriptorRetriever; |
this.singularType = singularType; |
this.messageDefaultInstance = messageDefaultInstance; |
if (ProtocolMessageEnum.class.isAssignableFrom(singularType)) { |
this.enumValueOf = getMethodOrDie(singularType, "valueOf", |
EnumValueDescriptor.class); |
this.enumGetValueDescriptor = |
getMethodOrDie(singularType, "getValueDescriptor"); |
} else { |
this.enumValueOf = null; |
this.enumGetValueDescriptor = null; |
} |
} |
/** For use by generated code only. */ |
public void internalInit(final FieldDescriptor descriptor) { |
if (descriptorRetriever != null) { |
throw new IllegalStateException("Already initialized."); |
} |
descriptorRetriever = new ExtensionDescriptorRetriever() { |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public FieldDescriptor getDescriptor() { |
return descriptor; |
} |
}; |
} |
private ExtensionDescriptorRetriever descriptorRetriever; |
private final Class singularType; |
private final Message messageDefaultInstance; |
private final Method enumValueOf; |
private final Method enumGetValueDescriptor; |
public FieldDescriptor getDescriptor() { |
if (descriptorRetriever == null) { |
throw new IllegalStateException( |
"getDescriptor() called before internalInit()"); |
} |
return descriptorRetriever.getDescriptor(); |
} |
/** |
* If the extension is an embedded message or group, returns the default |
* instance of the message. |
*/ |
public Message getMessageDefaultInstance() { |
return messageDefaultInstance; |
} |
/** |
* Convert from the type used by the reflection accessors to the type used |
* by native accessors. E.g., for enums, the reflection accessors use |
* EnumValueDescriptors but the native accessors use the generated enum |
* type. |
*/ |
@SuppressWarnings("unchecked") |
private Object fromReflectionType(final Object value) { |
FieldDescriptor descriptor = getDescriptor(); |
if (descriptor.isRepeated()) { |
if (descriptor.getJavaType() == FieldDescriptor.JavaType.MESSAGE || |
descriptor.getJavaType() == FieldDescriptor.JavaType.ENUM) { |
// Must convert the whole list. |
final List result = new ArrayList(); |
for (final Object element : (List) value) { |
result.add(singularFromReflectionType(element)); |
} |
return result; |
} else { |
return value; |
} |
} else { |
return singularFromReflectionType(value); |
} |
} |
/** |
* Like {@link #fromReflectionType(Object)}, but if the type is a repeated |
* type, this converts a single element. |
*/ |
private Object singularFromReflectionType(final Object value) { |
FieldDescriptor descriptor = getDescriptor(); |
switch (descriptor.getJavaType()) { |
case MESSAGE: |
if (singularType.isInstance(value)) { |
return value; |
} else { |
// It seems the copy of the embedded message stored inside the |
// extended message is not of the exact type the user was |
// expecting. This can happen if a user defines a |
// GeneratedExtension manually and gives it a different type. |
// This should not happen in normal use. But, to be nice, we'll |
// copy the message to whatever type the caller was expecting. |
return messageDefaultInstance.newBuilderForType() |
.mergeFrom((Message) value).build(); |
} |
case ENUM: |
return invokeOrDie(enumValueOf, null, (EnumValueDescriptor) value); |
default: |
return value; |
} |
} |
/** |
* Convert from the type used by the native accessors to the type used |
* by reflection accessors. E.g., for enums, the reflection accessors use |
* EnumValueDescriptors but the native accessors use the generated enum |
* type. |
*/ |
@SuppressWarnings("unchecked") |
private Object toReflectionType(final Object value) { |
FieldDescriptor descriptor = getDescriptor(); |
if (descriptor.isRepeated()) { |
if (descriptor.getJavaType() == FieldDescriptor.JavaType.ENUM) { |
// Must convert the whole list. |
final List result = new ArrayList(); |
for (final Object element : (List) value) { |
result.add(singularToReflectionType(element)); |
} |
return result; |
} else { |
return value; |
} |
} else { |
return singularToReflectionType(value); |
} |
} |
/** |
* Like {@link #toReflectionType(Object)}, but if the type is a repeated |
* type, this converts a single element. |
*/ |
private Object singularToReflectionType(final Object value) { |
FieldDescriptor descriptor = getDescriptor(); |
switch (descriptor.getJavaType()) { |
case ENUM: |
return invokeOrDie(enumGetValueDescriptor, value); |
default: |
return value; |
} |
} |
} |
// ================================================================= |
/** Calls Class.getMethod and throws a RuntimeException if it fails. */ |
@SuppressWarnings("unchecked") |
private static Method getMethodOrDie( |
final Class clazz, final String name, final Class... params) { |
try { |
return clazz.getMethod(name, params); |
} catch (NoSuchMethodException e) { |
throw new RuntimeException( |
"Generated message class \"" + clazz.getName() + |
"\" missing method \"" + name + "\".", e); |
} |
} |
/** Calls invoke and throws a RuntimeException if it fails. */ |
private static Object invokeOrDie( |
final Method method, final Object object, final Object... params) { |
try { |
return method.invoke(object, params); |
} catch (IllegalAccessException e) { |
throw new RuntimeException( |
"Couldn't use Java reflection to implement protocol message " + |
"reflection.", e); |
} catch (InvocationTargetException e) { |
final Throwable cause = e.getCause(); |
if (cause instanceof RuntimeException) { |
throw (RuntimeException) cause; |
} else if (cause instanceof Error) { |
throw (Error) cause; |
} else { |
throw new RuntimeException( |
"Unexpected exception thrown by generated accessor method.", cause); |
} |
} |
} |
/** |
* Users should ignore this class. This class provides the implementation |
* with access to the fields of a message object using Java reflection. |
*/ |
public static final class FieldAccessorTable { |
/** |
* Construct a FieldAccessorTable for a particular message class. Only |
* one FieldAccessorTable should ever be constructed per class. |
* |
* @param descriptor The type's descriptor. |
* @param camelCaseNames The camelcase names of all fields in the message. |
* These are used to derive the accessor method names. |
* @param messageClass The message type. |
* @param builderClass The builder type. |
*/ |
public FieldAccessorTable( |
final Descriptor descriptor, |
final String[] camelCaseNames, |
final Class<? extends GeneratedMessage> messageClass, |
final Class<? extends Builder> builderClass) { |
this.descriptor = descriptor; |
fields = new FieldAccessor[descriptor.getFields().size()]; |
for (int i = 0; i < fields.length; i++) { |
final FieldDescriptor field = descriptor.getFields().get(i); |
if (field.isRepeated()) { |
if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { |
fields[i] = new RepeatedMessageFieldAccessor( |
field, camelCaseNames[i], messageClass, builderClass); |
} else if (field.getJavaType() == FieldDescriptor.JavaType.ENUM) { |
fields[i] = new RepeatedEnumFieldAccessor( |
field, camelCaseNames[i], messageClass, builderClass); |
} else { |
fields[i] = new RepeatedFieldAccessor( |
field, camelCaseNames[i], messageClass, builderClass); |
} |
} else { |
if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { |
fields[i] = new SingularMessageFieldAccessor( |
field, camelCaseNames[i], messageClass, builderClass); |
} else if (field.getJavaType() == FieldDescriptor.JavaType.ENUM) { |
fields[i] = new SingularEnumFieldAccessor( |
field, camelCaseNames[i], messageClass, builderClass); |
} else { |
fields[i] = new SingularFieldAccessor( |
field, camelCaseNames[i], messageClass, builderClass); |
} |
} |
} |
} |
private final Descriptor descriptor; |
private final FieldAccessor[] fields; |
/** Get the FieldAccessor for a particular field. */ |
private FieldAccessor getField(final FieldDescriptor field) { |
if (field.getContainingType() != descriptor) { |
throw new IllegalArgumentException( |
"FieldDescriptor does not match message type."); |
} else if (field.isExtension()) { |
// If this type had extensions, it would subclass ExtendableMessage, |
// which overrides the reflection interface to handle extensions. |
throw new IllegalArgumentException( |
"This type does not have extensions."); |
} |
return fields[field.getIndex()]; |
} |
/** |
* Abstract interface that provides access to a single field. This is |
* implemented differently depending on the field type and cardinality. |
*/ |
private interface FieldAccessor { |
Object get(GeneratedMessage message); |
Object get(GeneratedMessage.Builder builder); |
void set(Builder builder, Object value); |
Object getRepeated(GeneratedMessage message, int index); |
Object getRepeated(GeneratedMessage.Builder builder, int index); |
void setRepeated(Builder builder, |
int index, Object value); |
void addRepeated(Builder builder, Object value); |
boolean has(GeneratedMessage message); |
boolean has(GeneratedMessage.Builder builder); |
int getRepeatedCount(GeneratedMessage message); |
int getRepeatedCount(GeneratedMessage.Builder builder); |
void clear(Builder builder); |
Message.Builder newBuilder(); |
} |
// --------------------------------------------------------------- |
private static class SingularFieldAccessor implements FieldAccessor { |
SingularFieldAccessor( |
final FieldDescriptor descriptor, final String camelCaseName, |
final Class<? extends GeneratedMessage> messageClass, |
final Class<? extends Builder> builderClass) { |
getMethod = getMethodOrDie(messageClass, "get" + camelCaseName); |
getMethodBuilder = getMethodOrDie(builderClass, "get" + camelCaseName); |
type = getMethod.getReturnType(); |
setMethod = getMethodOrDie(builderClass, "set" + camelCaseName, type); |
hasMethod = |
getMethodOrDie(messageClass, "has" + camelCaseName); |
hasMethodBuilder = |
getMethodOrDie(builderClass, "has" + camelCaseName); |
clearMethod = getMethodOrDie(builderClass, "clear" + camelCaseName); |
} |
// Note: We use Java reflection to call public methods rather than |
// access private fields directly as this avoids runtime security |
// checks. |
protected final Class<?> type; |
protected final Method getMethod; |
protected final Method getMethodBuilder; |
protected final Method setMethod; |
protected final Method hasMethod; |
protected final Method hasMethodBuilder; |
protected final Method clearMethod; |
public Object get(final GeneratedMessage message) { |
return invokeOrDie(getMethod, message); |
} |
public Object get(GeneratedMessage.Builder builder) { |
return invokeOrDie(getMethodBuilder, builder); |
} |
public void set(final Builder builder, final Object value) { |
invokeOrDie(setMethod, builder, value); |
} |
public Object getRepeated(final GeneratedMessage message, |
final int index) { |
throw new UnsupportedOperationException( |
"getRepeatedField() called on a singular field."); |
} |
public Object getRepeated(GeneratedMessage.Builder builder, int index) { |
throw new UnsupportedOperationException( |
"getRepeatedField() called on a singular field."); |
} |
public void setRepeated(final Builder builder, |
final int index, final Object value) { |
throw new UnsupportedOperationException( |
"setRepeatedField() called on a singular field."); |
} |
public void addRepeated(final Builder builder, final Object value) { |
throw new UnsupportedOperationException( |
"addRepeatedField() called on a singular field."); |
} |
public boolean has(final GeneratedMessage message) { |
return (Boolean) invokeOrDie(hasMethod, message); |
} |
public boolean has(GeneratedMessage.Builder builder) { |
return (Boolean) invokeOrDie(hasMethodBuilder, builder); |
} |
public int getRepeatedCount(final GeneratedMessage message) { |
throw new UnsupportedOperationException( |
"getRepeatedFieldSize() called on a singular field."); |
} |
public int getRepeatedCount(GeneratedMessage.Builder builder) { |
throw new UnsupportedOperationException( |
"getRepeatedFieldSize() called on a singular field."); |
} |
public void clear(final Builder builder) { |
invokeOrDie(clearMethod, builder); |
} |
public Message.Builder newBuilder() { |
throw new UnsupportedOperationException( |
"newBuilderForField() called on a non-Message type."); |
} |
} |
private static class RepeatedFieldAccessor implements FieldAccessor { |
protected final Class type; |
protected final Method getMethod; |
protected final Method getMethodBuilder; |
protected final Method getRepeatedMethod; |
protected final Method getRepeatedMethodBuilder; |
protected final Method setRepeatedMethod; |
protected final Method addRepeatedMethod; |
protected final Method getCountMethod; |
protected final Method getCountMethodBuilder; |
protected final Method clearMethod; |
RepeatedFieldAccessor( |
final FieldDescriptor descriptor, final String camelCaseName, |
final Class<? extends GeneratedMessage> messageClass, |
final Class<? extends Builder> builderClass) { |
getMethod = getMethodOrDie(messageClass, |
"get" + camelCaseName + "List"); |
getMethodBuilder = getMethodOrDie(builderClass, |
"get" + camelCaseName + "List"); |
getRepeatedMethod = |
getMethodOrDie(messageClass, "get" + camelCaseName, Integer.TYPE); |
getRepeatedMethodBuilder = |
getMethodOrDie(builderClass, "get" + camelCaseName, Integer.TYPE); |
type = getRepeatedMethod.getReturnType(); |
setRepeatedMethod = |
getMethodOrDie(builderClass, "set" + camelCaseName, |
Integer.TYPE, type); |
addRepeatedMethod = |
getMethodOrDie(builderClass, "add" + camelCaseName, type); |
getCountMethod = |
getMethodOrDie(messageClass, "get" + camelCaseName + "Count"); |
getCountMethodBuilder = |
getMethodOrDie(builderClass, "get" + camelCaseName + "Count"); |
clearMethod = getMethodOrDie(builderClass, "clear" + camelCaseName); |
} |
public Object get(final GeneratedMessage message) { |
return invokeOrDie(getMethod, message); |
} |
public Object get(GeneratedMessage.Builder builder) { |
return invokeOrDie(getMethodBuilder, builder); |
} |
public void set(final Builder builder, final Object value) { |
// Add all the elements individually. This serves two purposes: |
// 1) Verifies that each element has the correct type. |
// 2) Insures that the caller cannot modify the list later on and |
// have the modifications be reflected in the message. |
clear(builder); |
for (final Object element : (List<?>) value) { |
addRepeated(builder, element); |
} |
} |
public Object getRepeated(final GeneratedMessage message, |
final int index) { |
return invokeOrDie(getRepeatedMethod, message, index); |
} |
public Object getRepeated(GeneratedMessage.Builder builder, int index) { |
return invokeOrDie(getRepeatedMethodBuilder, builder, index); |
} |
public void setRepeated(final Builder builder, |
final int index, final Object value) { |
invokeOrDie(setRepeatedMethod, builder, index, value); |
} |
public void addRepeated(final Builder builder, final Object value) { |
invokeOrDie(addRepeatedMethod, builder, value); |
} |
public boolean has(final GeneratedMessage message) { |
throw new UnsupportedOperationException( |
"hasField() called on a singular field."); |
} |
public boolean has(GeneratedMessage.Builder builder) { |
throw new UnsupportedOperationException( |
"hasField() called on a singular field."); |
} |
public int getRepeatedCount(final GeneratedMessage message) { |
return (Integer) invokeOrDie(getCountMethod, message); |
} |
public int getRepeatedCount(GeneratedMessage.Builder builder) { |
return (Integer) invokeOrDie(getCountMethodBuilder, builder); |
} |
public void clear(final Builder builder) { |
invokeOrDie(clearMethod, builder); |
} |
public Message.Builder newBuilder() { |
throw new UnsupportedOperationException( |
"newBuilderForField() called on a non-Message type."); |
} |
} |
// --------------------------------------------------------------- |
private static final class SingularEnumFieldAccessor |
extends SingularFieldAccessor { |
SingularEnumFieldAccessor( |
final FieldDescriptor descriptor, final String camelCaseName, |
final Class<? extends GeneratedMessage> messageClass, |
final Class<? extends Builder> builderClass) { |
super(descriptor, camelCaseName, messageClass, builderClass); |
valueOfMethod = getMethodOrDie(type, "valueOf", |
EnumValueDescriptor.class); |
getValueDescriptorMethod = |
getMethodOrDie(type, "getValueDescriptor"); |
} |
private Method valueOfMethod; |
private Method getValueDescriptorMethod; |
@Override |
public Object get(final GeneratedMessage message) { |
return invokeOrDie(getValueDescriptorMethod, super.get(message)); |
} |
@Override |
public Object get(final GeneratedMessage.Builder builder) { |
return invokeOrDie(getValueDescriptorMethod, super.get(builder)); |
} |
@Override |
public void set(final Builder builder, final Object value) { |
super.set(builder, invokeOrDie(valueOfMethod, null, value)); |
} |
} |
private static final class RepeatedEnumFieldAccessor |
extends RepeatedFieldAccessor { |
RepeatedEnumFieldAccessor( |
final FieldDescriptor descriptor, final String camelCaseName, |
final Class<? extends GeneratedMessage> messageClass, |
final Class<? extends Builder> builderClass) { |
super(descriptor, camelCaseName, messageClass, builderClass); |
valueOfMethod = getMethodOrDie(type, "valueOf", |
EnumValueDescriptor.class); |
getValueDescriptorMethod = |
getMethodOrDie(type, "getValueDescriptor"); |
} |
private final Method valueOfMethod; |
private final Method getValueDescriptorMethod; |
@Override |
@SuppressWarnings("unchecked") |
public Object get(final GeneratedMessage message) { |
final List newList = new ArrayList(); |
for (final Object element : (List) super.get(message)) { |
newList.add(invokeOrDie(getValueDescriptorMethod, element)); |
} |
return Collections.unmodifiableList(newList); |
} |
@Override |
@SuppressWarnings("unchecked") |
public Object get(final GeneratedMessage.Builder builder) { |
final List newList = new ArrayList(); |
for (final Object element : (List) super.get(builder)) { |
newList.add(invokeOrDie(getValueDescriptorMethod, element)); |
} |
return Collections.unmodifiableList(newList); |
} |
@Override |
public Object getRepeated(final GeneratedMessage message, |
final int index) { |
return invokeOrDie(getValueDescriptorMethod, |
super.getRepeated(message, index)); |
} |
@Override |
public Object getRepeated(final GeneratedMessage.Builder builder, |
final int index) { |
return invokeOrDie(getValueDescriptorMethod, |
super.getRepeated(builder, index)); |
} |
@Override |
public void setRepeated(final Builder builder, |
final int index, final Object value) { |
super.setRepeated(builder, index, invokeOrDie(valueOfMethod, null, |
value)); |
} |
@Override |
public void addRepeated(final Builder builder, final Object value) { |
super.addRepeated(builder, invokeOrDie(valueOfMethod, null, value)); |
} |
} |
// --------------------------------------------------------------- |
private static final class SingularMessageFieldAccessor |
extends SingularFieldAccessor { |
SingularMessageFieldAccessor( |
final FieldDescriptor descriptor, final String camelCaseName, |
final Class<? extends GeneratedMessage> messageClass, |
final Class<? extends Builder> builderClass) { |
super(descriptor, camelCaseName, messageClass, builderClass); |
newBuilderMethod = getMethodOrDie(type, "newBuilder"); |
} |
private final Method newBuilderMethod; |
private Object coerceType(final Object value) { |
if (type.isInstance(value)) { |
return value; |
} else { |
// The value is not the exact right message type. However, if it |
// is an alternative implementation of the same type -- e.g. a |
// DynamicMessage -- we should accept it. In this case we can make |
// a copy of the message. |
return ((Message.Builder) invokeOrDie(newBuilderMethod, null)) |
.mergeFrom((Message) value).build(); |
} |
} |
@Override |
public void set(final Builder builder, final Object value) { |
super.set(builder, coerceType(value)); |
} |
@Override |
public Message.Builder newBuilder() { |
return (Message.Builder) invokeOrDie(newBuilderMethod, null); |
} |
} |
private static final class RepeatedMessageFieldAccessor |
extends RepeatedFieldAccessor { |
RepeatedMessageFieldAccessor( |
final FieldDescriptor descriptor, final String camelCaseName, |
final Class<? extends GeneratedMessage> messageClass, |
final Class<? extends Builder> builderClass) { |
super(descriptor, camelCaseName, messageClass, builderClass); |
newBuilderMethod = getMethodOrDie(type, "newBuilder"); |
} |
private final Method newBuilderMethod; |
private Object coerceType(final Object value) { |
if (type.isInstance(value)) { |
return value; |
} else { |
// The value is not the exact right message type. However, if it |
// is an alternative implementation of the same type -- e.g. a |
// DynamicMessage -- we should accept it. In this case we can make |
// a copy of the message. |
return ((Message.Builder) invokeOrDie(newBuilderMethod, null)) |
.mergeFrom((Message) value).build(); |
} |
} |
@Override |
public void setRepeated(final Builder builder, |
final int index, final Object value) { |
super.setRepeated(builder, index, coerceType(value)); |
} |
@Override |
public void addRepeated(final Builder builder, final Object value) { |
super.addRepeated(builder, coerceType(value)); |
} |
@Override |
public Message.Builder newBuilder() { |
return (Message.Builder) invokeOrDie(newBuilderMethod, null); |
} |
} |
} |
/** |
* Replaces this object in the output stream with a serialized form. |
* Part of Java's serialization magic. Generated sub-classes must override |
* this method by calling <code>return super.writeReplace();</code> |
* @return a SerializedForm of this message |
*/ |
protected Object writeReplace() throws ObjectStreamException { |
return new GeneratedMessageLite.SerializedForm(this); |
} |
} |
/Android Development/IOIODebugger/src/com/google/protobuf/GeneratedMessageLite.java |
---|
0,0 → 1,731 |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
// |
// * Redistributions of source code must retain the above copyright |
// notice, this list of conditions and the following disclaimer. |
// * Redistributions in binary form must reproduce the above |
// copyright notice, this list of conditions and the following disclaimer |
// in the documentation and/or other materials provided with the |
// distribution. |
// * Neither the name of Google Inc. nor the names of its |
// contributors may be used to endorse or promote products derived from |
// this software without specific prior written permission. |
// |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
package com.google.protobuf; |
import java.io.IOException; |
import java.io.ObjectStreamException; |
import java.io.Serializable; |
import java.lang.reflect.InvocationTargetException; |
import java.lang.reflect.Method; |
import java.util.Collections; |
import java.util.Iterator; |
import java.util.List; |
import java.util.Map; |
/** |
* Lite version of {@link GeneratedMessage}. |
* |
* @author kenton@google.com Kenton Varda |
*/ |
public abstract class GeneratedMessageLite extends AbstractMessageLite |
implements Serializable { |
private static final long serialVersionUID = 1L; |
protected GeneratedMessageLite() { |
} |
protected GeneratedMessageLite(Builder builder) { |
} |
@SuppressWarnings("unchecked") |
public abstract static class Builder<MessageType extends GeneratedMessageLite, |
BuilderType extends Builder> |
extends AbstractMessageLite.Builder<BuilderType> { |
protected Builder() {} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public BuilderType clear() { |
return (BuilderType) this; |
} |
// This is implemented here only to work around an apparent bug in the |
// Java compiler and/or build system. See bug #1898463. The mere presence |
// of this dummy clone() implementation makes it go away. |
@Override |
public BuilderType clone() { |
throw new UnsupportedOperationException( |
"This is supposed to be overridden by subclasses."); |
} |
/** All subclasses implement this. */ |
public abstract BuilderType mergeFrom(MessageType message); |
// Defined here for return type covariance. |
public abstract MessageType getDefaultInstanceForType(); |
/** |
* Called by subclasses to parse an unknown field. |
* @return {@code true} unless the tag is an end-group tag. |
*/ |
protected boolean parseUnknownField( |
final CodedInputStream input, |
final ExtensionRegistryLite extensionRegistry, |
final int tag) throws IOException { |
return input.skipField(tag); |
} |
} |
// ================================================================= |
// Extensions-related stuff |
/** |
* Lite equivalent of {@link com.google.protobuf.GeneratedMessage.ExtendableMessageOrBuilder}. |
*/ |
public interface ExtendableMessageOrBuilder< |
MessageType extends ExtendableMessage> extends MessageLiteOrBuilder { |
/** Check if a singular extension is present. */ |
<Type> boolean hasExtension( |
GeneratedExtension<MessageType, Type> extension); |
/** Get the number of elements in a repeated extension. */ |
<Type> int getExtensionCount( |
GeneratedExtension<MessageType, List<Type>> extension); |
/** Get the value of an extension. */ |
<Type> Type getExtension(GeneratedExtension<MessageType, Type> extension); |
/** Get one element of a repeated extension. */ |
<Type> Type getExtension( |
GeneratedExtension<MessageType, List<Type>> extension, |
int index); |
} |
/** |
* Lite equivalent of {@link GeneratedMessage.ExtendableMessage}. |
*/ |
public abstract static class ExtendableMessage< |
MessageType extends ExtendableMessage<MessageType>> |
extends GeneratedMessageLite |
implements ExtendableMessageOrBuilder<MessageType> { |
private final FieldSet<ExtensionDescriptor> extensions; |
protected ExtendableMessage() { |
this.extensions = FieldSet.newFieldSet(); |
} |
protected ExtendableMessage(ExtendableBuilder<MessageType, ?> builder) { |
this.extensions = builder.buildExtensions(); |
} |
private void verifyExtensionContainingType( |
final GeneratedExtension<MessageType, ?> extension) { |
if (extension.getContainingTypeDefaultInstance() != |
getDefaultInstanceForType()) { |
// This can only happen if someone uses unchecked operations. |
throw new IllegalArgumentException( |
"This extension is for a different message type. Please make " + |
"sure that you are not suppressing any generics type warnings."); |
} |
} |
/** Check if a singular extension is present. */ |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public final <Type> boolean hasExtension( |
final GeneratedExtension<MessageType, Type> extension) { |
verifyExtensionContainingType(extension); |
return extensions.hasField(extension.descriptor); |
} |
/** Get the number of elements in a repeated extension. */ |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public final <Type> int getExtensionCount( |
final GeneratedExtension<MessageType, List<Type>> extension) { |
verifyExtensionContainingType(extension); |
return extensions.getRepeatedFieldCount(extension.descriptor); |
} |
/** Get the value of an extension. */ |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
@SuppressWarnings("unchecked") |
public final <Type> Type getExtension( |
final GeneratedExtension<MessageType, Type> extension) { |
verifyExtensionContainingType(extension); |
final Object value = extensions.getField(extension.descriptor); |
if (value == null) { |
return extension.defaultValue; |
} else { |
return (Type) value; |
} |
} |
/** Get one element of a repeated extension. */ |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
@SuppressWarnings("unchecked") |
public final <Type> Type getExtension( |
final GeneratedExtension<MessageType, List<Type>> extension, |
final int index) { |
verifyExtensionContainingType(extension); |
return (Type) extensions.getRepeatedField(extension.descriptor, index); |
} |
/** Called by subclasses to check if all extensions are initialized. */ |
protected boolean extensionsAreInitialized() { |
return extensions.isInitialized(); |
} |
/** |
* Used by subclasses to serialize extensions. Extension ranges may be |
* interleaved with field numbers, but we must write them in canonical |
* (sorted by field number) order. ExtensionWriter helps us write |
* individual ranges of extensions at once. |
*/ |
protected class ExtensionWriter { |
// Imagine how much simpler this code would be if Java iterators had |
// a way to get the next element without advancing the iterator. |
private final Iterator<Map.Entry<ExtensionDescriptor, Object>> iter = |
extensions.iterator(); |
private Map.Entry<ExtensionDescriptor, Object> next; |
private final boolean messageSetWireFormat; |
private ExtensionWriter(boolean messageSetWireFormat) { |
if (iter.hasNext()) { |
next = iter.next(); |
} |
this.messageSetWireFormat = messageSetWireFormat; |
} |
public void writeUntil(final int end, final CodedOutputStream output) |
throws IOException { |
while (next != null && next.getKey().getNumber() < end) { |
ExtensionDescriptor extension = next.getKey(); |
if (messageSetWireFormat && extension.getLiteJavaType() == |
WireFormat.JavaType.MESSAGE && |
!extension.isRepeated()) { |
output.writeMessageSetExtension(extension.getNumber(), |
(MessageLite) next.getValue()); |
} else { |
FieldSet.writeField(extension, next.getValue(), output); |
} |
if (iter.hasNext()) { |
next = iter.next(); |
} else { |
next = null; |
} |
} |
} |
} |
protected ExtensionWriter newExtensionWriter() { |
return new ExtensionWriter(false); |
} |
protected ExtensionWriter newMessageSetExtensionWriter() { |
return new ExtensionWriter(true); |
} |
/** Called by subclasses to compute the size of extensions. */ |
protected int extensionsSerializedSize() { |
return extensions.getSerializedSize(); |
} |
protected int extensionsSerializedSizeAsMessageSet() { |
return extensions.getMessageSetSerializedSize(); |
} |
} |
/** |
* Lite equivalent of {@link GeneratedMessage.ExtendableBuilder}. |
*/ |
@SuppressWarnings("unchecked") |
public abstract static class ExtendableBuilder< |
MessageType extends ExtendableMessage<MessageType>, |
BuilderType extends ExtendableBuilder<MessageType, BuilderType>> |
extends Builder<MessageType, BuilderType> |
implements ExtendableMessageOrBuilder<MessageType> { |
protected ExtendableBuilder() {} |
private FieldSet<ExtensionDescriptor> extensions = FieldSet.emptySet(); |
private boolean extensionsIsMutable; |
@Override |
public BuilderType clear() { |
extensions.clear(); |
extensionsIsMutable = false; |
return super.clear(); |
} |
private void ensureExtensionsIsMutable() { |
if (!extensionsIsMutable) { |
extensions = extensions.clone(); |
extensionsIsMutable = true; |
} |
} |
/** |
* Called by the build code path to create a copy of the extensions for |
* building the message. |
*/ |
private FieldSet<ExtensionDescriptor> buildExtensions() { |
extensions.makeImmutable(); |
extensionsIsMutable = false; |
return extensions; |
} |
private void verifyExtensionContainingType( |
final GeneratedExtension<MessageType, ?> extension) { |
if (extension.getContainingTypeDefaultInstance() != |
getDefaultInstanceForType()) { |
// This can only happen if someone uses unchecked operations. |
throw new IllegalArgumentException( |
"This extension is for a different message type. Please make " + |
"sure that you are not suppressing any generics type warnings."); |
} |
} |
/** Check if a singular extension is present. */ |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public final <Type> boolean hasExtension( |
final GeneratedExtension<MessageType, Type> extension) { |
verifyExtensionContainingType(extension); |
return extensions.hasField(extension.descriptor); |
} |
/** Get the number of elements in a repeated extension. */ |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public final <Type> int getExtensionCount( |
final GeneratedExtension<MessageType, List<Type>> extension) { |
verifyExtensionContainingType(extension); |
return extensions.getRepeatedFieldCount(extension.descriptor); |
} |
/** Get the value of an extension. */ |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
@SuppressWarnings("unchecked") |
public final <Type> Type getExtension( |
final GeneratedExtension<MessageType, Type> extension) { |
verifyExtensionContainingType(extension); |
final Object value = extensions.getField(extension.descriptor); |
if (value == null) { |
return extension.defaultValue; |
} else { |
return (Type) value; |
} |
} |
/** Get one element of a repeated extension. */ |
@SuppressWarnings("unchecked") |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public final <Type> Type getExtension( |
final GeneratedExtension<MessageType, List<Type>> extension, |
final int index) { |
verifyExtensionContainingType(extension); |
return (Type) extensions.getRepeatedField(extension.descriptor, index); |
} |
// This is implemented here only to work around an apparent bug in the |
// Java compiler and/or build system. See bug #1898463. The mere presence |
// of this dummy clone() implementation makes it go away. |
@Override |
public BuilderType clone() { |
throw new UnsupportedOperationException( |
"This is supposed to be overridden by subclasses."); |
} |
/** Set the value of an extension. */ |
public final <Type> BuilderType setExtension( |
final GeneratedExtension<MessageType, Type> extension, |
final Type value) { |
verifyExtensionContainingType(extension); |
ensureExtensionsIsMutable(); |
extensions.setField(extension.descriptor, value); |
return (BuilderType) this; |
} |
/** Set the value of one element of a repeated extension. */ |
public final <Type> BuilderType setExtension( |
final GeneratedExtension<MessageType, List<Type>> extension, |
final int index, final Type value) { |
verifyExtensionContainingType(extension); |
ensureExtensionsIsMutable(); |
extensions.setRepeatedField(extension.descriptor, index, value); |
return (BuilderType) this; |
} |
/** Append a value to a repeated extension. */ |
public final <Type> BuilderType addExtension( |
final GeneratedExtension<MessageType, List<Type>> extension, |
final Type value) { |
verifyExtensionContainingType(extension); |
ensureExtensionsIsMutable(); |
extensions.addRepeatedField(extension.descriptor, value); |
return (BuilderType) this; |
} |
/** Clear an extension. */ |
public final <Type> BuilderType clearExtension( |
final GeneratedExtension<MessageType, ?> extension) { |
verifyExtensionContainingType(extension); |
ensureExtensionsIsMutable(); |
extensions.clearField(extension.descriptor); |
return (BuilderType) this; |
} |
/** Called by subclasses to check if all extensions are initialized. */ |
protected boolean extensionsAreInitialized() { |
return extensions.isInitialized(); |
} |
/** |
* Called by subclasses to parse an unknown field or an extension. |
* @return {@code true} unless the tag is an end-group tag. |
*/ |
@Override |
protected boolean parseUnknownField( |
final CodedInputStream input, |
final ExtensionRegistryLite extensionRegistry, |
final int tag) throws IOException { |
final int wireType = WireFormat.getTagWireType(tag); |
final int fieldNumber = WireFormat.getTagFieldNumber(tag); |
final GeneratedExtension<MessageType, ?> extension = |
extensionRegistry.findLiteExtensionByNumber( |
getDefaultInstanceForType(), fieldNumber); |
boolean unknown = false; |
boolean packed = false; |
if (extension == null) { |
unknown = true; // Unknown field. |
} else if (wireType == FieldSet.getWireFormatForFieldType( |
extension.descriptor.getLiteType(), |
false /* isPacked */)) { |
packed = false; // Normal, unpacked value. |
} else if (extension.descriptor.isRepeated && |
extension.descriptor.type.isPackable() && |
wireType == FieldSet.getWireFormatForFieldType( |
extension.descriptor.getLiteType(), |
true /* isPacked */)) { |
packed = true; // Packed value. |
} else { |
unknown = true; // Wrong wire type. |
} |
if (unknown) { // Unknown field or wrong wire type. Skip. |
return input.skipField(tag); |
} |
if (packed) { |
final int length = input.readRawVarint32(); |
final int limit = input.pushLimit(length); |
if (extension.descriptor.getLiteType() == WireFormat.FieldType.ENUM) { |
while (input.getBytesUntilLimit() > 0) { |
final int rawValue = input.readEnum(); |
final Object value = |
extension.descriptor.getEnumType().findValueByNumber(rawValue); |
if (value == null) { |
// If the number isn't recognized as a valid value for this |
// enum, drop it (don't even add it to unknownFields). |
return true; |
} |
ensureExtensionsIsMutable(); |
extensions.addRepeatedField(extension.descriptor, value); |
} |
} else { |
while (input.getBytesUntilLimit() > 0) { |
final Object value = |
FieldSet.readPrimitiveField(input, |
extension.descriptor.getLiteType()); |
ensureExtensionsIsMutable(); |
extensions.addRepeatedField(extension.descriptor, value); |
} |
} |
input.popLimit(limit); |
} else { |
final Object value; |
switch (extension.descriptor.getLiteJavaType()) { |
case MESSAGE: { |
MessageLite.Builder subBuilder = null; |
if (!extension.descriptor.isRepeated()) { |
MessageLite existingValue = |
(MessageLite) extensions.getField(extension.descriptor); |
if (existingValue != null) { |
subBuilder = existingValue.toBuilder(); |
} |
} |
if (subBuilder == null) { |
subBuilder = extension.messageDefaultInstance.newBuilderForType(); |
} |
if (extension.descriptor.getLiteType() == |
WireFormat.FieldType.GROUP) { |
input.readGroup(extension.getNumber(), |
subBuilder, extensionRegistry); |
} else { |
input.readMessage(subBuilder, extensionRegistry); |
} |
value = subBuilder.build(); |
break; |
} |
case ENUM: |
final int rawValue = input.readEnum(); |
value = extension.descriptor.getEnumType() |
.findValueByNumber(rawValue); |
// If the number isn't recognized as a valid value for this enum, |
// drop it. |
if (value == null) { |
return true; |
} |
break; |
default: |
value = FieldSet.readPrimitiveField(input, |
extension.descriptor.getLiteType()); |
break; |
} |
if (extension.descriptor.isRepeated()) { |
ensureExtensionsIsMutable(); |
extensions.addRepeatedField(extension.descriptor, value); |
} else { |
ensureExtensionsIsMutable(); |
extensions.setField(extension.descriptor, value); |
} |
} |
return true; |
} |
protected final void mergeExtensionFields(final MessageType other) { |
ensureExtensionsIsMutable(); |
extensions.mergeFrom(((ExtendableMessage) other).extensions); |
} |
} |
// ----------------------------------------------------------------- |
/** For use by generated code only. */ |
public static <ContainingType extends MessageLite, Type> |
GeneratedExtension<ContainingType, Type> |
newSingularGeneratedExtension( |
final ContainingType containingTypeDefaultInstance, |
final Type defaultValue, |
final MessageLite messageDefaultInstance, |
final Internal.EnumLiteMap<?> enumTypeMap, |
final int number, |
final WireFormat.FieldType type) { |
return new GeneratedExtension<ContainingType, Type>( |
containingTypeDefaultInstance, |
defaultValue, |
messageDefaultInstance, |
new ExtensionDescriptor(enumTypeMap, number, type, |
false /* isRepeated */, |
false /* isPacked */)); |
} |
/** For use by generated code only. */ |
public static <ContainingType extends MessageLite, Type> |
GeneratedExtension<ContainingType, Type> |
newRepeatedGeneratedExtension( |
final ContainingType containingTypeDefaultInstance, |
final MessageLite messageDefaultInstance, |
final Internal.EnumLiteMap<?> enumTypeMap, |
final int number, |
final WireFormat.FieldType type, |
final boolean isPacked) { |
@SuppressWarnings("unchecked") // Subclasses ensure Type is a List |
Type emptyList = (Type) Collections.emptyList(); |
return new GeneratedExtension<ContainingType, Type>( |
containingTypeDefaultInstance, |
emptyList, |
messageDefaultInstance, |
new ExtensionDescriptor( |
enumTypeMap, number, type, true /* isRepeated */, isPacked)); |
} |
private static final class ExtensionDescriptor |
implements FieldSet.FieldDescriptorLite< |
ExtensionDescriptor> { |
private ExtensionDescriptor( |
final Internal.EnumLiteMap<?> enumTypeMap, |
final int number, |
final WireFormat.FieldType type, |
final boolean isRepeated, |
final boolean isPacked) { |
this.enumTypeMap = enumTypeMap; |
this.number = number; |
this.type = type; |
this.isRepeated = isRepeated; |
this.isPacked = isPacked; |
} |
private final Internal.EnumLiteMap<?> enumTypeMap; |
private final int number; |
private final WireFormat.FieldType type; |
private final boolean isRepeated; |
private final boolean isPacked; |
public int getNumber() { |
return number; |
} |
public WireFormat.FieldType getLiteType() { |
return type; |
} |
public WireFormat.JavaType getLiteJavaType() { |
return type.getJavaType(); |
} |
public boolean isRepeated() { |
return isRepeated; |
} |
public boolean isPacked() { |
return isPacked; |
} |
public Internal.EnumLiteMap<?> getEnumType() { |
return enumTypeMap; |
} |
@SuppressWarnings("unchecked") |
public MessageLite.Builder internalMergeFrom( |
MessageLite.Builder to, MessageLite from) { |
return ((Builder) to).mergeFrom((GeneratedMessageLite) from); |
} |
public int compareTo(ExtensionDescriptor other) { |
return number - other.number; |
} |
} |
/** |
* Lite equivalent to {@link GeneratedMessage.GeneratedExtension}. |
* |
* Users should ignore the contents of this class and only use objects of |
* this type as parameters to extension accessors and ExtensionRegistry.add(). |
*/ |
public static final class GeneratedExtension< |
ContainingType extends MessageLite, Type> { |
private GeneratedExtension( |
final ContainingType containingTypeDefaultInstance, |
final Type defaultValue, |
final MessageLite messageDefaultInstance, |
final ExtensionDescriptor descriptor) { |
// Defensive checks to verify the correct initialization order of |
// GeneratedExtensions and their related GeneratedMessages. |
if (containingTypeDefaultInstance == null) { |
throw new IllegalArgumentException( |
"Null containingTypeDefaultInstance"); |
} |
if (descriptor.getLiteType() == WireFormat.FieldType.MESSAGE && |
messageDefaultInstance == null) { |
throw new IllegalArgumentException( |
"Null messageDefaultInstance"); |
} |
this.containingTypeDefaultInstance = containingTypeDefaultInstance; |
this.defaultValue = defaultValue; |
this.messageDefaultInstance = messageDefaultInstance; |
this.descriptor = descriptor; |
} |
private final ContainingType containingTypeDefaultInstance; |
private final Type defaultValue; |
private final MessageLite messageDefaultInstance; |
private final ExtensionDescriptor descriptor; |
/** |
* Default instance of the type being extended, used to identify that type. |
*/ |
public ContainingType getContainingTypeDefaultInstance() { |
return containingTypeDefaultInstance; |
} |
/** Get the field number. */ |
public int getNumber() { |
return descriptor.getNumber(); |
} |
/** |
* If the extension is an embedded message, this is the default instance of |
* that type. |
*/ |
public MessageLite getMessageDefaultInstance() { |
return messageDefaultInstance; |
} |
} |
/** |
* A serialized (serializable) form of the generated message. Stores the |
* message as a class name and a byte array. |
*/ |
static final class SerializedForm implements Serializable { |
private static final long serialVersionUID = 0L; |
private String messageClassName; |
private byte[] asBytes; |
/** |
* Creates the serialized form by calling {@link com.google.protobuf.MessageLite#toByteArray}. |
* @param regularForm the message to serialize |
*/ |
SerializedForm(MessageLite regularForm) { |
messageClassName = regularForm.getClass().getName(); |
asBytes = regularForm.toByteArray(); |
} |
/** |
* When read from an ObjectInputStream, this method converts this object |
* back to the regular form. Part of Java's serialization magic. |
* @return a GeneratedMessage of the type that was serialized |
*/ |
@SuppressWarnings("unchecked") |
protected Object readResolve() throws ObjectStreamException { |
try { |
Class messageClass = Class.forName(messageClassName); |
Method newBuilder = messageClass.getMethod("newBuilder"); |
MessageLite.Builder builder = |
(MessageLite.Builder) newBuilder.invoke(null); |
builder.mergeFrom(asBytes); |
return builder.buildPartial(); |
} catch (ClassNotFoundException e) { |
throw new RuntimeException("Unable to find proto buffer class", e); |
} catch (NoSuchMethodException e) { |
throw new RuntimeException("Unable to find newBuilder method", e); |
} catch (IllegalAccessException e) { |
throw new RuntimeException("Unable to call newBuilder method", e); |
} catch (InvocationTargetException e) { |
throw new RuntimeException("Error calling newBuilder", e.getCause()); |
} catch (InvalidProtocolBufferException e) { |
throw new RuntimeException("Unable to understand proto buffer", e); |
} |
} |
} |
/** |
* Replaces this object in the output stream with a serialized form. |
* Part of Java's serialization magic. Generated sub-classes must override |
* this method by calling <code>return super.writeReplace();</code> |
* @return a SerializedForm of this message |
*/ |
protected Object writeReplace() throws ObjectStreamException { |
return new SerializedForm(this); |
} |
} |
/Android Development/IOIODebugger/src/com/google/protobuf/Internal.java |
---|
0,0 → 1,206 |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
// |
// * Redistributions of source code must retain the above copyright |
// notice, this list of conditions and the following disclaimer. |
// * Redistributions in binary form must reproduce the above |
// copyright notice, this list of conditions and the following disclaimer |
// in the documentation and/or other materials provided with the |
// distribution. |
// * Neither the name of Google Inc. nor the names of its |
// contributors may be used to endorse or promote products derived from |
// this software without specific prior written permission. |
// |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
package com.google.protobuf; |
import java.io.UnsupportedEncodingException; |
/** |
* The classes contained within are used internally by the Protocol Buffer |
* library and generated message implementations. They are public only because |
* those generated messages do not reside in the {@code protobuf} package. |
* Others should not use this class directly. |
* |
* @author kenton@google.com (Kenton Varda) |
*/ |
public class Internal { |
/** |
* Helper called by generated code to construct default values for string |
* fields. |
* <p> |
* The protocol compiler does not actually contain a UTF-8 decoder -- it |
* just pushes UTF-8-encoded text around without touching it. The one place |
* where this presents a problem is when generating Java string literals. |
* Unicode characters in the string literal would normally need to be encoded |
* using a Unicode escape sequence, which would require decoding them. |
* To get around this, protoc instead embeds the UTF-8 bytes into the |
* generated code and leaves it to the runtime library to decode them. |
* <p> |
* It gets worse, though. If protoc just generated a byte array, like: |
* new byte[] {0x12, 0x34, 0x56, 0x78} |
* Java actually generates *code* which allocates an array and then fills |
* in each value. This is much less efficient than just embedding the bytes |
* directly into the bytecode. To get around this, we need another |
* work-around. String literals are embedded directly, so protoc actually |
* generates a string literal corresponding to the bytes. The easiest way |
* to do this is to use the ISO-8859-1 character set, which corresponds to |
* the first 256 characters of the Unicode range. Protoc can then use |
* good old CEscape to generate the string. |
* <p> |
* So we have a string literal which represents a set of bytes which |
* represents another string. This function -- stringDefaultValue -- |
* converts from the generated string to the string we actually want. The |
* generated code calls this automatically. |
*/ |
public static String stringDefaultValue(String bytes) { |
try { |
return new String(bytes.getBytes("ISO-8859-1"), "UTF-8"); |
} catch (UnsupportedEncodingException e) { |
// This should never happen since all JVMs are required to implement |
// both of the above character sets. |
throw new IllegalStateException( |
"Java VM does not support a standard character set.", e); |
} |
} |
/** |
* Helper called by generated code to construct default values for bytes |
* fields. |
* <p> |
* This is a lot like {@link #stringDefaultValue}, but for bytes fields. |
* In this case we only need the second of the two hacks -- allowing us to |
* embed raw bytes as a string literal with ISO-8859-1 encoding. |
*/ |
public static ByteString bytesDefaultValue(String bytes) { |
try { |
return ByteString.copyFrom(bytes.getBytes("ISO-8859-1")); |
} catch (UnsupportedEncodingException e) { |
// This should never happen since all JVMs are required to implement |
// ISO-8859-1. |
throw new IllegalStateException( |
"Java VM does not support a standard character set.", e); |
} |
} |
/** |
* Helper called by generated code to determine if a byte array is a valid |
* UTF-8 encoded string such that the original bytes can be converted to |
* a String object and then back to a byte array round tripping the bytes |
* without loss. |
* <p> |
* This is inspired by UTF_8.java in sun.nio.cs. |
* |
* @param byteString the string to check |
* @return whether the byte array is round trippable |
*/ |
public static boolean isValidUtf8(ByteString byteString) { |
int index = 0; |
int size = byteString.size(); |
// To avoid the masking, we could change this to use bytes; |
// Then X > 0xC2 gets turned into X < -0xC2; X < 0x80 |
// gets turned into X >= 0, etc. |
while (index < size) { |
int byte1 = byteString.byteAt(index++) & 0xFF; |
if (byte1 < 0x80) { |
// fast loop for single bytes |
continue; |
// we know from this point on that we have 2-4 byte forms |
} else if (byte1 < 0xC2 || byte1 > 0xF4) { |
// catch illegal first bytes: < C2 or > F4 |
return false; |
} |
if (index >= size) { |
// fail if we run out of bytes |
return false; |
} |
int byte2 = byteString.byteAt(index++) & 0xFF; |
if (byte2 < 0x80 || byte2 > 0xBF) { |
// general trail-byte test |
return false; |
} |
if (byte1 <= 0xDF) { |
// two-byte form; general trail-byte test is sufficient |
continue; |
} |
// we know from this point on that we have 3 or 4 byte forms |
if (index >= size) { |
// fail if we run out of bytes |
return false; |
} |
int byte3 = byteString.byteAt(index++) & 0xFF; |
if (byte3 < 0x80 || byte3 > 0xBF) { |
// general trail-byte test |
return false; |
} |
if (byte1 <= 0xEF) { |
// three-byte form. Vastly more frequent than four-byte forms |
// The following has an extra test, but not worth restructuring |
if (byte1 == 0xE0 && byte2 < 0xA0 || |
byte1 == 0xED && byte2 > 0x9F) { |
// check special cases of byte2 |
return false; |
} |
} else { |
// four-byte form |
if (index >= size) { |
// fail if we run out of bytes |
return false; |
} |
int byte4 = byteString.byteAt(index++) & 0xFF; |
if (byte4 < 0x80 || byte4 > 0xBF) { |
// general trail-byte test |
return false; |
} |
// The following has an extra test, but not worth restructuring |
if (byte1 == 0xF0 && byte2 < 0x90 || |
byte1 == 0xF4 && byte2 > 0x8F) { |
// check special cases of byte2 |
return false; |
} |
} |
} |
return true; |
} |
/** |
* Interface for an enum value or value descriptor, to be used in FieldSet. |
* The lite library stores enum values directly in FieldSets but the full |
* library stores EnumValueDescriptors in order to better support reflection. |
*/ |
public interface EnumLite { |
int getNumber(); |
} |
/** |
* Interface for an object which maps integers to {@link EnumLite}s. |
* {@link Descriptors.EnumDescriptor} implements this interface by mapping |
* numbers to {@link Descriptors.EnumValueDescriptor}s. Additionally, |
* every generated enum type has a static method internalGetValueMap() which |
* returns an implementation of this type that maps numbers to enum values. |
*/ |
public interface EnumLiteMap<T extends EnumLite> { |
T findValueByNumber(int number); |
} |
} |
/Android Development/IOIODebugger/src/com/google/protobuf/InvalidProtocolBufferException.java |
---|
0,0 → 1,93 |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
// |
// * Redistributions of source code must retain the above copyright |
// notice, this list of conditions and the following disclaimer. |
// * Redistributions in binary form must reproduce the above |
// copyright notice, this list of conditions and the following disclaimer |
// in the documentation and/or other materials provided with the |
// distribution. |
// * Neither the name of Google Inc. nor the names of its |
// contributors may be used to endorse or promote products derived from |
// this software without specific prior written permission. |
// |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
package com.google.protobuf; |
import java.io.IOException; |
/** |
* Thrown when a protocol message being parsed is invalid in some way, |
* e.g. it contains a malformed varint or a negative byte length. |
* |
* @author kenton@google.com Kenton Varda |
*/ |
public class InvalidProtocolBufferException extends IOException { |
private static final long serialVersionUID = -1616151763072450476L; |
public InvalidProtocolBufferException(final String description) { |
super(description); |
} |
static InvalidProtocolBufferException truncatedMessage() { |
return new InvalidProtocolBufferException( |
"While parsing a protocol message, the input ended unexpectedly " + |
"in the middle of a field. This could mean either than the " + |
"input has been truncated or that an embedded message " + |
"misreported its own length."); |
} |
static InvalidProtocolBufferException negativeSize() { |
return new InvalidProtocolBufferException( |
"CodedInputStream encountered an embedded string or message " + |
"which claimed to have negative size."); |
} |
static InvalidProtocolBufferException malformedVarint() { |
return new InvalidProtocolBufferException( |
"CodedInputStream encountered a malformed varint."); |
} |
static InvalidProtocolBufferException invalidTag() { |
return new InvalidProtocolBufferException( |
"Protocol message contained an invalid tag (zero)."); |
} |
static InvalidProtocolBufferException invalidEndTag() { |
return new InvalidProtocolBufferException( |
"Protocol message end-group tag did not match expected tag."); |
} |
static InvalidProtocolBufferException invalidWireType() { |
return new InvalidProtocolBufferException( |
"Protocol message tag had invalid wire type."); |
} |
static InvalidProtocolBufferException recursionLimitExceeded() { |
return new InvalidProtocolBufferException( |
"Protocol message had too many levels of nesting. May be malicious. " + |
"Use CodedInputStream.setRecursionLimit() to increase the depth limit."); |
} |
static InvalidProtocolBufferException sizeLimitExceeded() { |
return new InvalidProtocolBufferException( |
"Protocol message was too large. May be malicious. " + |
"Use CodedInputStream.setSizeLimit() to increase the size limit."); |
} |
} |
/Android Development/IOIODebugger/src/com/google/protobuf/LazyStringArrayList.java |
---|
0,0 → 1,155 |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
// |
// * Redistributions of source code must retain the above copyright |
// notice, this list of conditions and the following disclaimer. |
// * Redistributions in binary form must reproduce the above |
// copyright notice, this list of conditions and the following disclaimer |
// in the documentation and/or other materials provided with the |
// distribution. |
// * Neither the name of Google Inc. nor the names of its |
// contributors may be used to endorse or promote products derived from |
// this software without specific prior written permission. |
// |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
package com.google.protobuf; |
import java.util.List; |
import java.util.AbstractList; |
import java.util.ArrayList; |
import java.util.RandomAccess; |
import java.util.Collection; |
/** |
* An implementation of {@link LazyStringList} that wraps an ArrayList. Each |
* element is either a ByteString or a String. It caches the last one requested |
* which is most likely the one needed next. This minimizes memory usage while |
* satisfying the most common use cases. |
* <p> |
* <strong>Note that this implementation is not synchronized.</strong> |
* If multiple threads access an <tt>ArrayList</tt> instance concurrently, |
* and at least one of the threads modifies the list structurally, it |
* <i>must</i> be synchronized externally. (A structural modification is |
* any operation that adds or deletes one or more elements, or explicitly |
* resizes the backing array; merely setting the value of an element is not |
* a structural modification.) This is typically accomplished by |
* synchronizing on some object that naturally encapsulates the list. |
* <p> |
* If the implementation is accessed via concurrent reads, this is thread safe. |
* Conversions are done in a thread safe manner. It's possible that the |
* conversion may happen more than once if two threads attempt to access the |
* same element and the modifications were not visible to each other, but this |
* will not result in any corruption of the list or change in behavior other |
* than performance. |
* |
* @author jonp@google.com (Jon Perlow) |
*/ |
public class LazyStringArrayList extends AbstractList<String> |
implements LazyStringList, RandomAccess { |
public final static LazyStringList EMPTY = new UnmodifiableLazyStringList( |
new LazyStringArrayList()); |
private final List<Object> list; |
public LazyStringArrayList() { |
list = new ArrayList<Object>(); |
} |
public LazyStringArrayList(List<String> from) { |
list = new ArrayList<Object>(from); |
} |
@Override |
public String get(int index) { |
Object o = list.get(index); |
if (o instanceof String) { |
return (String) o; |
} else { |
ByteString bs = (ByteString) o; |
String s = bs.toStringUtf8(); |
if (Internal.isValidUtf8(bs)) { |
list.set(index, s); |
} |
return s; |
} |
} |
@Override |
public int size() { |
return list.size(); |
} |
@Override |
public String set(int index, String s) { |
Object o = list.set(index, s); |
return asString(o); |
} |
@Override |
public void add(int index, String element) { |
list.add(index, element); |
modCount++; |
} |
@Override |
public boolean addAll(int index, Collection<? extends String> c) { |
boolean ret = list.addAll(index, c); |
modCount++; |
return ret; |
} |
@Override |
public String remove(int index) { |
Object o = list.remove(index); |
modCount++; |
return asString(o); |
} |
public void clear() { |
list.clear(); |
modCount++; |
} |
// @Override |
public void add(ByteString element) { |
list.add(element); |
modCount++; |
} |
// @Override |
public ByteString getByteString(int index) { |
Object o = list.get(index); |
if (o instanceof String) { |
ByteString b = ByteString.copyFromUtf8((String) o); |
list.set(index, b); |
return b; |
} else { |
return (ByteString) o; |
} |
} |
private String asString(Object o) { |
if (o instanceof String) { |
return (String) o; |
} else { |
return ((ByteString) o).toStringUtf8(); |
} |
} |
} |
/Android Development/IOIODebugger/src/com/google/protobuf/LazyStringList.java |
---|
0,0 → 1,72 |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
// |
// * Redistributions of source code must retain the above copyright |
// notice, this list of conditions and the following disclaimer. |
// * Redistributions in binary form must reproduce the above |
// copyright notice, this list of conditions and the following disclaimer |
// in the documentation and/or other materials provided with the |
// distribution. |
// * Neither the name of Google Inc. nor the names of its |
// contributors may be used to endorse or promote products derived from |
// this software without specific prior written permission. |
// |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
package com.google.protobuf; |
import java.util.List; |
/** |
* An interface extending List<String> that also provides access to the |
* items of the list as UTF8-encoded ByteString objects. This is used by the |
* protocol buffer implementation to support lazily converting bytes parsed |
* over the wire to String objects until needed and also increases the |
* efficiency of serialization if the String was never requested as the |
* ByteString is already cached. |
* <p> |
* This only adds additional methods that are required for the use in the |
* protocol buffer code in order to be able successfuly round trip byte arrays |
* through parsing and serialization without conversion to strings. It's not |
* attempting to support the functionality of say List<ByteString>, hence |
* why only these two very specific methods are added. |
* |
* @author jonp@google.com (Jon Perlow) |
*/ |
public interface LazyStringList extends List<String> { |
/** |
* Returns the element at the specified position in this list as a ByteString. |
* |
* @param index index of the element to return |
* @return the element at the specified position in this list |
* @throws IndexOutOfBoundsException if the index is out of range |
* (<tt>index < 0 || index >= size()</tt>) |
*/ |
ByteString getByteString(int index); |
/** |
* Appends the specified element to the end of this list (optional |
* operation). |
* |
* @param element element to be appended to this list |
* @throws UnsupportedOperationException if the <tt>add</tt> operation |
* is not supported by this list |
*/ |
void add(ByteString element); |
} |
/Android Development/IOIODebugger/src/com/google/protobuf/Message.java |
---|
0,0 → 1,215 |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
// |
// * Redistributions of source code must retain the above copyright |
// notice, this list of conditions and the following disclaimer. |
// * Redistributions in binary form must reproduce the above |
// copyright notice, this list of conditions and the following disclaimer |
// in the documentation and/or other materials provided with the |
// distribution. |
// * Neither the name of Google Inc. nor the names of its |
// contributors may be used to endorse or promote products derived from |
// this software without specific prior written permission. |
// |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
// TODO(kenton): Use generics? E.g. Builder<BuilderType extends Builder>, then |
// mergeFrom*() could return BuilderType for better type-safety. |
package com.google.protobuf; |
import java.io.IOException; |
import java.io.InputStream; |
import java.util.Map; |
/** |
* Abstract interface implemented by Protocol Message objects. |
* <p> |
* See also {@link MessageLite}, which defines most of the methods that typical |
* users care about. {@link Message} adds to it methods that are not available |
* in the "lite" runtime. The biggest added features are introspection and |
* reflection -- i.e., getting descriptors for the message type and accessing |
* the field values dynamically. |
* |
* @author kenton@google.com Kenton Varda |
*/ |
public interface Message extends MessageLite, MessageOrBuilder { |
// ----------------------------------------------------------------- |
// Comparison and hashing |
/** |
* Compares the specified object with this message for equality. Returns |
* <tt>true</tt> if the given object is a message of the same type (as |
* defined by {@code getDescriptorForType()}) and has identical values for |
* all of its fields. Subclasses must implement this; inheriting |
* {@code Object.equals()} is incorrect. |
* |
* @param other object to be compared for equality with this message |
* @return <tt>true</tt> if the specified object is equal to this message |
*/ |
@Override |
boolean equals(Object other); |
/** |
* Returns the hash code value for this message. The hash code of a message |
* should mix the message's type (object identity of the decsriptor) with its |
* contents (known and unknown field values). Subclasses must implement this; |
* inheriting {@code Object.hashCode()} is incorrect. |
* |
* @return the hash code value for this message |
* @see Map#hashCode() |
*/ |
@Override |
int hashCode(); |
// ----------------------------------------------------------------- |
// Convenience methods. |
/** |
* Converts the message to a string in protocol buffer text format. This is |
* just a trivial wrapper around {@link TextFormat#printToString(Message)}. |
*/ |
@Override |
String toString(); |
// ================================================================= |
// Builders |
// (From MessageLite, re-declared here only for return type covariance.) |
Builder newBuilderForType(); |
Builder toBuilder(); |
/** |
* Abstract interface implemented by Protocol Message builders. |
*/ |
interface Builder extends MessageLite.Builder, MessageOrBuilder { |
// (From MessageLite.Builder, re-declared here only for return type |
// covariance.) |
Builder clear(); |
/** |
* Merge {@code other} into the message being built. {@code other} must |
* have the exact same type as {@code this} (i.e. |
* {@code getDescriptorForType() == other.getDescriptorForType()}). |
* |
* Merging occurs as follows. For each field:<br> |
* * For singular primitive fields, if the field is set in {@code other}, |
* then {@code other}'s value overwrites the value in this message.<br> |
* * For singular message fields, if the field is set in {@code other}, |
* it is merged into the corresponding sub-message of this message |
* using the same merging rules.<br> |
* * For repeated fields, the elements in {@code other} are concatenated |
* with the elements in this message. |
* |
* This is equivalent to the {@code Message::MergeFrom} method in C++. |
*/ |
Builder mergeFrom(Message other); |
// (From MessageLite.Builder, re-declared here only for return type |
// covariance.) |
Message build(); |
Message buildPartial(); |
Builder clone(); |
Builder mergeFrom(CodedInputStream input) throws IOException; |
Builder mergeFrom(CodedInputStream input, |
ExtensionRegistryLite extensionRegistry) |
throws IOException; |
/** |
* Get the message's type's descriptor. |
* See {@link Message#getDescriptorForType()}. |
*/ |
Descriptors.Descriptor getDescriptorForType(); |
/** |
* Create a Builder for messages of the appropriate type for the given |
* field. Messages built with this can then be passed to setField(), |
* setRepeatedField(), or addRepeatedField(). |
*/ |
Builder newBuilderForField(Descriptors.FieldDescriptor field); |
/** |
* Sets a field to the given value. The value must be of the correct type |
* for this field, i.e. the same type that |
* {@link Message#getField(Descriptors.FieldDescriptor)} would return. |
*/ |
Builder setField(Descriptors.FieldDescriptor field, Object value); |
/** |
* Clears the field. This is exactly equivalent to calling the generated |
* "clear" accessor method corresponding to the field. |
*/ |
Builder clearField(Descriptors.FieldDescriptor field); |
/** |
* Sets an element of a repeated field to the given value. The value must |
* be of the correct type for this field, i.e. the same type that |
* {@link Message#getRepeatedField(Descriptors.FieldDescriptor,int)} would |
* return. |
* @throws IllegalArgumentException The field is not a repeated field, or |
* {@code field.getContainingType() != getDescriptorForType()}. |
*/ |
Builder setRepeatedField(Descriptors.FieldDescriptor field, |
int index, Object value); |
/** |
* Like {@code setRepeatedField}, but appends the value as a new element. |
* @throws IllegalArgumentException The field is not a repeated field, or |
* {@code field.getContainingType() != getDescriptorForType()}. |
*/ |
Builder addRepeatedField(Descriptors.FieldDescriptor field, Object value); |
/** Set the {@link UnknownFieldSet} for this message. */ |
Builder setUnknownFields(UnknownFieldSet unknownFields); |
/** |
* Merge some unknown fields into the {@link UnknownFieldSet} for this |
* message. |
*/ |
Builder mergeUnknownFields(UnknownFieldSet unknownFields); |
// --------------------------------------------------------------- |
// Convenience methods. |
// (From MessageLite.Builder, re-declared here only for return type |
// covariance.) |
Builder mergeFrom(ByteString data) throws InvalidProtocolBufferException; |
Builder mergeFrom(ByteString data, |
ExtensionRegistryLite extensionRegistry) |
throws InvalidProtocolBufferException; |
Builder mergeFrom(byte[] data) throws InvalidProtocolBufferException; |
Builder mergeFrom(byte[] data, int off, int len) |
throws InvalidProtocolBufferException; |
Builder mergeFrom(byte[] data, |
ExtensionRegistryLite extensionRegistry) |
throws InvalidProtocolBufferException; |
Builder mergeFrom(byte[] data, int off, int len, |
ExtensionRegistryLite extensionRegistry) |
throws InvalidProtocolBufferException; |
Builder mergeFrom(InputStream input) throws IOException; |
Builder mergeFrom(InputStream input, |
ExtensionRegistryLite extensionRegistry) |
throws IOException; |
boolean mergeDelimitedFrom(InputStream input) |
throws IOException; |
boolean mergeDelimitedFrom(InputStream input, |
ExtensionRegistryLite extensionRegistry) |
throws IOException; |
} |
} |
/Android Development/IOIODebugger/src/com/google/protobuf/MessageLite.java |
---|
0,0 → 1,325 |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
// |
// * Redistributions of source code must retain the above copyright |
// notice, this list of conditions and the following disclaimer. |
// * Redistributions in binary form must reproduce the above |
// copyright notice, this list of conditions and the following disclaimer |
// in the documentation and/or other materials provided with the |
// distribution. |
// * Neither the name of Google Inc. nor the names of its |
// contributors may be used to endorse or promote products derived from |
// this software without specific prior written permission. |
// |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
// TODO(kenton): Use generics? E.g. Builder<BuilderType extends Builder>, then |
// mergeFrom*() could return BuilderType for better type-safety. |
package com.google.protobuf; |
import java.io.IOException; |
import java.io.InputStream; |
import java.io.OutputStream; |
/** |
* Abstract interface implemented by Protocol Message objects. |
* |
* <p>This interface is implemented by all protocol message objects. Non-lite |
* messages additionally implement the Message interface, which is a subclass |
* of MessageLite. Use MessageLite instead when you only need the subset of |
* features which it supports -- namely, nothing that uses descriptors or |
* reflection. You can instruct the protocol compiler to generate classes |
* which implement only MessageLite, not the full Message interface, by adding |
* the follow line to the .proto file: |
* <pre> |
* option optimize_for = LITE_RUNTIME; |
* </pre> |
* |
* <p>This is particularly useful on resource-constrained systems where the |
* full protocol buffers runtime library is too big. |
* |
* <p>Note that on non-constrained systems (e.g. servers) when you need to link |
* in lots of protocol definitions, a better way to reduce total code footprint |
* is to use {@code optimize_for = CODE_SIZE}. This will make the generated |
* code smaller while still supporting all the same features (at the expense of |
* speed). {@code optimize_for = LITE_RUNTIME} is best when you only have a |
* small number of message types linked into your binary, in which case the |
* size of the protocol buffers runtime itself is the biggest problem. |
* |
* @author kenton@google.com Kenton Varda |
*/ |
public interface MessageLite extends MessageLiteOrBuilder { |
/** |
* Serializes the message and writes it to {@code output}. This does not |
* flush or close the stream. |
*/ |
void writeTo(CodedOutputStream output) throws IOException; |
/** |
* Get the number of bytes required to encode this message. The result |
* is only computed on the first call and memoized after that. |
*/ |
int getSerializedSize(); |
// ----------------------------------------------------------------- |
// Convenience methods. |
/** |
* Serializes the message to a {@code ByteString} and returns it. This is |
* just a trivial wrapper around |
* {@link #writeTo(CodedOutputStream)}. |
*/ |
ByteString toByteString(); |
/** |
* Serializes the message to a {@code byte} array and returns it. This is |
* just a trivial wrapper around |
* {@link #writeTo(CodedOutputStream)}. |
*/ |
byte[] toByteArray(); |
/** |
* Serializes the message and writes it to {@code output}. This is just a |
* trivial wrapper around {@link #writeTo(CodedOutputStream)}. This does |
* not flush or close the stream. |
* <p> |
* NOTE: Protocol Buffers are not self-delimiting. Therefore, if you write |
* any more data to the stream after the message, you must somehow ensure |
* that the parser on the receiving end does not interpret this as being |
* part of the protocol message. This can be done e.g. by writing the size |
* of the message before the data, then making sure to limit the input to |
* that size on the receiving end (e.g. by wrapping the InputStream in one |
* which limits the input). Alternatively, just use |
* {@link #writeDelimitedTo(OutputStream)}. |
*/ |
void writeTo(OutputStream output) throws IOException; |
/** |
* Like {@link #writeTo(OutputStream)}, but writes the size of the message |
* as a varint before writing the data. This allows more data to be written |
* to the stream after the message without the need to delimit the message |
* data yourself. Use {@link Builder#mergeDelimitedFrom(InputStream)} (or |
* the static method {@code YourMessageType.parseDelimitedFrom(InputStream)}) |
* to parse messages written by this method. |
*/ |
void writeDelimitedTo(OutputStream output) throws IOException; |
// ================================================================= |
// Builders |
/** |
* Constructs a new builder for a message of the same type as this message. |
*/ |
Builder newBuilderForType(); |
/** |
* Constructs a builder initialized with the current message. Use this to |
* derive a new message from the current one. |
*/ |
Builder toBuilder(); |
/** |
* Abstract interface implemented by Protocol Message builders. |
*/ |
interface Builder extends MessageLiteOrBuilder, Cloneable { |
/** Resets all fields to their default values. */ |
Builder clear(); |
/** |
* Construct the final message. Once this is called, the Builder is no |
* longer valid, and calling any other method will result in undefined |
* behavior and may throw a NullPointerException. If you need to continue |
* working with the builder after calling {@code build()}, {@code clone()} |
* it first. |
* @throws UninitializedMessageException The message is missing one or more |
* required fields (i.e. {@link #isInitialized()} returns false). |
* Use {@link #buildPartial()} to bypass this check. |
*/ |
MessageLite build(); |
/** |
* Like {@link #build()}, but does not throw an exception if the message |
* is missing required fields. Instead, a partial message is returned. |
* Once this is called, the Builder is no longer valid, and calling any |
* will result in undefined behavior and may throw a NullPointerException. |
* |
* If you need to continue working with the builder after calling |
* {@code buildPartial()}, {@code clone()} it first. |
*/ |
MessageLite buildPartial(); |
/** |
* Clones the Builder. |
* @see Object#clone() |
*/ |
Builder clone(); |
/** |
* Parses a message of this type from the input and merges it with this |
* message, as if using {@link Builder#mergeFrom(MessageLite)}. |
* |
* <p>Warning: This does not verify that all required fields are present in |
* the input message. If you call {@link #build()} without setting all |
* required fields, it will throw an {@link UninitializedMessageException}, |
* which is a {@code RuntimeException} and thus might not be caught. There |
* are a few good ways to deal with this: |
* <ul> |
* <li>Call {@link #isInitialized()} to verify that all required fields |
* are set before building. |
* <li>Parse the message separately using one of the static |
* {@code parseFrom} methods, then use {@link #mergeFrom(MessageLite)} |
* to merge it with this one. {@code parseFrom} will throw an |
* {@link InvalidProtocolBufferException} (an {@code IOException}) |
* if some required fields are missing. |
* <li>Use {@code buildPartial()} to build, which ignores missing |
* required fields. |
* </ul> |
* |
* <p>Note: The caller should call |
* {@link CodedInputStream#checkLastTagWas(int)} after calling this to |
* verify that the last tag seen was the appropriate end-group tag, |
* or zero for EOF. |
*/ |
Builder mergeFrom(CodedInputStream input) throws IOException; |
/** |
* Like {@link Builder#mergeFrom(CodedInputStream)}, but also |
* parses extensions. The extensions that you want to be able to parse |
* must be registered in {@code extensionRegistry}. Extensions not in |
* the registry will be treated as unknown fields. |
*/ |
Builder mergeFrom(CodedInputStream input, |
ExtensionRegistryLite extensionRegistry) |
throws IOException; |
// --------------------------------------------------------------- |
// Convenience methods. |
/** |
* Parse {@code data} as a message of this type and merge it with the |
* message being built. This is just a small wrapper around |
* {@link #mergeFrom(CodedInputStream)}. |
* |
* @return this |
*/ |
Builder mergeFrom(ByteString data) throws InvalidProtocolBufferException; |
/** |
* Parse {@code data} as a message of this type and merge it with the |
* message being built. This is just a small wrapper around |
* {@link #mergeFrom(CodedInputStream,ExtensionRegistry)}. |
* |
* @return this |
*/ |
Builder mergeFrom(ByteString data, |
ExtensionRegistryLite extensionRegistry) |
throws InvalidProtocolBufferException; |
/** |
* Parse {@code data} as a message of this type and merge it with the |
* message being built. This is just a small wrapper around |
* {@link #mergeFrom(CodedInputStream)}. |
* |
* @return this |
*/ |
Builder mergeFrom(byte[] data) throws InvalidProtocolBufferException; |
/** |
* Parse {@code data} as a message of this type and merge it with the |
* message being built. This is just a small wrapper around |
* {@link #mergeFrom(CodedInputStream)}. |
* |
* @return this |
*/ |
Builder mergeFrom(byte[] data, int off, int len) |
throws InvalidProtocolBufferException; |
/** |
* Parse {@code data} as a message of this type and merge it with the |
* message being built. This is just a small wrapper around |
* {@link #mergeFrom(CodedInputStream,ExtensionRegistry)}. |
* |
* @return this |
*/ |
Builder mergeFrom(byte[] data, |
ExtensionRegistryLite extensionRegistry) |
throws InvalidProtocolBufferException; |
/** |
* Parse {@code data} as a message of this type and merge it with the |
* message being built. This is just a small wrapper around |
* {@link #mergeFrom(CodedInputStream,ExtensionRegistry)}. |
* |
* @return this |
*/ |
Builder mergeFrom(byte[] data, int off, int len, |
ExtensionRegistryLite extensionRegistry) |
throws InvalidProtocolBufferException; |
/** |
* Parse a message of this type from {@code input} and merge it with the |
* message being built. This is just a small wrapper around |
* {@link #mergeFrom(CodedInputStream)}. Note that this method always |
* reads the <i>entire</i> input (unless it throws an exception). If you |
* want it to stop earlier, you will need to wrap your input in some |
* wrapper stream that limits reading. Or, use |
* {@link MessageLite#writeDelimitedTo(OutputStream)} to write your message |
* and {@link #mergeDelimitedFrom(InputStream)} to read it. |
* <p> |
* Despite usually reading the entire input, this does not close the stream. |
* |
* @return this |
*/ |
Builder mergeFrom(InputStream input) throws IOException; |
/** |
* Parse a message of this type from {@code input} and merge it with the |
* message being built. This is just a small wrapper around |
* {@link #mergeFrom(CodedInputStream,ExtensionRegistry)}. |
* |
* @return this |
*/ |
Builder mergeFrom(InputStream input, |
ExtensionRegistryLite extensionRegistry) |
throws IOException; |
/** |
* Like {@link #mergeFrom(InputStream)}, but does not read until EOF. |
* Instead, the size of the message (encoded as a varint) is read first, |
* then the message data. Use |
* {@link MessageLite#writeDelimitedTo(OutputStream)} to write messages in |
* this format. |
* |
* @returns True if successful, or false if the stream is at EOF when the |
* method starts. Any other error (including reaching EOF during |
* parsing) will cause an exception to be thrown. |
*/ |
boolean mergeDelimitedFrom(InputStream input) |
throws IOException; |
/** |
* Like {@link #mergeDelimitedFrom(InputStream)} but supporting extensions. |
*/ |
boolean mergeDelimitedFrom(InputStream input, |
ExtensionRegistryLite extensionRegistry) |
throws IOException; |
} |
} |
/Android Development/IOIODebugger/src/com/google/protobuf/MessageLiteOrBuilder.java |
---|
0,0 → 1,58 |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
// |
// * Redistributions of source code must retain the above copyright |
// notice, this list of conditions and the following disclaimer. |
// * Redistributions in binary form must reproduce the above |
// copyright notice, this list of conditions and the following disclaimer |
// in the documentation and/or other materials provided with the |
// distribution. |
// * Neither the name of Google Inc. nor the names of its |
// contributors may be used to endorse or promote products derived from |
// this software without specific prior written permission. |
// |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
package com.google.protobuf; |
/** |
* Base interface for methods common to {@link MessageLite} |
* and {@link MessageLite.Builder} to provide type equivalency. |
* |
* @author jonp@google.com (Jon Perlow) |
*/ |
public interface MessageLiteOrBuilder { |
/** |
* Get an instance of the type with no fields set. Because no fields are set, |
* all getters for singular fields will return default values and repeated |
* fields will appear empty. |
* This may or may not be a singleton. This differs from the |
* {@code getDefaultInstance()} method of generated message classes in that |
* this method is an abstract method of the {@code MessageLite} interface |
* whereas {@code getDefaultInstance()} is a static method of a specific |
* class. They return the same thing. |
*/ |
MessageLite getDefaultInstanceForType(); |
/** |
* Returns true if all required fields in the message and all embedded |
* messages are set, false otherwise. |
*/ |
boolean isInitialized(); |
} |
/Android Development/IOIODebugger/src/com/google/protobuf/MessageOrBuilder.java |
---|
0,0 → 1,110 |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
// |
// * Redistributions of source code must retain the above copyright |
// notice, this list of conditions and the following disclaimer. |
// * Redistributions in binary form must reproduce the above |
// copyright notice, this list of conditions and the following disclaimer |
// in the documentation and/or other materials provided with the |
// distribution. |
// * Neither the name of Google Inc. nor the names of its |
// contributors may be used to endorse or promote products derived from |
// this software without specific prior written permission. |
// |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
package com.google.protobuf; |
import java.util.Map; |
/** |
* Base interface for methods common to {@link Message} and |
* {@link Message.Builder} to provide type equivalency. |
* |
* @author jonp@google.com (Jon Perlow) |
*/ |
public interface MessageOrBuilder extends MessageLiteOrBuilder { |
// (From MessageLite, re-declared here only for return type covariance.) |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
Message getDefaultInstanceForType(); |
/** |
* Get the message's type's descriptor. This differs from the |
* {@code getDescriptor()} method of generated message classes in that |
* this method is an abstract method of the {@code Message} interface |
* whereas {@code getDescriptor()} is a static method of a specific class. |
* They return the same thing. |
*/ |
Descriptors.Descriptor getDescriptorForType(); |
/** |
* Returns a collection of all the fields in this message which are set |
* and their corresponding values. A singular ("required" or "optional") |
* field is set iff hasField() returns true for that field. A "repeated" |
* field is set iff getRepeatedFieldSize() is greater than zero. The |
* values are exactly what would be returned by calling |
* {@link #getField(Descriptors.FieldDescriptor)} for each field. The map |
* is guaranteed to be a sorted map, so iterating over it will return fields |
* in order by field number. |
* <br> |
* If this is for a builder, the returned map may or may not reflect future |
* changes to the builder. Either way, the returned map is itself |
* unmodifiable. |
*/ |
Map<Descriptors.FieldDescriptor, Object> getAllFields(); |
/** |
* Returns true if the given field is set. This is exactly equivalent to |
* calling the generated "has" accessor method corresponding to the field. |
* @throws IllegalArgumentException The field is a repeated field, or |
* {@code field.getContainingType() != getDescriptorForType()}. |
*/ |
boolean hasField(Descriptors.FieldDescriptor field); |
/** |
* Obtains the value of the given field, or the default value if it is |
* not set. For primitive fields, the boxed primitive value is returned. |
* For enum fields, the EnumValueDescriptor for the value is returend. For |
* embedded message fields, the sub-message is returned. For repeated |
* fields, a java.util.List is returned. |
*/ |
Object getField(Descriptors.FieldDescriptor field); |
/** |
* Gets the number of elements of a repeated field. This is exactly |
* equivalent to calling the generated "Count" accessor method corresponding |
* to the field. |
* @throws IllegalArgumentException The field is not a repeated field, or |
* {@code field.getContainingType() != getDescriptorForType()}. |
*/ |
int getRepeatedFieldCount(Descriptors.FieldDescriptor field); |
/** |
* Gets an element of a repeated field. For primitive fields, the boxed |
* primitive value is returned. For enum fields, the EnumValueDescriptor |
* for the value is returend. For embedded message fields, the sub-message |
* is returned. |
* @throws IllegalArgumentException The field is not a repeated field, or |
* {@code field.getContainingType() != getDescriptorForType()}. |
*/ |
Object getRepeatedField(Descriptors.FieldDescriptor field, int index); |
/** Get the {@link UnknownFieldSet} for this message. */ |
UnknownFieldSet getUnknownFields(); |
} |
/Android Development/IOIODebugger/src/com/google/protobuf/ProtocolMessageEnum.java |
---|
0,0 → 1,58 |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
// |
// * Redistributions of source code must retain the above copyright |
// notice, this list of conditions and the following disclaimer. |
// * Redistributions in binary form must reproduce the above |
// copyright notice, this list of conditions and the following disclaimer |
// in the documentation and/or other materials provided with the |
// distribution. |
// * Neither the name of Google Inc. nor the names of its |
// contributors may be used to endorse or promote products derived from |
// this software without specific prior written permission. |
// |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
package com.google.protobuf; |
import com.google.protobuf.Descriptors.EnumDescriptor; |
import com.google.protobuf.Descriptors.EnumValueDescriptor; |
/** |
* Interface of useful methods added to all enums generated by the protocol |
* compiler. |
*/ |
public interface ProtocolMessageEnum extends Internal.EnumLite { |
/** |
* Return the value's numeric value as defined in the .proto file. |
*/ |
int getNumber(); |
/** |
* Return the value's descriptor, which contains information such as |
* value name, number, and type. |
*/ |
EnumValueDescriptor getValueDescriptor(); |
/** |
* Return the enum type's descriptor, which contains information |
* about each defined value, etc. |
*/ |
EnumDescriptor getDescriptorForType(); |
} |
/Android Development/IOIODebugger/src/com/google/protobuf/RepeatedFieldBuilder.java |
---|
0,0 → 1,696 |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
// |
// * Redistributions of source code must retain the above copyright |
// notice, this list of conditions and the following disclaimer. |
// * Redistributions in binary form must reproduce the above |
// copyright notice, this list of conditions and the following disclaimer |
// in the documentation and/or other materials provided with the |
// distribution. |
// * Neither the name of Google Inc. nor the names of its |
// contributors may be used to endorse or promote products derived from |
// this software without specific prior written permission. |
// |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
package com.google.protobuf; |
import java.util.AbstractList; |
import java.util.ArrayList; |
import java.util.Collection; |
import java.util.Collections; |
import java.util.List; |
/** |
* <code>RepeatedFieldBuilder</code> implements a structure that a protocol |
* message uses to hold a repeated field of other protocol messages. It supports |
* the classical use case of adding immutable {@link Message}'s to the |
* repeated field and is highly optimized around this (no extra memory |
* allocations and sharing of immutable arrays). |
* <br> |
* It also supports the additional use case of adding a {@link Message.Builder} |
* to the repeated field and deferring conversion of that <code>Builder</code> |
* to an immutable <code>Message</code>. In this way, it's possible to maintain |
* a tree of <code>Builder</code>'s that acts as a fully read/write data |
* structure. |
* <br> |
* Logically, one can think of a tree of builders as converting the entire tree |
* to messages when build is called on the root or when any method is called |
* that desires a Message instead of a Builder. In terms of the implementation, |
* the <code>SingleFieldBuilder</code> and <code>RepeatedFieldBuilder</code> |
* classes cache messages that were created so that messages only need to be |
* created when some change occured in its builder or a builder for one of its |
* descendants. |
* |
* @param <MType> the type of message for the field |
* @param <BType> the type of builder for the field |
* @param <IType> the common interface for the message and the builder |
* |
* @author jonp@google.com (Jon Perlow) |
*/ |
public class RepeatedFieldBuilder |
<MType extends GeneratedMessage, |
BType extends GeneratedMessage.Builder, |
IType extends MessageOrBuilder> |
implements GeneratedMessage.BuilderParent { |
// Parent to send changes to. |
private GeneratedMessage.BuilderParent parent; |
// List of messages. Never null. It may be immutable, in which case |
// isMessagesListImmutable will be true. See note below. |
private List<MType> messages; |
// Whether messages is an mutable array that can be modified. |
private boolean isMessagesListMutable; |
// List of builders. May be null, in which case, no nested builders were |
// created. If not null, entries represent the builder for that index. |
private List<SingleFieldBuilder<MType, BType, IType>> builders; |
// Here are the invariants for messages and builders: |
// 1. messages is never null and its count corresponds to the number of items |
// in the repeated field. |
// 2. If builders is non-null, messages and builders MUST always |
// contain the same number of items. |
// 3. Entries in either array can be null, but for any index, there MUST be |
// either a Message in messages or a builder in builders. |
// 4. If the builder at an index is non-null, the builder is |
// authoritative. This is the case where a Builder was set on the index. |
// Any message in the messages array MUST be ignored. |
// t. If the builder at an index is null, the message in the messages |
// list is authoritative. This is the case where a Message (not a Builder) |
// was set directly for an index. |
// Indicates that we've built a message and so we are now obligated |
// to dispatch dirty invalidations. See GeneratedMessage.BuilderListener. |
private boolean isClean; |
// A view of this builder that exposes a List interface of messages. This is |
// initialized on demand. This is fully backed by this object and all changes |
// are reflected in it. Access to any item converts it to a message if it |
// was a builder. |
private MessageExternalList<MType, BType, IType> externalMessageList; |
// A view of this builder that exposes a List interface of builders. This is |
// initialized on demand. This is fully backed by this object and all changes |
// are reflected in it. Access to any item converts it to a builder if it |
// was a message. |
private BuilderExternalList<MType, BType, IType> externalBuilderList; |
// A view of this builder that exposes a List interface of the interface |
// implemented by messages and builders. This is initialized on demand. This |
// is fully backed by this object and all changes are reflected in it. |
// Access to any item returns either a builder or message depending on |
// what is most efficient. |
private MessageOrBuilderExternalList<MType, BType, IType> |
externalMessageOrBuilderList; |
/** |
* Constructs a new builder with an empty list of messages. |
* |
* @param messages the current list of messages |
* @param isMessagesListMutable Whether the messages list is mutable |
* @param parent a listener to notify of changes |
* @param isClean whether the builder is initially marked clean |
*/ |
public RepeatedFieldBuilder( |
List<MType> messages, |
boolean isMessagesListMutable, |
GeneratedMessage.BuilderParent parent, |
boolean isClean) { |
this.messages = messages; |
this.isMessagesListMutable = isMessagesListMutable; |
this.parent = parent; |
this.isClean = isClean; |
} |
public void dispose() { |
// Null out parent so we stop sending it invalidations. |
parent = null; |
} |
/** |
* Ensures that the list of messages is mutable so it can be updated. If it's |
* immutable, a copy is made. |
*/ |
private void ensureMutableMessageList() { |
if (!isMessagesListMutable) { |
messages = new ArrayList<MType>(messages); |
isMessagesListMutable = true; |
} |
} |
/** |
* Ensures that the list of builders is not null. If it's null, the list is |
* created and initialized to be the same size as the messages list with |
* null entries. |
*/ |
private void ensureBuilders() { |
if (this.builders == null) { |
this.builders = |
new ArrayList<SingleFieldBuilder<MType, BType, IType>>( |
messages.size()); |
for (int i = 0; i < messages.size(); i++) { |
builders.add(null); |
} |
} |
} |
/** |
* Gets the count of items in the list. |
* |
* @return the count of items in the list. |
*/ |
public int getCount() { |
return messages.size(); |
} |
/** |
* Gets whether the list is empty. |
* |
* @return whether the list is empty |
*/ |
public boolean isEmpty() { |
return messages.isEmpty(); |
} |
/** |
* Get the message at the specified index. If the message is currently stored |
* as a <code>Builder</code>, it is converted to a <code>Message</code> by |
* calling {@link Message.Builder#buildPartial} on it. |
* |
* @param index the index of the message to get |
* @return the message for the specified index |
*/ |
public MType getMessage(int index) { |
return getMessage(index, false); |
} |
/** |
* Get the message at the specified index. If the message is currently stored |
* as a <code>Builder</code>, it is converted to a <code>Message</code> by |
* calling {@link Message.Builder#buildPartial} on it. |
* |
* @param index the index of the message to get |
* @param forBuild this is being called for build so we want to make sure |
* we SingleFieldBuilder.build to send dirty invalidations |
* @return the message for the specified index |
*/ |
private MType getMessage(int index, boolean forBuild) { |
if (this.builders == null) { |
// We don't have any builders -- return the current Message. |
// This is the case where no builder was created, so we MUST have a |
// Message. |
return messages.get(index); |
} |
SingleFieldBuilder<MType, BType, IType> builder = builders.get(index); |
if (builder == null) { |
// We don't have a builder -- return the current message. |
// This is the case where no builder was created for the entry at index, |
// so we MUST have a message. |
return messages.get(index); |
} else { |
return forBuild ? builder.build() : builder.getMessage(); |
} |
} |
/** |
* Gets a builder for the specified index. If no builder has been created for |
* that index, a builder is created on demand by calling |
* {@link Message#toBuilder}. |
* |
* @param index the index of the message to get |
* @return The builder for that index |
*/ |
public BType getBuilder(int index) { |
ensureBuilders(); |
SingleFieldBuilder<MType, BType, IType> builder = builders.get(index); |
if (builder == null) { |
MType message = messages.get(index); |
builder = new SingleFieldBuilder<MType, BType, IType>( |
message, this, isClean); |
builders.set(index, builder); |
} |
return builder.getBuilder(); |
} |
/** |
* Gets the base class interface for the specified index. This may either be |
* a builder or a message. It will return whatever is more efficient. |
* |
* @param index the index of the message to get |
* @return the message or builder for the index as the base class interface |
*/ |
@SuppressWarnings("unchecked") |
public IType getMessageOrBuilder(int index) { |
if (this.builders == null) { |
// We don't have any builders -- return the current Message. |
// This is the case where no builder was created, so we MUST have a |
// Message. |
return (IType) messages.get(index); |
} |
SingleFieldBuilder<MType, BType, IType> builder = builders.get(index); |
if (builder == null) { |
// We don't have a builder -- return the current message. |
// This is the case where no builder was created for the entry at index, |
// so we MUST have a message. |
return (IType) messages.get(index); |
} else { |
return builder.getMessageOrBuilder(); |
} |
} |
/** |
* Sets a message at the specified index replacing the existing item at |
* that index. |
* |
* @param index the index to set. |
* @param message the message to set |
* @return the builder |
*/ |
public RepeatedFieldBuilder<MType, BType, IType> setMessage( |
int index, MType message) { |
if (message == null) { |
throw new NullPointerException(); |
} |
ensureMutableMessageList(); |
messages.set(index, message); |
if (builders != null) { |
SingleFieldBuilder<MType, BType, IType> entry = |
builders.set(index, null); |
if (entry != null) { |
entry.dispose(); |
} |
} |
onChanged(); |
incrementModCounts(); |
return this; |
} |
/** |
* Appends the specified element to the end of this list. |
* |
* @param message the message to add |
* @return the builder |
*/ |
public RepeatedFieldBuilder<MType, BType, IType> addMessage( |
MType message) { |
if (message == null) { |
throw new NullPointerException(); |
} |
ensureMutableMessageList(); |
messages.add(message); |
if (builders != null) { |
builders.add(null); |
} |
onChanged(); |
incrementModCounts(); |
return this; |
} |
/** |
* Inserts the specified message at the specified position in this list. |
* Shifts the element currently at that position (if any) and any subsequent |
* elements to the right (adds one to their indices). |
* |
* @param index the index at which to insert the message |
* @param message the message to add |
* @return the builder |
*/ |
public RepeatedFieldBuilder<MType, BType, IType> addMessage( |
int index, MType message) { |
if (message == null) { |
throw new NullPointerException(); |
} |
ensureMutableMessageList(); |
messages.add(index, message); |
if (builders != null) { |
builders.add(index, null); |
} |
onChanged(); |
incrementModCounts(); |
return this; |
} |
/** |
* Appends all of the messages in the specified collection to the end of |
* this list, in the order that they are returned by the specified |
* collection's iterator. |
* |
* @param values the messages to add |
* @return the builder |
*/ |
public RepeatedFieldBuilder<MType, BType, IType> addAllMessages( |
Iterable<? extends MType> values) { |
for (final MType value : values) { |
if (value == null) { |
throw new NullPointerException(); |
} |
} |
if (values instanceof Collection) { |
@SuppressWarnings("unchecked") final |
Collection<MType> collection = (Collection<MType>) values; |
if (collection.size() == 0) { |
return this; |
} |
ensureMutableMessageList(); |
for (MType value : values) { |
addMessage(value); |
} |
} else { |
ensureMutableMessageList(); |
for (MType value : values) { |
addMessage(value); |
} |
} |
onChanged(); |
incrementModCounts(); |
return this; |
} |
/** |
* Appends a new builder to the end of this list and returns the builder. |
* |
* @param message the message to add which is the basis of the builder |
* @return the new builder |
*/ |
public BType addBuilder(MType message) { |
ensureMutableMessageList(); |
ensureBuilders(); |
SingleFieldBuilder<MType, BType, IType> builder = |
new SingleFieldBuilder<MType, BType, IType>( |
message, this, isClean); |
messages.add(null); |
builders.add(builder); |
onChanged(); |
incrementModCounts(); |
return builder.getBuilder(); |
} |
/** |
* Inserts a new builder at the specified position in this list. |
* Shifts the element currently at that position (if any) and any subsequent |
* elements to the right (adds one to their indices). |
* |
* @param index the index at which to insert the builder |
* @param message the message to add which is the basis of the builder |
* @return the builder |
*/ |
public BType addBuilder(int index, MType message) { |
ensureMutableMessageList(); |
ensureBuilders(); |
SingleFieldBuilder<MType, BType, IType> builder = |
new SingleFieldBuilder<MType, BType, IType>( |
message, this, isClean); |
messages.add(index, null); |
builders.add(index, builder); |
onChanged(); |
incrementModCounts(); |
return builder.getBuilder(); |
} |
/** |
* Removes the element at the specified position in this list. Shifts any |
* subsequent elements to the left (subtracts one from their indices). |
* Returns the element that was removed from the list. |
* |
* @param index the index at which to remove the message |
*/ |
public void remove(int index) { |
ensureMutableMessageList(); |
messages.remove(index); |
if (builders != null) { |
SingleFieldBuilder<MType, BType, IType> entry = |
builders.remove(index); |
if (entry != null) { |
entry.dispose(); |
} |
} |
onChanged(); |
incrementModCounts(); |
} |
/** |
* Removes all of the elements from this list. |
* The list will be empty after this call returns. |
*/ |
public void clear() { |
messages = Collections.emptyList(); |
isMessagesListMutable = false; |
if (builders != null) { |
for (SingleFieldBuilder<MType, BType, IType> entry : |
builders) { |
if (entry != null) { |
entry.dispose(); |
} |
} |
builders = null; |
} |
onChanged(); |
incrementModCounts(); |
} |
/** |
* Builds the list of messages from the builder and returns them. |
* |
* @return an immutable list of messages |
*/ |
public List<MType> build() { |
// Now that build has been called, we are required to dispatch |
// invalidations. |
isClean = true; |
if (!isMessagesListMutable && builders == null) { |
// We still have an immutable list and we never created a builder. |
return messages; |
} |
boolean allMessagesInSync = true; |
if (!isMessagesListMutable) { |
// We still have an immutable list. Let's see if any of them are out |
// of sync with their builders. |
for (int i = 0; i < messages.size(); i++) { |
Message message = messages.get(i); |
SingleFieldBuilder<MType, BType, IType> builder = builders.get(i); |
if (builder != null) { |
if (builder.build() != message) { |
allMessagesInSync = false; |
break; |
} |
} |
} |
if (allMessagesInSync) { |
// Immutable list is still in sync. |
return messages; |
} |
} |
// Need to make sure messages is up to date |
ensureMutableMessageList(); |
for (int i = 0; i < messages.size(); i++) { |
messages.set(i, getMessage(i, true)); |
} |
// We're going to return our list as immutable so we mark that we can |
// no longer update it. |
messages = Collections.unmodifiableList(messages); |
isMessagesListMutable = false; |
return messages; |
} |
/** |
* Gets a view of the builder as a list of messages. The returned list is live |
* and will reflect any changes to the underlying builder. |
* |
* @return the messages in the list |
*/ |
public List<MType> getMessageList() { |
if (externalMessageList == null) { |
externalMessageList = |
new MessageExternalList<MType, BType, IType>(this); |
} |
return externalMessageList; |
} |
/** |
* Gets a view of the builder as a list of builders. This returned list is |
* live and will reflect any changes to the underlying builder. |
* |
* @return the builders in the list |
*/ |
public List<BType> getBuilderList() { |
if (externalBuilderList == null) { |
externalBuilderList = |
new BuilderExternalList<MType, BType, IType>(this); |
} |
return externalBuilderList; |
} |
/** |
* Gets a view of the builder as a list of MessageOrBuilders. This returned |
* list is live and will reflect any changes to the underlying builder. |
* |
* @return the builders in the list |
*/ |
public List<IType> getMessageOrBuilderList() { |
if (externalMessageOrBuilderList == null) { |
externalMessageOrBuilderList = |
new MessageOrBuilderExternalList<MType, BType, IType>(this); |
} |
return externalMessageOrBuilderList; |
} |
/** |
* Called when a the builder or one of its nested children has changed |
* and any parent should be notified of its invalidation. |
*/ |
private void onChanged() { |
if (isClean && parent != null) { |
parent.markDirty(); |
// Don't keep dispatching invalidations until build is called again. |
isClean = false; |
} |
} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public void markDirty() { |
onChanged(); |
} |
/** |
* Increments the mod counts so that an ConcurrentModificationException can |
* be thrown if calling code tries to modify the builder while its iterating |
* the list. |
*/ |
private void incrementModCounts() { |
if (externalMessageList != null) { |
externalMessageList.incrementModCount(); |
} |
if (externalBuilderList != null) { |
externalBuilderList.incrementModCount(); |
} |
if (externalMessageOrBuilderList != null) { |
externalMessageOrBuilderList.incrementModCount(); |
} |
} |
/** |
* Provides a live view of the builder as a list of messages. |
* |
* @param <MType> the type of message for the field |
* @param <BType> the type of builder for the field |
* @param <IType> the common interface for the message and the builder |
*/ |
private static class MessageExternalList< |
MType extends GeneratedMessage, |
BType extends GeneratedMessage.Builder, |
IType extends MessageOrBuilder> |
extends AbstractList<MType> implements List<MType> { |
RepeatedFieldBuilder<MType, BType, IType> builder; |
MessageExternalList( |
RepeatedFieldBuilder<MType, BType, IType> builder) { |
this.builder = builder; |
} |
public int size() { |
return this.builder.getCount(); |
} |
public MType get(int index) { |
return builder.getMessage(index); |
} |
void incrementModCount() { |
modCount++; |
} |
} |
/** |
* Provides a live view of the builder as a list of builders. |
* |
* @param <MType> the type of message for the field |
* @param <BType> the type of builder for the field |
* @param <IType> the common interface for the message and the builder |
*/ |
private static class BuilderExternalList< |
MType extends GeneratedMessage, |
BType extends GeneratedMessage.Builder, |
IType extends MessageOrBuilder> |
extends AbstractList<BType> implements List<BType> { |
RepeatedFieldBuilder<MType, BType, IType> builder; |
BuilderExternalList( |
RepeatedFieldBuilder<MType, BType, IType> builder) { |
this.builder = builder; |
} |
public int size() { |
return this.builder.getCount(); |
} |
public BType get(int index) { |
return builder.getBuilder(index); |
} |
void incrementModCount() { |
modCount++; |
} |
} |
/** |
* Provides a live view of the builder as a list of builders. |
* |
* @param <MType> the type of message for the field |
* @param <BType> the type of builder for the field |
* @param <IType> the common interface for the message and the builder |
*/ |
private static class MessageOrBuilderExternalList< |
MType extends GeneratedMessage, |
BType extends GeneratedMessage.Builder, |
IType extends MessageOrBuilder> |
extends AbstractList<IType> implements List<IType> { |
RepeatedFieldBuilder<MType, BType, IType> builder; |
MessageOrBuilderExternalList( |
RepeatedFieldBuilder<MType, BType, IType> builder) { |
this.builder = builder; |
} |
public int size() { |
return this.builder.getCount(); |
} |
public IType get(int index) { |
return builder.getMessageOrBuilder(index); |
} |
void incrementModCount() { |
modCount++; |
} |
} |
} |
/Android Development/IOIODebugger/src/com/google/protobuf/RpcCallback.java |
---|
0,0 → 1,47 |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
// |
// * Redistributions of source code must retain the above copyright |
// notice, this list of conditions and the following disclaimer. |
// * Redistributions in binary form must reproduce the above |
// copyright notice, this list of conditions and the following disclaimer |
// in the documentation and/or other materials provided with the |
// distribution. |
// * Neither the name of Google Inc. nor the names of its |
// contributors may be used to endorse or promote products derived from |
// this software without specific prior written permission. |
// |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
package com.google.protobuf; |
/** |
* Interface for an RPC callback, normally called when an RPC completes. |
* {@code ParameterType} is normally the method's response message type. |
* |
* <p>Starting with version 2.3.0, RPC implementations should not try to build |
* on this, but should instead provide code generator plugins which generate |
* code specific to the particular RPC implementation. This way the generated |
* code can be more appropriate for the implementation in use and can avoid |
* unnecessary layers of indirection. |
* |
* @author kenton@google.com Kenton Varda |
*/ |
public interface RpcCallback<ParameterType> { |
void run(ParameterType parameter); |
} |
/Android Development/IOIODebugger/src/com/google/protobuf/RpcChannel.java |
---|
0,0 → 1,71 |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
// |
// * Redistributions of source code must retain the above copyright |
// notice, this list of conditions and the following disclaimer. |
// * Redistributions in binary form must reproduce the above |
// copyright notice, this list of conditions and the following disclaimer |
// in the documentation and/or other materials provided with the |
// distribution. |
// * Neither the name of Google Inc. nor the names of its |
// contributors may be used to endorse or promote products derived from |
// this software without specific prior written permission. |
// |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
package com.google.protobuf; |
/** |
* <p>Abstract interface for an RPC channel. An {@code RpcChannel} represents a |
* communication line to a {@link Service} which can be used to call that |
* {@link Service}'s methods. The {@link Service} may be running on another |
* machine. Normally, you should not call an {@code RpcChannel} directly, but |
* instead construct a stub {@link Service} wrapping it. Example: |
* |
* <pre> |
* RpcChannel channel = rpcImpl.newChannel("remotehost.example.com:1234"); |
* RpcController controller = rpcImpl.newController(); |
* MyService service = MyService.newStub(channel); |
* service.myMethod(controller, request, callback); |
* </pre> |
* |
* <p>Starting with version 2.3.0, RPC implementations should not try to build |
* on this, but should instead provide code generator plugins which generate |
* code specific to the particular RPC implementation. This way the generated |
* code can be more appropriate for the implementation in use and can avoid |
* unnecessary layers of indirection. |
* |
* @author kenton@google.com Kenton Varda |
*/ |
public interface RpcChannel { |
/** |
* Call the given method of the remote service. This method is similar to |
* {@code Service.callMethod()} with one important difference: the caller |
* decides the types of the {@code Message} objects, not the callee. The |
* request may be of any type as long as |
* {@code request.getDescriptor() == method.getInputType()}. |
* The response passed to the callback will be of the same type as |
* {@code responsePrototype} (which must have |
* {@code getDescriptor() == method.getOutputType()}). |
*/ |
void callMethod(Descriptors.MethodDescriptor method, |
RpcController controller, |
Message request, |
Message responsePrototype, |
RpcCallback<Message> done); |
} |
/Android Development/IOIODebugger/src/com/google/protobuf/RpcController.java |
---|
0,0 → 1,118 |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
// |
// * Redistributions of source code must retain the above copyright |
// notice, this list of conditions and the following disclaimer. |
// * Redistributions in binary form must reproduce the above |
// copyright notice, this list of conditions and the following disclaimer |
// in the documentation and/or other materials provided with the |
// distribution. |
// * Neither the name of Google Inc. nor the names of its |
// contributors may be used to endorse or promote products derived from |
// this software without specific prior written permission. |
// |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
package com.google.protobuf; |
/** |
* <p>An {@code RpcController} mediates a single method call. The primary |
* purpose of the controller is to provide a way to manipulate settings |
* specific to the RPC implementation and to find out about RPC-level errors. |
* |
* <p>Starting with version 2.3.0, RPC implementations should not try to build |
* on this, but should instead provide code generator plugins which generate |
* code specific to the particular RPC implementation. This way the generated |
* code can be more appropriate for the implementation in use and can avoid |
* unnecessary layers of indirection. |
* |
* <p>The methods provided by the {@code RpcController} interface are intended |
* to be a "least common denominator" set of features which we expect all |
* implementations to support. Specific implementations may provide more |
* advanced features (e.g. deadline propagation). |
* |
* @author kenton@google.com Kenton Varda |
*/ |
public interface RpcController { |
// ----------------------------------------------------------------- |
// These calls may be made from the client side only. Their results |
// are undefined on the server side (may throw RuntimeExceptions). |
/** |
* Resets the RpcController to its initial state so that it may be reused in |
* a new call. This can be called from the client side only. It must not |
* be called while an RPC is in progress. |
*/ |
void reset(); |
/** |
* After a call has finished, returns true if the call failed. The possible |
* reasons for failure depend on the RPC implementation. {@code failed()} |
* most only be called on the client side, and must not be called before a |
* call has finished. |
*/ |
boolean failed(); |
/** |
* If {@code failed()} is {@code true}, returns a human-readable description |
* of the error. |
*/ |
String errorText(); |
/** |
* Advises the RPC system that the caller desires that the RPC call be |
* canceled. The RPC system may cancel it immediately, may wait awhile and |
* then cancel it, or may not even cancel the call at all. If the call is |
* canceled, the "done" callback will still be called and the RpcController |
* will indicate that the call failed at that time. |
*/ |
void startCancel(); |
// ----------------------------------------------------------------- |
// These calls may be made from the server side only. Their results |
// are undefined on the client side (may throw RuntimeExceptions). |
/** |
* Causes {@code failed()} to return true on the client side. {@code reason} |
* will be incorporated into the message returned by {@code errorText()}. |
* If you find you need to return machine-readable information about |
* failures, you should incorporate it into your response protocol buffer |
* and should NOT call {@code setFailed()}. |
*/ |
void setFailed(String reason); |
/** |
* If {@code true}, indicates that the client canceled the RPC, so the server |
* may as well give up on replying to it. This method must be called on the |
* server side only. The server should still call the final "done" callback. |
*/ |
boolean isCanceled(); |
/** |
* Asks that the given callback be called when the RPC is canceled. The |
* parameter passed to the callback will always be {@code null}. The |
* callback will always be called exactly once. If the RPC completes without |
* being canceled, the callback will be called after completion. If the RPC |
* has already been canceled when NotifyOnCancel() is called, the callback |
* will be called immediately. |
* |
* <p>{@code notifyOnCancel()} must be called no more than once per request. |
* It must be called on the server side only. |
*/ |
void notifyOnCancel(RpcCallback<Object> callback); |
} |
/Android Development/IOIODebugger/src/com/google/protobuf/RpcUtil.java |
---|
0,0 → 1,135 |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
// |
// * Redistributions of source code must retain the above copyright |
// notice, this list of conditions and the following disclaimer. |
// * Redistributions in binary form must reproduce the above |
// copyright notice, this list of conditions and the following disclaimer |
// in the documentation and/or other materials provided with the |
// distribution. |
// * Neither the name of Google Inc. nor the names of its |
// contributors may be used to endorse or promote products derived from |
// this software without specific prior written permission. |
// |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
package com.google.protobuf; |
/** |
* Grab-bag of utility functions useful when dealing with RPCs. |
* |
* @author kenton@google.com Kenton Varda |
*/ |
public final class RpcUtil { |
private RpcUtil() {} |
/** |
* Take an {@code RpcCallback<Message>} and convert it to an |
* {@code RpcCallback} accepting a specific message type. This is always |
* type-safe (parameter type contravariance). |
*/ |
@SuppressWarnings("unchecked") |
public static <Type extends Message> RpcCallback<Type> |
specializeCallback(final RpcCallback<Message> originalCallback) { |
return (RpcCallback<Type>)originalCallback; |
// The above cast works, but only due to technical details of the Java |
// implementation. A more theoretically correct -- but less efficient -- |
// implementation would be as follows: |
// return new RpcCallback<Type>() { |
// public void run(Type parameter) { |
// originalCallback.run(parameter); |
// } |
// }; |
} |
/** |
* Take an {@code RpcCallback} accepting a specific message type and convert |
* it to an {@code RpcCallback<Message>}. The generalized callback will |
* accept any message object which has the same descriptor, and will convert |
* it to the correct class before calling the original callback. However, |
* if the generalized callback is given a message with a different descriptor, |
* an exception will be thrown. |
*/ |
public static <Type extends Message> |
RpcCallback<Message> generalizeCallback( |
final RpcCallback<Type> originalCallback, |
final Class<Type> originalClass, |
final Type defaultInstance) { |
return new RpcCallback<Message>() { |
public void run(final Message parameter) { |
Type typedParameter; |
try { |
typedParameter = originalClass.cast(parameter); |
} catch (ClassCastException ignored) { |
typedParameter = copyAsType(defaultInstance, parameter); |
} |
originalCallback.run(typedParameter); |
} |
}; |
} |
/** |
* Creates a new message of type "Type" which is a copy of "source". "source" |
* must have the same descriptor but may be a different class (e.g. |
* DynamicMessage). |
*/ |
@SuppressWarnings("unchecked") |
private static <Type extends Message> Type copyAsType( |
final Type typeDefaultInstance, final Message source) { |
return (Type)typeDefaultInstance.newBuilderForType() |
.mergeFrom(source) |
.build(); |
} |
/** |
* Creates a callback which can only be called once. This may be useful for |
* security, when passing a callback to untrusted code: most callbacks do |
* not expect to be called more than once, so doing so may expose bugs if it |
* is not prevented. |
*/ |
public static <ParameterType> |
RpcCallback<ParameterType> newOneTimeCallback( |
final RpcCallback<ParameterType> originalCallback) { |
return new RpcCallback<ParameterType>() { |
private boolean alreadyCalled = false; |
public void run(final ParameterType parameter) { |
synchronized(this) { |
if (alreadyCalled) { |
throw new AlreadyCalledException(); |
} |
alreadyCalled = true; |
} |
originalCallback.run(parameter); |
} |
}; |
} |
/** |
* Exception thrown when a one-time callback is called more than once. |
*/ |
public static final class AlreadyCalledException extends RuntimeException { |
private static final long serialVersionUID = 5469741279507848266L; |
public AlreadyCalledException() { |
super("This RpcCallback was already called and cannot be called " + |
"multiple times."); |
} |
} |
} |
/Android Development/IOIODebugger/src/com/google/protobuf/Service.java |
---|
0,0 → 1,117 |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
// |
// * Redistributions of source code must retain the above copyright |
// notice, this list of conditions and the following disclaimer. |
// * Redistributions in binary form must reproduce the above |
// copyright notice, this list of conditions and the following disclaimer |
// in the documentation and/or other materials provided with the |
// distribution. |
// * Neither the name of Google Inc. nor the names of its |
// contributors may be used to endorse or promote products derived from |
// this software without specific prior written permission. |
// |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
package com.google.protobuf; |
/** |
* Abstract base interface for protocol-buffer-based RPC services. Services |
* themselves are abstract classes (implemented either by servers or as |
* stubs), but they subclass this base interface. The methods of this |
* interface can be used to call the methods of the service without knowing |
* its exact type at compile time (analogous to the Message interface). |
* |
* <p>Starting with version 2.3.0, RPC implementations should not try to build |
* on this, but should instead provide code generator plugins which generate |
* code specific to the particular RPC implementation. This way the generated |
* code can be more appropriate for the implementation in use and can avoid |
* unnecessary layers of indirection. |
* |
* @author kenton@google.com Kenton Varda |
*/ |
public interface Service { |
/** |
* Get the {@code ServiceDescriptor} describing this service and its methods. |
*/ |
Descriptors.ServiceDescriptor getDescriptorForType(); |
/** |
* <p>Call a method of the service specified by MethodDescriptor. This is |
* normally implemented as a simple {@code switch()} that calls the standard |
* definitions of the service's methods. |
* |
* <p>Preconditions: |
* <ul> |
* <li>{@code method.getService() == getDescriptorForType()} |
* <li>{@code request} is of the exact same class as the object returned by |
* {@code getRequestPrototype(method)}. |
* <li>{@code controller} is of the correct type for the RPC implementation |
* being used by this Service. For stubs, the "correct type" depends |
* on the RpcChannel which the stub is using. Server-side Service |
* implementations are expected to accept whatever type of |
* {@code RpcController} the server-side RPC implementation uses. |
* </ul> |
* |
* <p>Postconditions: |
* <ul> |
* <li>{@code done} will be called when the method is complete. This may be |
* before {@code callMethod()} returns or it may be at some point in |
* the future. |
* <li>The parameter to {@code done} is the response. It must be of the |
* exact same type as would be returned by |
* {@code getResponsePrototype(method)}. |
* <li>If the RPC failed, the parameter to {@code done} will be |
* {@code null}. Further details about the failure can be found by |
* querying {@code controller}. |
* </ul> |
*/ |
void callMethod(Descriptors.MethodDescriptor method, |
RpcController controller, |
Message request, |
RpcCallback<Message> done); |
/** |
* <p>{@code callMethod()} requires that the request passed in is of a |
* particular subclass of {@code Message}. {@code getRequestPrototype()} |
* gets the default instances of this type for a given method. You can then |
* call {@code Message.newBuilderForType()} on this instance to |
* construct a builder to build an object which you can then pass to |
* {@code callMethod()}. |
* |
* <p>Example: |
* <pre> |
* MethodDescriptor method = |
* service.getDescriptorForType().findMethodByName("Foo"); |
* Message request = |
* stub.getRequestPrototype(method).newBuilderForType() |
* .mergeFrom(input).build(); |
* service.callMethod(method, request, callback); |
* </pre> |
*/ |
Message getRequestPrototype(Descriptors.MethodDescriptor method); |
/** |
* Like {@code getRequestPrototype()}, but gets a prototype of the response |
* message. {@code getResponsePrototype()} is generally not needed because |
* the {@code Service} implementation constructs the response message itself, |
* but it may be useful in some cases to know ahead of time what type of |
* object will be returned. |
*/ |
Message getResponsePrototype(Descriptors.MethodDescriptor method); |
} |
/Android Development/IOIODebugger/src/com/google/protobuf/ServiceException.java |
---|
0,0 → 1,52 |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
// |
// * Redistributions of source code must retain the above copyright |
// notice, this list of conditions and the following disclaimer. |
// * Redistributions in binary form must reproduce the above |
// copyright notice, this list of conditions and the following disclaimer |
// in the documentation and/or other materials provided with the |
// distribution. |
// * Neither the name of Google Inc. nor the names of its |
// contributors may be used to endorse or promote products derived from |
// this software without specific prior written permission. |
// |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
package com.google.protobuf; |
/** |
* Thrown by blocking RPC methods when a failure occurs. |
* |
* @author cpovirk@google.com (Chris Povirk) |
*/ |
public class ServiceException extends Exception { |
private static final long serialVersionUID = -1219262335729891920L; |
public ServiceException(final String message) { |
super(message); |
} |
public ServiceException(final Throwable cause) { |
super(cause); |
} |
public ServiceException(final String message, final Throwable cause) { |
super(message, cause); |
} |
} |
/Android Development/IOIODebugger/src/com/google/protobuf/SingleFieldBuilder.java |
---|
0,0 → 1,241 |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
// |
// * Redistributions of source code must retain the above copyright |
// notice, this list of conditions and the following disclaimer. |
// * Redistributions in binary form must reproduce the above |
// copyright notice, this list of conditions and the following disclaimer |
// in the documentation and/or other materials provided with the |
// distribution. |
// * Neither the name of Google Inc. nor the names of its |
// contributors may be used to endorse or promote products derived from |
// this software without specific prior written permission. |
// |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
package com.google.protobuf; |
/** |
* <code>SingleFieldBuilder</code> implements a structure that a protocol |
* message uses to hold a single field of another protocol message. It supports |
* the classical use case of setting an immutable {@link Message} as the value |
* of the field and is highly optimized around this. |
* <br> |
* It also supports the additional use case of setting a {@link Message.Builder} |
* as the field and deferring conversion of that <code>Builder</code> |
* to an immutable <code>Message</code>. In this way, it's possible to maintain |
* a tree of <code>Builder</code>'s that acts as a fully read/write data |
* structure. |
* <br> |
* Logically, one can think of a tree of builders as converting the entire tree |
* to messages when build is called on the root or when any method is called |
* that desires a Message instead of a Builder. In terms of the implementation, |
* the <code>SingleFieldBuilder</code> and <code>RepeatedFieldBuilder</code> |
* classes cache messages that were created so that messages only need to be |
* created when some change occured in its builder or a builder for one of its |
* descendants. |
* |
* @param <MType> the type of message for the field |
* @param <BType> the type of builder for the field |
* @param <IType> the common interface for the message and the builder |
* |
* @author jonp@google.com (Jon Perlow) |
*/ |
public class SingleFieldBuilder |
<MType extends GeneratedMessage, |
BType extends GeneratedMessage.Builder, |
IType extends MessageOrBuilder> |
implements GeneratedMessage.BuilderParent { |
// Parent to send changes to. |
private GeneratedMessage.BuilderParent parent; |
// Invariant: one of builder or message fields must be non-null. |
// If set, this is the case where we are backed by a builder. In this case, |
// message field represents a cached message for the builder (or null if |
// there is no cached message). |
private BType builder; |
// If builder is non-null, this represents a cached message from the builder. |
// If builder is null, this is the authoritative message for the field. |
private MType message; |
// Indicates that we've built a message and so we are now obligated |
// to dispatch dirty invalidations. See GeneratedMessage.BuilderListener. |
private boolean isClean; |
public SingleFieldBuilder( |
MType message, |
GeneratedMessage.BuilderParent parent, |
boolean isClean) { |
if (message == null) { |
throw new NullPointerException(); |
} |
this.message = message; |
this.parent = parent; |
this.isClean = isClean; |
} |
public void dispose() { |
// Null out parent so we stop sending it invalidations. |
parent = null; |
} |
/** |
* Get the message for the field. If the message is currently stored |
* as a <code>Builder</code>, it is converted to a <code>Message</code> by |
* calling {@link Message.Builder#buildPartial} on it. If no message has |
* been set, returns the default instance of the message. |
* |
* @return the message for the field |
*/ |
@SuppressWarnings("unchecked") |
public MType getMessage() { |
if (message == null) { |
// If message is null, the invariant is that we must be have a builder. |
message = (MType) builder.buildPartial(); |
} |
return message; |
} |
/** |
* Builds the message and returns it. |
* |
* @return the message |
*/ |
public MType build() { |
// Now that build has been called, we are required to dispatch |
// invalidations. |
isClean = true; |
return getMessage(); |
} |
/** |
* Gets a builder for the field. If no builder has been created yet, a |
* builder is created on demand by calling {@link Message#toBuilder}. |
* |
* @return The builder for the field |
*/ |
@SuppressWarnings("unchecked") |
public BType getBuilder() { |
if (builder == null) { |
// builder.mergeFrom() on a fresh builder |
// does not create any sub-objects with independent clean/dirty states, |
// therefore setting the builder itself to clean without actually calling |
// build() cannot break any invariants. |
builder = (BType) message.newBuilderForType(this); |
builder.mergeFrom(message); // no-op if message is the default message |
builder.markClean(); |
} |
return builder; |
} |
/** |
* Gets the base class interface for the field. This may either be a builder |
* or a message. It will return whatever is more efficient. |
* |
* @return the message or builder for the field as the base class interface |
*/ |
@SuppressWarnings("unchecked") |
public IType getMessageOrBuilder() { |
if (builder != null) { |
return (IType) builder; |
} else { |
return (IType) message; |
} |
} |
/** |
* Sets a message for the field replacing any existing value. |
* |
* @param message the message to set |
* @return the builder |
*/ |
public SingleFieldBuilder<MType, BType, IType> setMessage( |
MType message) { |
if (message == null) { |
throw new NullPointerException(); |
} |
this.message = message; |
if (builder != null) { |
builder.dispose(); |
builder = null; |
} |
onChanged(); |
return this; |
} |
/** |
* Merges the field from another field. |
* |
* @param value the value to merge from |
* @return the builder |
*/ |
public SingleFieldBuilder<MType, BType, IType> mergeFrom( |
MType value) { |
if (builder == null && message == message.getDefaultInstanceForType()) { |
message = value; |
} else { |
getBuilder().mergeFrom(value); |
} |
onChanged(); |
return this; |
} |
/** |
* Clears the value of the field. |
* |
* @return the builder |
*/ |
@SuppressWarnings("unchecked") |
public SingleFieldBuilder<MType, BType, IType> clear() { |
message = (MType) (message != null ? |
message.getDefaultInstanceForType() : |
builder.getDefaultInstanceForType()); |
if (builder != null) { |
builder.dispose(); |
builder = null; |
} |
onChanged(); |
return this; |
} |
/** |
* Called when a the builder or one of its nested children has changed |
* and any parent should be notified of its invalidation. |
*/ |
private void onChanged() { |
// If builder is null, this is the case where onChanged is being called |
// from setMessage or clear. |
if (builder != null) { |
message = null; |
} |
if (isClean && parent != null) { |
parent.markDirty(); |
// Don't keep dispatching invalidations until build is called again. |
isClean = false; |
} |
} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public void markDirty() { |
onChanged(); |
} |
} |
/Android Development/IOIODebugger/src/com/google/protobuf/SmallSortedMap.java |
---|
0,0 → 1,618 |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
// |
// * Redistributions of source code must retain the above copyright |
// notice, this list of conditions and the following disclaimer. |
// * Redistributions in binary form must reproduce the above |
// copyright notice, this list of conditions and the following disclaimer |
// in the documentation and/or other materials provided with the |
// distribution. |
// * Neither the name of Google Inc. nor the names of its |
// contributors may be used to endorse or promote products derived from |
// this software without specific prior written permission. |
// |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
package com.google.protobuf; |
import java.util.AbstractMap; |
import java.util.AbstractSet; |
import java.util.ArrayList; |
import java.util.Collections; |
import java.util.Iterator; |
import java.util.TreeMap; |
import java.util.List; |
import java.util.Map; |
import java.util.NoSuchElementException; |
import java.util.Set; |
import java.util.SortedMap; |
/** |
* A custom map implementation from FieldDescriptor to Object optimized to |
* minimize the number of memory allocations for instances with a small number |
* of mappings. The implementation stores the first {@code k} mappings in an |
* array for a configurable value of {@code k}, allowing direct access to the |
* corresponding {@code Entry}s without the need to create an Iterator. The |
* remaining entries are stored in an overflow map. Iteration over the entries |
* in the map should be done as follows: |
* |
* <pre> |
* for (int i = 0; i < fieldMap.getNumArrayEntries(); i++) { |
* process(fieldMap.getArrayEntryAt(i)); |
* } |
* for (Map.Entry<K, V> entry : fieldMap.getOverflowEntries()) { |
* process(entry); |
* } |
* </pre> |
* |
* The resulting iteration is in order of ascending field tag number. The |
* object returned by {@link #entrySet()} adheres to the same contract but is |
* less efficient as it necessarily involves creating an object for iteration. |
* <p> |
* The tradeoff for this memory efficiency is that the worst case running time |
* of the {@code put()} operation is {@code O(k + lg n)}, which happens when |
* entries are added in descending order. {@code k} should be chosen such that |
* it covers enough common cases without adversely affecting larger maps. In |
* practice, the worst case scenario does not happen for extensions because |
* extension fields are serialized and deserialized in order of ascending tag |
* number, but the worst case scenario can happen for DynamicMessages. |
* <p> |
* The running time for all other operations is similar to that of |
* {@code TreeMap}. |
* <p> |
* Instances are not thread-safe until {@link #makeImmutable()} is called, |
* after which any modifying operation will result in an |
* {@link UnsupportedOperationException}. |
* |
* @author darick@google.com Darick Tong |
*/ |
// This class is final for all intents and purposes because the constructor is |
// private. However, the FieldDescriptor-specific logic is encapsulated in |
// a subclass to aid testability of the core logic. |
class SmallSortedMap<K extends Comparable<K>, V> extends AbstractMap<K, V> { |
/** |
* Creates a new instance for mapping FieldDescriptors to their values. |
* The {@link #makeImmutable()} implementation will convert the List values |
* of any repeated fields to unmodifiable lists. |
* |
* @param arraySize The size of the entry array containing the |
* lexicographically smallest mappings. |
*/ |
static <FieldDescriptorType extends |
FieldSet.FieldDescriptorLite<FieldDescriptorType>> |
SmallSortedMap<FieldDescriptorType, Object> newFieldMap(int arraySize) { |
return new SmallSortedMap<FieldDescriptorType, Object>(arraySize) { |
@Override |
@SuppressWarnings("unchecked") |
public void makeImmutable() { |
if (!isImmutable()) { |
for (int i = 0; i < getNumArrayEntries(); i++) { |
final Map.Entry<FieldDescriptorType, Object> entry = |
getArrayEntryAt(i); |
if (entry.getKey().isRepeated()) { |
final List value = (List) entry.getValue(); |
entry.setValue(Collections.unmodifiableList(value)); |
} |
} |
for (Map.Entry<FieldDescriptorType, Object> entry : |
getOverflowEntries()) { |
if (entry.getKey().isRepeated()) { |
final List value = (List) entry.getValue(); |
entry.setValue(Collections.unmodifiableList(value)); |
} |
} |
} |
super.makeImmutable(); |
} |
}; |
} |
/** |
* Creates a new instance for testing. |
* |
* @param arraySize The size of the entry array containing the |
* lexicographically smallest mappings. |
*/ |
static <K extends Comparable<K>, V> SmallSortedMap<K, V> newInstanceForTest( |
int arraySize) { |
return new SmallSortedMap<K, V>(arraySize); |
} |
private final int maxArraySize; |
// The "entry array" is actually a List because generic arrays are not |
// allowed. ArrayList also nicely handles the entry shifting on inserts and |
// removes. |
private List<Entry> entryList; |
private Map<K, V> overflowEntries; |
private boolean isImmutable; |
// The EntrySet is a stateless view of the Map. It's initialized the first |
// time it is requested and reused henceforth. |
private volatile EntrySet lazyEntrySet; |
/** |
* @code arraySize Size of the array in which the lexicographically smallest |
* mappings are stored. (i.e. the {@code k} referred to in the class |
* documentation). |
*/ |
private SmallSortedMap(int arraySize) { |
this.maxArraySize = arraySize; |
this.entryList = Collections.emptyList(); |
this.overflowEntries = Collections.emptyMap(); |
} |
/** Make this map immutable from this point forward. */ |
public void makeImmutable() { |
if (!isImmutable) { |
// Note: There's no need to wrap the entryList in an unmodifiableList |
// because none of the list's accessors are exposed. The iterator() of |
// overflowEntries, on the other hand, is exposed so it must be made |
// unmodifiable. |
overflowEntries = overflowEntries.isEmpty() ? |
Collections.<K, V>emptyMap() : |
Collections.unmodifiableMap(overflowEntries); |
isImmutable = true; |
} |
} |
/** @return Whether {@link #makeImmutable()} has been called. */ |
public boolean isImmutable() { |
return isImmutable; |
} |
/** @return The number of entries in the entry array. */ |
public int getNumArrayEntries() { |
return entryList.size(); |
} |
/** @return The array entry at the given {@code index}. */ |
public Map.Entry<K, V> getArrayEntryAt(int index) { |
return entryList.get(index); |
} |
/** @return There number of overflow entries. */ |
public int getNumOverflowEntries() { |
return overflowEntries.size(); |
} |
/** @return An iterable over the overflow entries. */ |
public Iterable<Map.Entry<K, V>> getOverflowEntries() { |
return overflowEntries.isEmpty() ? |
EmptySet.<Map.Entry<K, V>>iterable() : |
overflowEntries.entrySet(); |
} |
@Override |
public int size() { |
return entryList.size() + overflowEntries.size(); |
} |
/** |
* The implementation throws a {@code ClassCastException} if o is not an |
* object of type {@code K}. |
* |
* {@inheritDoc} |
*/ |
@Override |
public boolean containsKey(Object o) { |
@SuppressWarnings("unchecked") |
final K key = (K) o; |
return binarySearchInArray(key) >= 0 || overflowEntries.containsKey(key); |
} |
/** |
* The implementation throws a {@code ClassCastException} if o is not an |
* object of type {@code K}. |
* |
* {@inheritDoc} |
*/ |
@Override |
public V get(Object o) { |
@SuppressWarnings("unchecked") |
final K key = (K) o; |
final int index = binarySearchInArray(key); |
if (index >= 0) { |
return entryList.get(index).getValue(); |
} |
return overflowEntries.get(key); |
} |
@Override |
public V put(K key, V value) { |
checkMutable(); |
final int index = binarySearchInArray(key); |
if (index >= 0) { |
// Replace existing array entry. |
return entryList.get(index).setValue(value); |
} |
ensureEntryArrayMutable(); |
final int insertionPoint = -(index + 1); |
if (insertionPoint >= maxArraySize) { |
// Put directly in overflow. |
return getOverflowEntriesMutable().put(key, value); |
} |
// Insert new Entry in array. |
if (entryList.size() == maxArraySize) { |
// Shift the last array entry into overflow. |
final Entry lastEntryInArray = entryList.remove(maxArraySize - 1); |
getOverflowEntriesMutable().put(lastEntryInArray.getKey(), |
lastEntryInArray.getValue()); |
} |
entryList.add(insertionPoint, new Entry(key, value)); |
return null; |
} |
@Override |
public void clear() { |
checkMutable(); |
if (!entryList.isEmpty()) { |
entryList.clear(); |
} |
if (!overflowEntries.isEmpty()) { |
overflowEntries.clear(); |
} |
} |
/** |
* The implementation throws a {@code ClassCastException} if o is not an |
* object of type {@code K}. |
* |
* {@inheritDoc} |
*/ |
@Override |
public V remove(Object o) { |
checkMutable(); |
@SuppressWarnings("unchecked") |
final K key = (K) o; |
final int index = binarySearchInArray(key); |
if (index >= 0) { |
return removeArrayEntryAt(index); |
} |
// overflowEntries might be Collections.unmodifiableMap(), so only |
// call remove() if it is non-empty. |
if (overflowEntries.isEmpty()) { |
return null; |
} else { |
return overflowEntries.remove(key); |
} |
} |
private V removeArrayEntryAt(int index) { |
checkMutable(); |
final V removed = entryList.remove(index).getValue(); |
if (!overflowEntries.isEmpty()) { |
// Shift the first entry in the overflow to be the last entry in the |
// array. |
final Iterator<Map.Entry<K, V>> iterator = |
getOverflowEntriesMutable().entrySet().iterator(); |
entryList.add(new Entry(iterator.next())); |
iterator.remove(); |
} |
return removed; |
} |
/** |
* @param key The key to find in the entry array. |
* @return The returned integer position follows the same semantics as the |
* value returned by {@link java.util.Arrays#binarySearch()}. |
*/ |
private int binarySearchInArray(K key) { |
int left = 0; |
int right = entryList.size() - 1; |
// Optimization: For the common case in which entries are added in |
// ascending tag order, check the largest element in the array before |
// doing a full binary search. |
if (right >= 0) { |
int cmp = key.compareTo(entryList.get(right).getKey()); |
if (cmp > 0) { |
return -(right + 2); // Insert point is after "right". |
} else if (cmp == 0) { |
return right; |
} |
} |
while (left <= right) { |
int mid = (left + right) / 2; |
int cmp = key.compareTo(entryList.get(mid).getKey()); |
if (cmp < 0) { |
right = mid - 1; |
} else if (cmp > 0) { |
left = mid + 1; |
} else { |
return mid; |
} |
} |
return -(left + 1); |
} |
/** |
* Similar to the AbstractMap implementation of {@code keySet()} and |
* {@code values()}, the entry set is created the first time this method is |
* called, and returned in response to all subsequent calls. |
* |
* {@inheritDoc} |
*/ |
@Override |
public Set<Map.Entry<K, V>> entrySet() { |
if (lazyEntrySet == null) { |
lazyEntrySet = new EntrySet(); |
} |
return lazyEntrySet; |
} |
/** |
* @throws UnsupportedOperationException if {@link #makeImmutable()} has |
* has been called. |
*/ |
private void checkMutable() { |
if (isImmutable) { |
throw new UnsupportedOperationException(); |
} |
} |
/** |
* @return a {@link SortedMap} to which overflow entries mappings can be |
* added or removed. |
* @throws UnsupportedOperationException if {@link #makeImmutable()} has been |
* called. |
*/ |
@SuppressWarnings("unchecked") |
private SortedMap<K, V> getOverflowEntriesMutable() { |
checkMutable(); |
if (overflowEntries.isEmpty() && !(overflowEntries instanceof TreeMap)) { |
overflowEntries = new TreeMap<K, V>(); |
} |
return (SortedMap<K, V>) overflowEntries; |
} |
/** |
* Lazily creates the entry list. Any code that adds to the list must first |
* call this method. |
*/ |
private void ensureEntryArrayMutable() { |
checkMutable(); |
if (entryList.isEmpty() && !(entryList instanceof ArrayList)) { |
entryList = new ArrayList<Entry>(maxArraySize); |
} |
} |
/** |
* Entry implementation that implements Comparable in order to support |
* binary search witin the entry array. Also checks mutability in |
* {@link #setValue()}. |
*/ |
private class Entry implements Map.Entry<K, V>, Comparable<Entry> { |
private final K key; |
private V value; |
Entry(Map.Entry<K, V> copy) { |
this(copy.getKey(), copy.getValue()); |
} |
Entry(K key, V value) { |
this.key = key; |
this.value = value; |
} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public K getKey() { |
return key; |
} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public V getValue() { |
return value; |
} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public int compareTo(Entry other) { |
return getKey().compareTo(other.getKey()); |
} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public V setValue(V newValue) { |
checkMutable(); |
final V oldValue = this.value; |
this.value = newValue; |
return oldValue; |
} |
@Override |
public boolean equals(Object o) { |
if (o == this) { |
return true; |
} |
if (!(o instanceof Map.Entry)) { |
return false; |
} |
@SuppressWarnings("unchecked") |
Map.Entry<?, ?> other = (Map.Entry<?, ?>) o; |
return equals(key, other.getKey()) && equals(value, other.getValue()); |
} |
@Override |
public int hashCode() { |
return (key == null ? 0 : key.hashCode()) ^ |
(value == null ? 0 : value.hashCode()); |
} |
@Override |
public String toString() { |
return key + "=" + value; |
} |
/** equals() that handles null values. */ |
private boolean equals(Object o1, Object o2) { |
return o1 == null ? o2 == null : o1.equals(o2); |
} |
} |
/** |
* Stateless view of the entries in the field map. |
*/ |
private class EntrySet extends AbstractSet<Map.Entry<K, V>> { |
@Override |
public Iterator<Map.Entry<K, V>> iterator() { |
return new EntryIterator(); |
} |
@Override |
public int size() { |
return SmallSortedMap.this.size(); |
} |
/** |
* Throws a {@link ClassCastException} if o is not of the expected type. |
* |
* {@inheritDoc} |
*/ |
@Override |
public boolean contains(Object o) { |
@SuppressWarnings("unchecked") |
final Map.Entry<K, V> entry = (Map.Entry<K, V>) o; |
final V existing = get(entry.getKey()); |
final V value = entry.getValue(); |
return existing == value || |
(existing != null && existing.equals(value)); |
} |
@Override |
public boolean add(Map.Entry<K, V> entry) { |
if (!contains(entry)) { |
put(entry.getKey(), entry.getValue()); |
return true; |
} |
return false; |
} |
/** |
* Throws a {@link ClassCastException} if o is not of the expected type. |
* |
* {@inheritDoc} |
*/ |
@Override |
public boolean remove(Object o) { |
@SuppressWarnings("unchecked") |
final Map.Entry<K, V> entry = (Map.Entry<K, V>) o; |
if (contains(entry)) { |
SmallSortedMap.this.remove(entry.getKey()); |
return true; |
} |
return false; |
} |
@Override |
public void clear() { |
SmallSortedMap.this.clear(); |
} |
} |
/** |
* Iterator implementation that switches from the entry array to the overflow |
* entries appropriately. |
*/ |
private class EntryIterator implements Iterator<Map.Entry<K, V>> { |
private int pos = -1; |
private boolean nextCalledBeforeRemove; |
private Iterator<Map.Entry<K, V>> lazyOverflowIterator; |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public boolean hasNext() { |
return (pos + 1) < entryList.size() || |
getOverflowIterator().hasNext(); |
} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public Map.Entry<K, V> next() { |
nextCalledBeforeRemove = true; |
// Always increment pos so that we know whether the last returned value |
// was from the array or from overflow. |
if (++pos < entryList.size()) { |
return entryList.get(pos); |
} |
return getOverflowIterator().next(); |
} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public void remove() { |
if (!nextCalledBeforeRemove) { |
throw new IllegalStateException("remove() was called before next()"); |
} |
nextCalledBeforeRemove = false; |
checkMutable(); |
if (pos < entryList.size()) { |
removeArrayEntryAt(pos--); |
} else { |
getOverflowIterator().remove(); |
} |
} |
/** |
* It is important to create the overflow iterator only after the array |
* entries have been iterated over because the overflow entry set changes |
* when the client calls remove() on the array entries, which invalidates |
* any existing iterators. |
*/ |
private Iterator<Map.Entry<K, V>> getOverflowIterator() { |
if (lazyOverflowIterator == null) { |
lazyOverflowIterator = overflowEntries.entrySet().iterator(); |
} |
return lazyOverflowIterator; |
} |
} |
/** |
* Helper class that holds immutable instances of an Iterable/Iterator that |
* we return when the overflow entries is empty. This eliminates the creation |
* of an Iterator object when there is nothing to iterate over. |
*/ |
private static class EmptySet { |
private static final Iterator<Object> ITERATOR = new Iterator<Object>() { |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public boolean hasNext() { |
return false; |
} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public Object next() { |
throw new NoSuchElementException(); |
} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public void remove() { |
throw new UnsupportedOperationException(); |
} |
}; |
private static final Iterable<Object> ITERABLE = new Iterable<Object>() { |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public Iterator<Object> iterator() { |
return ITERATOR; |
} |
}; |
@SuppressWarnings("unchecked") |
static <T> Iterable<T> iterable() { |
return (Iterable<T>) ITERABLE; |
} |
} |
} |
/Android Development/IOIODebugger/src/com/google/protobuf/TextFormat.java |
---|
0,0 → 1,1476 |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
// |
// * Redistributions of source code must retain the above copyright |
// notice, this list of conditions and the following disclaimer. |
// * Redistributions in binary form must reproduce the above |
// copyright notice, this list of conditions and the following disclaimer |
// in the documentation and/or other materials provided with the |
// distribution. |
// * Neither the name of Google Inc. nor the names of its |
// contributors may be used to endorse or promote products derived from |
// this software without specific prior written permission. |
// |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
package com.google.protobuf; |
import com.google.protobuf.Descriptors.Descriptor; |
import com.google.protobuf.Descriptors.FieldDescriptor; |
import com.google.protobuf.Descriptors.EnumDescriptor; |
import com.google.protobuf.Descriptors.EnumValueDescriptor; |
import java.io.IOException; |
import java.nio.CharBuffer; |
import java.math.BigInteger; |
import java.util.ArrayList; |
import java.util.List; |
import java.util.Locale; |
import java.util.Map; |
import java.util.regex.Matcher; |
import java.util.regex.Pattern; |
/** |
* Provide text parsing and formatting support for proto2 instances. |
* The implementation largely follows google/protobuf/text_format.cc. |
* |
* @author wenboz@google.com Wenbo Zhu |
* @author kenton@google.com Kenton Varda |
*/ |
public final class TextFormat { |
private TextFormat() {} |
private static final Printer DEFAULT_PRINTER = new Printer(false); |
private static final Printer SINGLE_LINE_PRINTER = new Printer(true); |
/** |
* Outputs a textual representation of the Protocol Message supplied into |
* the parameter output. (This representation is the new version of the |
* classic "ProtocolPrinter" output from the original Protocol Buffer system) |
*/ |
public static void print(final Message message, final Appendable output) |
throws IOException { |
DEFAULT_PRINTER.print(message, new TextGenerator(output)); |
} |
/** Outputs a textual representation of {@code fields} to {@code output}. */ |
public static void print(final UnknownFieldSet fields, |
final Appendable output) |
throws IOException { |
DEFAULT_PRINTER.printUnknownFields(fields, new TextGenerator(output)); |
} |
/** |
* Generates a human readable form of this message, useful for debugging and |
* other purposes, with no newline characters. |
*/ |
public static String shortDebugString(final Message message) { |
try { |
final StringBuilder sb = new StringBuilder(); |
SINGLE_LINE_PRINTER.print(message, new TextGenerator(sb)); |
// Single line mode currently might have an extra space at the end. |
return sb.toString().trim(); |
} catch (IOException e) { |
throw new IllegalStateException(e); |
} |
} |
/** |
* Generates a human readable form of the unknown fields, useful for debugging |
* and other purposes, with no newline characters. |
*/ |
public static String shortDebugString(final UnknownFieldSet fields) { |
try { |
final StringBuilder sb = new StringBuilder(); |
SINGLE_LINE_PRINTER.printUnknownFields(fields, new TextGenerator(sb)); |
// Single line mode currently might have an extra space at the end. |
return sb.toString().trim(); |
} catch (IOException e) { |
throw new IllegalStateException(e); |
} |
} |
/** |
* Like {@code print()}, but writes directly to a {@code String} and |
* returns it. |
*/ |
public static String printToString(final Message message) { |
try { |
final StringBuilder text = new StringBuilder(); |
print(message, text); |
return text.toString(); |
} catch (IOException e) { |
throw new IllegalStateException(e); |
} |
} |
/** |
* Like {@code print()}, but writes directly to a {@code String} and |
* returns it. |
*/ |
public static String printToString(final UnknownFieldSet fields) { |
try { |
final StringBuilder text = new StringBuilder(); |
print(fields, text); |
return text.toString(); |
} catch (IOException e) { |
throw new IllegalStateException(e); |
} |
} |
public static void printField(final FieldDescriptor field, |
final Object value, |
final Appendable output) |
throws IOException { |
DEFAULT_PRINTER.printField(field, value, new TextGenerator(output)); |
} |
public static String printFieldToString(final FieldDescriptor field, |
final Object value) { |
try { |
final StringBuilder text = new StringBuilder(); |
printField(field, value, text); |
return text.toString(); |
} catch (IOException e) { |
throw new IllegalStateException(e); |
} |
} |
/** |
* Outputs a textual representation of the value of given field value. |
* |
* @param field the descriptor of the field |
* @param value the value of the field |
* @param output the output to which to append the formatted value |
* @throws ClassCastException if the value is not appropriate for the |
* given field descriptor |
* @throws IOException if there is an exception writing to the output |
*/ |
public static void printFieldValue(final FieldDescriptor field, |
final Object value, |
final Appendable output) |
throws IOException { |
DEFAULT_PRINTER.printFieldValue(field, value, new TextGenerator(output)); |
} |
/** |
* Outputs a textual representation of the value of an unknown field. |
* |
* @param tag the field's tag number |
* @param value the value of the field |
* @param output the output to which to append the formatted value |
* @throws ClassCastException if the value is not appropriate for the |
* given field descriptor |
* @throws IOException if there is an exception writing to the output |
*/ |
public static void printUnknownFieldValue(final int tag, |
final Object value, |
final Appendable output) |
throws IOException { |
printUnknownFieldValue(tag, value, new TextGenerator(output)); |
} |
private static void printUnknownFieldValue(final int tag, |
final Object value, |
final TextGenerator generator) |
throws IOException { |
switch (WireFormat.getTagWireType(tag)) { |
case WireFormat.WIRETYPE_VARINT: |
generator.print(unsignedToString((Long) value)); |
break; |
case WireFormat.WIRETYPE_FIXED32: |
generator.print( |
String.format((Locale) null, "0x%08x", (Integer) value)); |
break; |
case WireFormat.WIRETYPE_FIXED64: |
generator.print(String.format((Locale) null, "0x%016x", (Long) value)); |
break; |
case WireFormat.WIRETYPE_LENGTH_DELIMITED: |
generator.print("\""); |
generator.print(escapeBytes((ByteString) value)); |
generator.print("\""); |
break; |
case WireFormat.WIRETYPE_START_GROUP: |
DEFAULT_PRINTER.printUnknownFields((UnknownFieldSet) value, generator); |
break; |
default: |
throw new IllegalArgumentException("Bad tag: " + tag); |
} |
} |
/** Helper class for converting protobufs to text. */ |
private static final class Printer { |
/** Whether to omit newlines from the output. */ |
final boolean singleLineMode; |
private Printer(final boolean singleLineMode) { |
this.singleLineMode = singleLineMode; |
} |
private void print(final Message message, final TextGenerator generator) |
throws IOException { |
for (Map.Entry<FieldDescriptor, Object> field |
: message.getAllFields().entrySet()) { |
printField(field.getKey(), field.getValue(), generator); |
} |
printUnknownFields(message.getUnknownFields(), generator); |
} |
private void printField(final FieldDescriptor field, final Object value, |
final TextGenerator generator) throws IOException { |
if (field.isRepeated()) { |
// Repeated field. Print each element. |
for (Object element : (List<?>) value) { |
printSingleField(field, element, generator); |
} |
} else { |
printSingleField(field, value, generator); |
} |
} |
private void printSingleField(final FieldDescriptor field, |
final Object value, |
final TextGenerator generator) |
throws IOException { |
if (field.isExtension()) { |
generator.print("["); |
// We special-case MessageSet elements for compatibility with proto1. |
if (field.getContainingType().getOptions().getMessageSetWireFormat() |
&& (field.getType() == FieldDescriptor.Type.MESSAGE) |
&& (field.isOptional()) |
// object equality |
&& (field.getExtensionScope() == field.getMessageType())) { |
generator.print(field.getMessageType().getFullName()); |
} else { |
generator.print(field.getFullName()); |
} |
generator.print("]"); |
} else { |
if (field.getType() == FieldDescriptor.Type.GROUP) { |
// Groups must be serialized with their original capitalization. |
generator.print(field.getMessageType().getName()); |
} else { |
generator.print(field.getName()); |
} |
} |
if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { |
if (singleLineMode) { |
generator.print(" { "); |
} else { |
generator.print(" {\n"); |
generator.indent(); |
} |
} else { |
generator.print(": "); |
} |
printFieldValue(field, value, generator); |
if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { |
if (singleLineMode) { |
generator.print("} "); |
} else { |
generator.outdent(); |
generator.print("}\n"); |
} |
} else { |
if (singleLineMode) { |
generator.print(" "); |
} else { |
generator.print("\n"); |
} |
} |
} |
private void printFieldValue(final FieldDescriptor field, |
final Object value, |
final TextGenerator generator) |
throws IOException { |
switch (field.getType()) { |
case INT32: |
case SINT32: |
case SFIXED32: |
generator.print(((Integer) value).toString()); |
break; |
case INT64: |
case SINT64: |
case SFIXED64: |
generator.print(((Long) value).toString()); |
break; |
case BOOL: |
generator.print(((Boolean) value).toString()); |
break; |
case FLOAT: |
generator.print(((Float) value).toString()); |
break; |
case DOUBLE: |
generator.print(((Double) value).toString()); |
break; |
case UINT32: |
case FIXED32: |
generator.print(unsignedToString((Integer) value)); |
break; |
case UINT64: |
case FIXED64: |
generator.print(unsignedToString((Long) value)); |
break; |
case STRING: |
generator.print("\""); |
generator.print(escapeText((String) value)); |
generator.print("\""); |
break; |
case BYTES: |
generator.print("\""); |
generator.print(escapeBytes((ByteString) value)); |
generator.print("\""); |
break; |
case ENUM: |
generator.print(((EnumValueDescriptor) value).getName()); |
break; |
case MESSAGE: |
case GROUP: |
print((Message) value, generator); |
break; |
} |
} |
private void printUnknownFields(final UnknownFieldSet unknownFields, |
final TextGenerator generator) |
throws IOException { |
for (Map.Entry<Integer, UnknownFieldSet.Field> entry : |
unknownFields.asMap().entrySet()) { |
final int number = entry.getKey(); |
final UnknownFieldSet.Field field = entry.getValue(); |
printUnknownField(number, WireFormat.WIRETYPE_VARINT, |
field.getVarintList(), generator); |
printUnknownField(number, WireFormat.WIRETYPE_FIXED32, |
field.getFixed32List(), generator); |
printUnknownField(number, WireFormat.WIRETYPE_FIXED64, |
field.getFixed64List(), generator); |
printUnknownField(number, WireFormat.WIRETYPE_LENGTH_DELIMITED, |
field.getLengthDelimitedList(), generator); |
for (final UnknownFieldSet value : field.getGroupList()) { |
generator.print(entry.getKey().toString()); |
if (singleLineMode) { |
generator.print(" { "); |
} else { |
generator.print(" {\n"); |
generator.indent(); |
} |
printUnknownFields(value, generator); |
if (singleLineMode) { |
generator.print("} "); |
} else { |
generator.outdent(); |
generator.print("}\n"); |
} |
} |
} |
} |
private void printUnknownField(final int number, |
final int wireType, |
final List<?> values, |
final TextGenerator generator) |
throws IOException { |
for (final Object value : values) { |
generator.print(String.valueOf(number)); |
generator.print(": "); |
printUnknownFieldValue(wireType, value, generator); |
generator.print(singleLineMode ? " " : "\n"); |
} |
} |
} |
/** Convert an unsigned 32-bit integer to a string. */ |
private static String unsignedToString(final int value) { |
if (value >= 0) { |
return Integer.toString(value); |
} else { |
return Long.toString(((long) value) & 0x00000000FFFFFFFFL); |
} |
} |
/** Convert an unsigned 64-bit integer to a string. */ |
private static String unsignedToString(final long value) { |
if (value >= 0) { |
return Long.toString(value); |
} else { |
// Pull off the most-significant bit so that BigInteger doesn't think |
// the number is negative, then set it again using setBit(). |
return BigInteger.valueOf(value & 0x7FFFFFFFFFFFFFFFL) |
.setBit(63).toString(); |
} |
} |
/** |
* An inner class for writing text to the output stream. |
*/ |
private static final class TextGenerator { |
private final Appendable output; |
private final StringBuilder indent = new StringBuilder(); |
private boolean atStartOfLine = true; |
private TextGenerator(final Appendable output) { |
this.output = output; |
} |
/** |
* Indent text by two spaces. After calling Indent(), two spaces will be |
* inserted at the beginning of each line of text. Indent() may be called |
* multiple times to produce deeper indents. |
*/ |
public void indent() { |
indent.append(" "); |
} |
/** |
* Reduces the current indent level by two spaces, or crashes if the indent |
* level is zero. |
*/ |
public void outdent() { |
final int length = indent.length(); |
if (length == 0) { |
throw new IllegalArgumentException( |
" Outdent() without matching Indent()."); |
} |
indent.delete(length - 2, length); |
} |
/** |
* Print text to the output stream. |
*/ |
public void print(final CharSequence text) throws IOException { |
final int size = text.length(); |
int pos = 0; |
for (int i = 0; i < size; i++) { |
if (text.charAt(i) == '\n') { |
write(text.subSequence(pos, size), i - pos + 1); |
pos = i + 1; |
atStartOfLine = true; |
} |
} |
write(text.subSequence(pos, size), size - pos); |
} |
private void write(final CharSequence data, final int size) |
throws IOException { |
if (size == 0) { |
return; |
} |
if (atStartOfLine) { |
atStartOfLine = false; |
output.append(indent); |
} |
output.append(data); |
} |
} |
// ================================================================= |
// Parsing |
/** |
* Represents a stream of tokens parsed from a {@code String}. |
* |
* <p>The Java standard library provides many classes that you might think |
* would be useful for implementing this, but aren't. For example: |
* |
* <ul> |
* <li>{@code java.io.StreamTokenizer}: This almost does what we want -- or, |
* at least, something that would get us close to what we want -- except |
* for one fatal flaw: It automatically un-escapes strings using Java |
* escape sequences, which do not include all the escape sequences we |
* need to support (e.g. '\x'). |
* <li>{@code java.util.Scanner}: This seems like a great way at least to |
* parse regular expressions out of a stream (so we wouldn't have to load |
* the entire input into a single string before parsing). Sadly, |
* {@code Scanner} requires that tokens be delimited with some delimiter. |
* Thus, although the text "foo:" should parse to two tokens ("foo" and |
* ":"), {@code Scanner} would recognize it only as a single token. |
* Furthermore, {@code Scanner} provides no way to inspect the contents |
* of delimiters, making it impossible to keep track of line and column |
* numbers. |
* </ul> |
* |
* <p>Luckily, Java's regular expression support does manage to be useful to |
* us. (Barely: We need {@code Matcher.usePattern()}, which is new in |
* Java 1.5.) So, we can use that, at least. Unfortunately, this implies |
* that we need to have the entire input in one contiguous string. |
*/ |
private static final class Tokenizer { |
private final CharSequence text; |
private final Matcher matcher; |
private String currentToken; |
// The character index within this.text at which the current token begins. |
private int pos = 0; |
// The line and column numbers of the current token. |
private int line = 0; |
private int column = 0; |
// The line and column numbers of the previous token (allows throwing |
// errors *after* consuming). |
private int previousLine = 0; |
private int previousColumn = 0; |
// We use possesive quantifiers (*+ and ++) because otherwise the Java |
// regex matcher has stack overflows on large inputs. |
private static final Pattern WHITESPACE = |
Pattern.compile("(\\s|(#.*$))++", Pattern.MULTILINE); |
private static final Pattern TOKEN = Pattern.compile( |
"[a-zA-Z_][0-9a-zA-Z_+-]*+|" + // an identifier |
"[.]?[0-9+-][0-9a-zA-Z_.+-]*+|" + // a number |
"\"([^\"\n\\\\]|\\\\.)*+(\"|\\\\?$)|" + // a double-quoted string |
"\'([^\'\n\\\\]|\\\\.)*+(\'|\\\\?$)", // a single-quoted string |
Pattern.MULTILINE); |
private static final Pattern DOUBLE_INFINITY = Pattern.compile( |
"-?inf(inity)?", |
Pattern.CASE_INSENSITIVE); |
private static final Pattern FLOAT_INFINITY = Pattern.compile( |
"-?inf(inity)?f?", |
Pattern.CASE_INSENSITIVE); |
private static final Pattern FLOAT_NAN = Pattern.compile( |
"nanf?", |
Pattern.CASE_INSENSITIVE); |
/** Construct a tokenizer that parses tokens from the given text. */ |
private Tokenizer(final CharSequence text) { |
this.text = text; |
this.matcher = WHITESPACE.matcher(text); |
skipWhitespace(); |
nextToken(); |
} |
/** Are we at the end of the input? */ |
public boolean atEnd() { |
return currentToken.length() == 0; |
} |
/** Advance to the next token. */ |
public void nextToken() { |
previousLine = line; |
previousColumn = column; |
// Advance the line counter to the current position. |
while (pos < matcher.regionStart()) { |
if (text.charAt(pos) == '\n') { |
++line; |
column = 0; |
} else { |
++column; |
} |
++pos; |
} |
// Match the next token. |
if (matcher.regionStart() == matcher.regionEnd()) { |
// EOF |
currentToken = ""; |
} else { |
matcher.usePattern(TOKEN); |
if (matcher.lookingAt()) { |
currentToken = matcher.group(); |
matcher.region(matcher.end(), matcher.regionEnd()); |
} else { |
// Take one character. |
currentToken = String.valueOf(text.charAt(pos)); |
matcher.region(pos + 1, matcher.regionEnd()); |
} |
skipWhitespace(); |
} |
} |
/** |
* Skip over any whitespace so that the matcher region starts at the next |
* token. |
*/ |
private void skipWhitespace() { |
matcher.usePattern(WHITESPACE); |
if (matcher.lookingAt()) { |
matcher.region(matcher.end(), matcher.regionEnd()); |
} |
} |
/** |
* If the next token exactly matches {@code token}, consume it and return |
* {@code true}. Otherwise, return {@code false} without doing anything. |
*/ |
public boolean tryConsume(final String token) { |
if (currentToken.equals(token)) { |
nextToken(); |
return true; |
} else { |
return false; |
} |
} |
/** |
* If the next token exactly matches {@code token}, consume it. Otherwise, |
* throw a {@link ParseException}. |
*/ |
public void consume(final String token) throws ParseException { |
if (!tryConsume(token)) { |
throw parseException("Expected \"" + token + "\"."); |
} |
} |
/** |
* Returns {@code true} if the next token is an integer, but does |
* not consume it. |
*/ |
public boolean lookingAtInteger() { |
if (currentToken.length() == 0) { |
return false; |
} |
final char c = currentToken.charAt(0); |
return ('0' <= c && c <= '9') || |
c == '-' || c == '+'; |
} |
/** |
* If the next token is an identifier, consume it and return its value. |
* Otherwise, throw a {@link ParseException}. |
*/ |
public String consumeIdentifier() throws ParseException { |
for (int i = 0; i < currentToken.length(); i++) { |
final char c = currentToken.charAt(i); |
if (('a' <= c && c <= 'z') || |
('A' <= c && c <= 'Z') || |
('0' <= c && c <= '9') || |
(c == '_') || (c == '.')) { |
// OK |
} else { |
throw parseException("Expected identifier."); |
} |
} |
final String result = currentToken; |
nextToken(); |
return result; |
} |
/** |
* If the next token is a 32-bit signed integer, consume it and return its |
* value. Otherwise, throw a {@link ParseException}. |
*/ |
public int consumeInt32() throws ParseException { |
try { |
final int result = parseInt32(currentToken); |
nextToken(); |
return result; |
} catch (NumberFormatException e) { |
throw integerParseException(e); |
} |
} |
/** |
* If the next token is a 32-bit unsigned integer, consume it and return its |
* value. Otherwise, throw a {@link ParseException}. |
*/ |
public int consumeUInt32() throws ParseException { |
try { |
final int result = parseUInt32(currentToken); |
nextToken(); |
return result; |
} catch (NumberFormatException e) { |
throw integerParseException(e); |
} |
} |
/** |
* If the next token is a 64-bit signed integer, consume it and return its |
* value. Otherwise, throw a {@link ParseException}. |
*/ |
public long consumeInt64() throws ParseException { |
try { |
final long result = parseInt64(currentToken); |
nextToken(); |
return result; |
} catch (NumberFormatException e) { |
throw integerParseException(e); |
} |
} |
/** |
* If the next token is a 64-bit unsigned integer, consume it and return its |
* value. Otherwise, throw a {@link ParseException}. |
*/ |
public long consumeUInt64() throws ParseException { |
try { |
final long result = parseUInt64(currentToken); |
nextToken(); |
return result; |
} catch (NumberFormatException e) { |
throw integerParseException(e); |
} |
} |
/** |
* If the next token is a double, consume it and return its value. |
* Otherwise, throw a {@link ParseException}. |
*/ |
public double consumeDouble() throws ParseException { |
// We need to parse infinity and nan separately because |
// Double.parseDouble() does not accept "inf", "infinity", or "nan". |
if (DOUBLE_INFINITY.matcher(currentToken).matches()) { |
final boolean negative = currentToken.startsWith("-"); |
nextToken(); |
return negative ? Double.NEGATIVE_INFINITY : Double.POSITIVE_INFINITY; |
} |
if (currentToken.equalsIgnoreCase("nan")) { |
nextToken(); |
return Double.NaN; |
} |
try { |
final double result = Double.parseDouble(currentToken); |
nextToken(); |
return result; |
} catch (NumberFormatException e) { |
throw floatParseException(e); |
} |
} |
/** |
* If the next token is a float, consume it and return its value. |
* Otherwise, throw a {@link ParseException}. |
*/ |
public float consumeFloat() throws ParseException { |
// We need to parse infinity and nan separately because |
// Float.parseFloat() does not accept "inf", "infinity", or "nan". |
if (FLOAT_INFINITY.matcher(currentToken).matches()) { |
final boolean negative = currentToken.startsWith("-"); |
nextToken(); |
return negative ? Float.NEGATIVE_INFINITY : Float.POSITIVE_INFINITY; |
} |
if (FLOAT_NAN.matcher(currentToken).matches()) { |
nextToken(); |
return Float.NaN; |
} |
try { |
final float result = Float.parseFloat(currentToken); |
nextToken(); |
return result; |
} catch (NumberFormatException e) { |
throw floatParseException(e); |
} |
} |
/** |
* If the next token is a boolean, consume it and return its value. |
* Otherwise, throw a {@link ParseException}. |
*/ |
public boolean consumeBoolean() throws ParseException { |
if (currentToken.equals("true") || |
currentToken.equals("t") || |
currentToken.equals("1")) { |
nextToken(); |
return true; |
} else if (currentToken.equals("false") || |
currentToken.equals("f") || |
currentToken.equals("0")) { |
nextToken(); |
return false; |
} else { |
throw parseException("Expected \"true\" or \"false\"."); |
} |
} |
/** |
* If the next token is a string, consume it and return its (unescaped) |
* value. Otherwise, throw a {@link ParseException}. |
*/ |
public String consumeString() throws ParseException { |
return consumeByteString().toStringUtf8(); |
} |
/** |
* If the next token is a string, consume it, unescape it as a |
* {@link ByteString}, and return it. Otherwise, throw a |
* {@link ParseException}. |
*/ |
public ByteString consumeByteString() throws ParseException { |
List<ByteString> list = new ArrayList<ByteString>(); |
consumeByteString(list); |
while (currentToken.startsWith("'") || currentToken.startsWith("\"")) { |
consumeByteString(list); |
} |
return ByteString.copyFrom(list); |
} |
/** |
* Like {@link #consumeByteString()} but adds each token of the string to |
* the given list. String literals (whether bytes or text) may come in |
* multiple adjacent tokens which are automatically concatenated, like in |
* C or Python. |
*/ |
private void consumeByteString(List<ByteString> list) throws ParseException { |
final char quote = currentToken.length() > 0 ? currentToken.charAt(0) |
: '\0'; |
if (quote != '\"' && quote != '\'') { |
throw parseException("Expected string."); |
} |
if (currentToken.length() < 2 || |
currentToken.charAt(currentToken.length() - 1) != quote) { |
throw parseException("String missing ending quote."); |
} |
try { |
final String escaped = |
currentToken.substring(1, currentToken.length() - 1); |
final ByteString result = unescapeBytes(escaped); |
nextToken(); |
list.add(result); |
} catch (InvalidEscapeSequenceException e) { |
throw parseException(e.getMessage()); |
} |
} |
/** |
* Returns a {@link ParseException} with the current line and column |
* numbers in the description, suitable for throwing. |
*/ |
public ParseException parseException(final String description) { |
// Note: People generally prefer one-based line and column numbers. |
return new ParseException( |
(line + 1) + ":" + (column + 1) + ": " + description); |
} |
/** |
* Returns a {@link ParseException} with the line and column numbers of |
* the previous token in the description, suitable for throwing. |
*/ |
public ParseException parseExceptionPreviousToken( |
final String description) { |
// Note: People generally prefer one-based line and column numbers. |
return new ParseException( |
(previousLine + 1) + ":" + (previousColumn + 1) + ": " + description); |
} |
/** |
* Constructs an appropriate {@link ParseException} for the given |
* {@code NumberFormatException} when trying to parse an integer. |
*/ |
private ParseException integerParseException( |
final NumberFormatException e) { |
return parseException("Couldn't parse integer: " + e.getMessage()); |
} |
/** |
* Constructs an appropriate {@link ParseException} for the given |
* {@code NumberFormatException} when trying to parse a float or double. |
*/ |
private ParseException floatParseException(final NumberFormatException e) { |
return parseException("Couldn't parse number: " + e.getMessage()); |
} |
} |
/** Thrown when parsing an invalid text format message. */ |
public static class ParseException extends IOException { |
private static final long serialVersionUID = 3196188060225107702L; |
public ParseException(final String message) { |
super(message); |
} |
} |
/** |
* Parse a text-format message from {@code input} and merge the contents |
* into {@code builder}. |
*/ |
public static void merge(final Readable input, |
final Message.Builder builder) |
throws IOException { |
merge(input, ExtensionRegistry.getEmptyRegistry(), builder); |
} |
/** |
* Parse a text-format message from {@code input} and merge the contents |
* into {@code builder}. |
*/ |
public static void merge(final CharSequence input, |
final Message.Builder builder) |
throws ParseException { |
merge(input, ExtensionRegistry.getEmptyRegistry(), builder); |
} |
/** |
* Parse a text-format message from {@code input} and merge the contents |
* into {@code builder}. Extensions will be recognized if they are |
* registered in {@code extensionRegistry}. |
*/ |
public static void merge(final Readable input, |
final ExtensionRegistry extensionRegistry, |
final Message.Builder builder) |
throws IOException { |
// Read the entire input to a String then parse that. |
// If StreamTokenizer were not quite so crippled, or if there were a kind |
// of Reader that could read in chunks that match some particular regex, |
// or if we wanted to write a custom Reader to tokenize our stream, then |
// we would not have to read to one big String. Alas, none of these is |
// the case. Oh well. |
merge(toStringBuilder(input), extensionRegistry, builder); |
} |
private static final int BUFFER_SIZE = 4096; |
// TODO(chrisn): See if working around java.io.Reader#read(CharBuffer) |
// overhead is worthwhile |
private static StringBuilder toStringBuilder(final Readable input) |
throws IOException { |
final StringBuilder text = new StringBuilder(); |
final CharBuffer buffer = CharBuffer.allocate(BUFFER_SIZE); |
while (true) { |
final int n = input.read(buffer); |
if (n == -1) { |
break; |
} |
buffer.flip(); |
text.append(buffer, 0, n); |
} |
return text; |
} |
/** |
* Parse a text-format message from {@code input} and merge the contents |
* into {@code builder}. Extensions will be recognized if they are |
* registered in {@code extensionRegistry}. |
*/ |
public static void merge(final CharSequence input, |
final ExtensionRegistry extensionRegistry, |
final Message.Builder builder) |
throws ParseException { |
final Tokenizer tokenizer = new Tokenizer(input); |
while (!tokenizer.atEnd()) { |
mergeField(tokenizer, extensionRegistry, builder); |
} |
} |
/** |
* Parse a single field from {@code tokenizer} and merge it into |
* {@code builder}. |
*/ |
private static void mergeField(final Tokenizer tokenizer, |
final ExtensionRegistry extensionRegistry, |
final Message.Builder builder) |
throws ParseException { |
FieldDescriptor field; |
final Descriptor type = builder.getDescriptorForType(); |
ExtensionRegistry.ExtensionInfo extension = null; |
if (tokenizer.tryConsume("[")) { |
// An extension. |
final StringBuilder name = |
new StringBuilder(tokenizer.consumeIdentifier()); |
while (tokenizer.tryConsume(".")) { |
name.append('.'); |
name.append(tokenizer.consumeIdentifier()); |
} |
extension = extensionRegistry.findExtensionByName(name.toString()); |
if (extension == null) { |
throw tokenizer.parseExceptionPreviousToken( |
"Extension \"" + name + "\" not found in the ExtensionRegistry."); |
} else if (extension.descriptor.getContainingType() != type) { |
throw tokenizer.parseExceptionPreviousToken( |
"Extension \"" + name + "\" does not extend message type \"" + |
type.getFullName() + "\"."); |
} |
tokenizer.consume("]"); |
field = extension.descriptor; |
} else { |
final String name = tokenizer.consumeIdentifier(); |
field = type.findFieldByName(name); |
// Group names are expected to be capitalized as they appear in the |
// .proto file, which actually matches their type names, not their field |
// names. |
if (field == null) { |
// Explicitly specify US locale so that this code does not break when |
// executing in Turkey. |
final String lowerName = name.toLowerCase(Locale.US); |
field = type.findFieldByName(lowerName); |
// If the case-insensitive match worked but the field is NOT a group, |
if (field != null && field.getType() != FieldDescriptor.Type.GROUP) { |
field = null; |
} |
} |
// Again, special-case group names as described above. |
if (field != null && field.getType() == FieldDescriptor.Type.GROUP && |
!field.getMessageType().getName().equals(name)) { |
field = null; |
} |
if (field == null) { |
throw tokenizer.parseExceptionPreviousToken( |
"Message type \"" + type.getFullName() + |
"\" has no field named \"" + name + "\"."); |
} |
} |
Object value = null; |
if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { |
tokenizer.tryConsume(":"); // optional |
final String endToken; |
if (tokenizer.tryConsume("<")) { |
endToken = ">"; |
} else { |
tokenizer.consume("{"); |
endToken = "}"; |
} |
final Message.Builder subBuilder; |
if (extension == null) { |
subBuilder = builder.newBuilderForField(field); |
} else { |
subBuilder = extension.defaultInstance.newBuilderForType(); |
} |
while (!tokenizer.tryConsume(endToken)) { |
if (tokenizer.atEnd()) { |
throw tokenizer.parseException( |
"Expected \"" + endToken + "\"."); |
} |
mergeField(tokenizer, extensionRegistry, subBuilder); |
} |
value = subBuilder.build(); |
} else { |
tokenizer.consume(":"); |
switch (field.getType()) { |
case INT32: |
case SINT32: |
case SFIXED32: |
value = tokenizer.consumeInt32(); |
break; |
case INT64: |
case SINT64: |
case SFIXED64: |
value = tokenizer.consumeInt64(); |
break; |
case UINT32: |
case FIXED32: |
value = tokenizer.consumeUInt32(); |
break; |
case UINT64: |
case FIXED64: |
value = tokenizer.consumeUInt64(); |
break; |
case FLOAT: |
value = tokenizer.consumeFloat(); |
break; |
case DOUBLE: |
value = tokenizer.consumeDouble(); |
break; |
case BOOL: |
value = tokenizer.consumeBoolean(); |
break; |
case STRING: |
value = tokenizer.consumeString(); |
break; |
case BYTES: |
value = tokenizer.consumeByteString(); |
break; |
case ENUM: |
final EnumDescriptor enumType = field.getEnumType(); |
if (tokenizer.lookingAtInteger()) { |
final int number = tokenizer.consumeInt32(); |
value = enumType.findValueByNumber(number); |
if (value == null) { |
throw tokenizer.parseExceptionPreviousToken( |
"Enum type \"" + enumType.getFullName() + |
"\" has no value with number " + number + '.'); |
} |
} else { |
final String id = tokenizer.consumeIdentifier(); |
value = enumType.findValueByName(id); |
if (value == null) { |
throw tokenizer.parseExceptionPreviousToken( |
"Enum type \"" + enumType.getFullName() + |
"\" has no value named \"" + id + "\"."); |
} |
} |
break; |
case MESSAGE: |
case GROUP: |
throw new RuntimeException("Can't get here."); |
} |
} |
if (field.isRepeated()) { |
builder.addRepeatedField(field, value); |
} else { |
builder.setField(field, value); |
} |
} |
// ================================================================= |
// Utility functions |
// |
// Some of these methods are package-private because Descriptors.java uses |
// them. |
/** |
* Escapes bytes in the format used in protocol buffer text format, which |
* is the same as the format used for C string literals. All bytes |
* that are not printable 7-bit ASCII characters are escaped, as well as |
* backslash, single-quote, and double-quote characters. Characters for |
* which no defined short-hand escape sequence is defined will be escaped |
* using 3-digit octal sequences. |
*/ |
static String escapeBytes(final ByteString input) { |
final StringBuilder builder = new StringBuilder(input.size()); |
for (int i = 0; i < input.size(); i++) { |
final byte b = input.byteAt(i); |
switch (b) { |
// Java does not recognize \a or \v, apparently. |
case 0x07: builder.append("\\a" ); break; |
case '\b': builder.append("\\b" ); break; |
case '\f': builder.append("\\f" ); break; |
case '\n': builder.append("\\n" ); break; |
case '\r': builder.append("\\r" ); break; |
case '\t': builder.append("\\t" ); break; |
case 0x0b: builder.append("\\v" ); break; |
case '\\': builder.append("\\\\"); break; |
case '\'': builder.append("\\\'"); break; |
case '"' : builder.append("\\\""); break; |
default: |
// Note: Bytes with the high-order bit set should be escaped. Since |
// bytes are signed, such bytes will compare less than 0x20, hence |
// the following line is correct. |
if (b >= 0x20) { |
builder.append((char) b); |
} else { |
builder.append('\\'); |
builder.append((char) ('0' + ((b >>> 6) & 3))); |
builder.append((char) ('0' + ((b >>> 3) & 7))); |
builder.append((char) ('0' + (b & 7))); |
} |
break; |
} |
} |
return builder.toString(); |
} |
/** |
* Un-escape a byte sequence as escaped using |
* {@link #escapeBytes(ByteString)}. Two-digit hex escapes (starting with |
* "\x") are also recognized. |
*/ |
static ByteString unescapeBytes(final CharSequence charString) |
throws InvalidEscapeSequenceException { |
// First convert the Java characater sequence to UTF-8 bytes. |
ByteString input = ByteString.copyFromUtf8(charString.toString()); |
// Then unescape certain byte sequences introduced by ASCII '\\'. The valid |
// escapes can all be expressed with ASCII characters, so it is safe to |
// operate on bytes here. |
// |
// Unescaping the input byte array will result in a byte sequence that's no |
// longer than the input. That's because each escape sequence is between |
// two and four bytes long and stands for a single byte. |
final byte[] result = new byte[input.size()]; |
int pos = 0; |
for (int i = 0; i < input.size(); i++) { |
byte c = input.byteAt(i); |
if (c == '\\') { |
if (i + 1 < input.size()) { |
++i; |
c = input.byteAt(i); |
if (isOctal(c)) { |
// Octal escape. |
int code = digitValue(c); |
if (i + 1 < input.size() && isOctal(input.byteAt(i + 1))) { |
++i; |
code = code * 8 + digitValue(input.byteAt(i)); |
} |
if (i + 1 < input.size() && isOctal(input.byteAt(i + 1))) { |
++i; |
code = code * 8 + digitValue(input.byteAt(i)); |
} |
// TODO: Check that 0 <= code && code <= 0xFF. |
result[pos++] = (byte)code; |
} else { |
switch (c) { |
case 'a' : result[pos++] = 0x07; break; |
case 'b' : result[pos++] = '\b'; break; |
case 'f' : result[pos++] = '\f'; break; |
case 'n' : result[pos++] = '\n'; break; |
case 'r' : result[pos++] = '\r'; break; |
case 't' : result[pos++] = '\t'; break; |
case 'v' : result[pos++] = 0x0b; break; |
case '\\': result[pos++] = '\\'; break; |
case '\'': result[pos++] = '\''; break; |
case '"' : result[pos++] = '\"'; break; |
case 'x': |
// hex escape |
int code = 0; |
if (i + 1 < input.size() && isHex(input.byteAt(i + 1))) { |
++i; |
code = digitValue(input.byteAt(i)); |
} else { |
throw new InvalidEscapeSequenceException( |
"Invalid escape sequence: '\\x' with no digits"); |
} |
if (i + 1 < input.size() && isHex(input.byteAt(i + 1))) { |
++i; |
code = code * 16 + digitValue(input.byteAt(i)); |
} |
result[pos++] = (byte)code; |
break; |
default: |
throw new InvalidEscapeSequenceException( |
"Invalid escape sequence: '\\" + (char)c + '\''); |
} |
} |
} else { |
throw new InvalidEscapeSequenceException( |
"Invalid escape sequence: '\\' at end of string."); |
} |
} else { |
result[pos++] = c; |
} |
} |
return ByteString.copyFrom(result, 0, pos); |
} |
/** |
* Thrown by {@link TextFormat#unescapeBytes} and |
* {@link TextFormat#unescapeText} when an invalid escape sequence is seen. |
*/ |
static class InvalidEscapeSequenceException extends IOException { |
private static final long serialVersionUID = -8164033650142593304L; |
InvalidEscapeSequenceException(final String description) { |
super(description); |
} |
} |
/** |
* Like {@link #escapeBytes(ByteString)}, but escapes a text string. |
* Non-ASCII characters are first encoded as UTF-8, then each byte is escaped |
* individually as a 3-digit octal escape. Yes, it's weird. |
*/ |
static String escapeText(final String input) { |
return escapeBytes(ByteString.copyFromUtf8(input)); |
} |
/** |
* Un-escape a text string as escaped using {@link #escapeText(String)}. |
* Two-digit hex escapes (starting with "\x") are also recognized. |
*/ |
static String unescapeText(final String input) |
throws InvalidEscapeSequenceException { |
return unescapeBytes(input).toStringUtf8(); |
} |
/** Is this an octal digit? */ |
private static boolean isOctal(final byte c) { |
return '0' <= c && c <= '7'; |
} |
/** Is this a hex digit? */ |
private static boolean isHex(final byte c) { |
return ('0' <= c && c <= '9') || |
('a' <= c && c <= 'f') || |
('A' <= c && c <= 'F'); |
} |
/** |
* Interpret a character as a digit (in any base up to 36) and return the |
* numeric value. This is like {@code Character.digit()} but we don't accept |
* non-ASCII digits. |
*/ |
private static int digitValue(final byte c) { |
if ('0' <= c && c <= '9') { |
return c - '0'; |
} else if ('a' <= c && c <= 'z') { |
return c - 'a' + 10; |
} else { |
return c - 'A' + 10; |
} |
} |
/** |
* Parse a 32-bit signed integer from the text. Unlike the Java standard |
* {@code Integer.parseInt()}, this function recognizes the prefixes "0x" |
* and "0" to signify hexidecimal and octal numbers, respectively. |
*/ |
static int parseInt32(final String text) throws NumberFormatException { |
return (int) parseInteger(text, true, false); |
} |
/** |
* Parse a 32-bit unsigned integer from the text. Unlike the Java standard |
* {@code Integer.parseInt()}, this function recognizes the prefixes "0x" |
* and "0" to signify hexidecimal and octal numbers, respectively. The |
* result is coerced to a (signed) {@code int} when returned since Java has |
* no unsigned integer type. |
*/ |
static int parseUInt32(final String text) throws NumberFormatException { |
return (int) parseInteger(text, false, false); |
} |
/** |
* Parse a 64-bit signed integer from the text. Unlike the Java standard |
* {@code Integer.parseInt()}, this function recognizes the prefixes "0x" |
* and "0" to signify hexidecimal and octal numbers, respectively. |
*/ |
static long parseInt64(final String text) throws NumberFormatException { |
return parseInteger(text, true, true); |
} |
/** |
* Parse a 64-bit unsigned integer from the text. Unlike the Java standard |
* {@code Integer.parseInt()}, this function recognizes the prefixes "0x" |
* and "0" to signify hexidecimal and octal numbers, respectively. The |
* result is coerced to a (signed) {@code long} when returned since Java has |
* no unsigned long type. |
*/ |
static long parseUInt64(final String text) throws NumberFormatException { |
return parseInteger(text, false, true); |
} |
private static long parseInteger(final String text, |
final boolean isSigned, |
final boolean isLong) |
throws NumberFormatException { |
int pos = 0; |
boolean negative = false; |
if (text.startsWith("-", pos)) { |
if (!isSigned) { |
throw new NumberFormatException("Number must be positive: " + text); |
} |
++pos; |
negative = true; |
} |
int radix = 10; |
if (text.startsWith("0x", pos)) { |
pos += 2; |
radix = 16; |
} else if (text.startsWith("0", pos)) { |
radix = 8; |
} |
final String numberText = text.substring(pos); |
long result = 0; |
if (numberText.length() < 16) { |
// Can safely assume no overflow. |
result = Long.parseLong(numberText, radix); |
if (negative) { |
result = -result; |
} |
// Check bounds. |
// No need to check for 64-bit numbers since they'd have to be 16 chars |
// or longer to overflow. |
if (!isLong) { |
if (isSigned) { |
if (result > Integer.MAX_VALUE || result < Integer.MIN_VALUE) { |
throw new NumberFormatException( |
"Number out of range for 32-bit signed integer: " + text); |
} |
} else { |
if (result >= (1L << 32) || result < 0) { |
throw new NumberFormatException( |
"Number out of range for 32-bit unsigned integer: " + text); |
} |
} |
} |
} else { |
BigInteger bigValue = new BigInteger(numberText, radix); |
if (negative) { |
bigValue = bigValue.negate(); |
} |
// Check bounds. |
if (!isLong) { |
if (isSigned) { |
if (bigValue.bitLength() > 31) { |
throw new NumberFormatException( |
"Number out of range for 32-bit signed integer: " + text); |
} |
} else { |
if (bigValue.bitLength() > 32) { |
throw new NumberFormatException( |
"Number out of range for 32-bit unsigned integer: " + text); |
} |
} |
} else { |
if (isSigned) { |
if (bigValue.bitLength() > 63) { |
throw new NumberFormatException( |
"Number out of range for 64-bit signed integer: " + text); |
} |
} else { |
if (bigValue.bitLength() > 64) { |
throw new NumberFormatException( |
"Number out of range for 64-bit unsigned integer: " + text); |
} |
} |
} |
result = bigValue.longValue(); |
} |
return result; |
} |
} |
/Android Development/IOIODebugger/src/com/google/protobuf/UninitializedMessageException.java |
---|
0,0 → 1,99 |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
// |
// * Redistributions of source code must retain the above copyright |
// notice, this list of conditions and the following disclaimer. |
// * Redistributions in binary form must reproduce the above |
// copyright notice, this list of conditions and the following disclaimer |
// in the documentation and/or other materials provided with the |
// distribution. |
// * Neither the name of Google Inc. nor the names of its |
// contributors may be used to endorse or promote products derived from |
// this software without specific prior written permission. |
// |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
package com.google.protobuf; |
import java.util.Collections; |
import java.util.List; |
/** |
* Thrown when attempting to build a protocol message that is missing required |
* fields. This is a {@code RuntimeException} because it normally represents |
* a programming error: it happens when some code which constructs a message |
* fails to set all the fields. {@code parseFrom()} methods <b>do not</b> |
* throw this; they throw an {@link InvalidProtocolBufferException} if |
* required fields are missing, because it is not a programming error to |
* receive an incomplete message. In other words, |
* {@code UninitializedMessageException} should never be thrown by correct |
* code, but {@code InvalidProtocolBufferException} might be. |
* |
* @author kenton@google.com Kenton Varda |
*/ |
public class UninitializedMessageException extends RuntimeException { |
private static final long serialVersionUID = -7466929953374883507L; |
public UninitializedMessageException(final MessageLite message) { |
super("Message was missing required fields. (Lite runtime could not " + |
"determine which fields were missing)."); |
missingFields = null; |
} |
public UninitializedMessageException(final List<String> missingFields) { |
super(buildDescription(missingFields)); |
this.missingFields = missingFields; |
} |
private final List<String> missingFields; |
/** |
* Get a list of human-readable names of required fields missing from this |
* message. Each name is a full path to a field, e.g. "foo.bar[5].baz". |
* Returns null if the lite runtime was used, since it lacks the ability to |
* find missing fields. |
*/ |
public List<String> getMissingFields() { |
return Collections.unmodifiableList(missingFields); |
} |
/** |
* Converts this exception to an {@link InvalidProtocolBufferException}. |
* When a parsed message is missing required fields, this should be thrown |
* instead of {@code UninitializedMessageException}. |
*/ |
public InvalidProtocolBufferException asInvalidProtocolBufferException() { |
return new InvalidProtocolBufferException(getMessage()); |
} |
/** Construct the description string for this exception. */ |
private static String buildDescription(final List<String> missingFields) { |
final StringBuilder description = |
new StringBuilder("Message missing required fields: "); |
boolean first = true; |
for (final String field : missingFields) { |
if (first) { |
first = false; |
} else { |
description.append(", "); |
} |
description.append(field); |
} |
return description.toString(); |
} |
} |
/Android Development/IOIODebugger/src/com/google/protobuf/UnknownFieldSet.java |
---|
0,0 → 1,953 |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
// |
// * Redistributions of source code must retain the above copyright |
// notice, this list of conditions and the following disclaimer. |
// * Redistributions in binary form must reproduce the above |
// copyright notice, this list of conditions and the following disclaimer |
// in the documentation and/or other materials provided with the |
// distribution. |
// * Neither the name of Google Inc. nor the names of its |
// contributors may be used to endorse or promote products derived from |
// this software without specific prior written permission. |
// |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
package com.google.protobuf; |
import com.google.protobuf.AbstractMessageLite.Builder.LimitedInputStream; |
import java.io.IOException; |
import java.io.InputStream; |
import java.io.OutputStream; |
import java.util.ArrayList; |
import java.util.Arrays; |
import java.util.Collections; |
import java.util.List; |
import java.util.Map; |
import java.util.TreeMap; |
/** |
* {@code UnknownFieldSet} is used to keep track of fields which were seen when |
* parsing a protocol message but whose field numbers or types are unrecognized. |
* This most frequently occurs when new fields are added to a message type |
* and then messages containing those feilds are read by old software that was |
* compiled before the new types were added. |
* |
* <p>Every {@link Message} contains an {@code UnknownFieldSet} (and every |
* {@link Message.Builder} contains an {@link Builder}). |
* |
* <p>Most users will never need to use this class. |
* |
* @author kenton@google.com Kenton Varda |
*/ |
public final class UnknownFieldSet implements MessageLite { |
private UnknownFieldSet() {} |
/** Create a new {@link Builder}. */ |
public static Builder newBuilder() { |
return Builder.create(); |
} |
/** |
* Create a new {@link Builder} and initialize it to be a copy |
* of {@code copyFrom}. |
*/ |
public static Builder newBuilder(final UnknownFieldSet copyFrom) { |
return newBuilder().mergeFrom(copyFrom); |
} |
/** Get an empty {@code UnknownFieldSet}. */ |
public static UnknownFieldSet getDefaultInstance() { |
return defaultInstance; |
} |
public UnknownFieldSet getDefaultInstanceForType() { |
return defaultInstance; |
} |
private static final UnknownFieldSet defaultInstance = |
new UnknownFieldSet(Collections.<Integer, Field>emptyMap()); |
/** |
* Construct an {@code UnknownFieldSet} around the given map. The map is |
* expected to be immutable. |
*/ |
private UnknownFieldSet(final Map<Integer, Field> fields) { |
this.fields = fields; |
} |
private Map<Integer, Field> fields; |
@Override |
public boolean equals(final Object other) { |
if (this == other) { |
return true; |
} |
return (other instanceof UnknownFieldSet) && |
fields.equals(((UnknownFieldSet) other).fields); |
} |
@Override |
public int hashCode() { |
return fields.hashCode(); |
} |
/** Get a map of fields in the set by number. */ |
public Map<Integer, Field> asMap() { |
return fields; |
} |
/** Check if the given field number is present in the set. */ |
public boolean hasField(final int number) { |
return fields.containsKey(number); |
} |
/** |
* Get a field by number. Returns an empty field if not present. Never |
* returns {@code null}. |
*/ |
public Field getField(final int number) { |
final Field result = fields.get(number); |
return (result == null) ? Field.getDefaultInstance() : result; |
} |
/** Serializes the set and writes it to {@code output}. */ |
public void writeTo(final CodedOutputStream output) throws IOException { |
for (final Map.Entry<Integer, Field> entry : fields.entrySet()) { |
entry.getValue().writeTo(entry.getKey(), output); |
} |
} |
/** |
* Converts the set to a string in protocol buffer text format. This is |
* just a trivial wrapper around |
* {@link TextFormat#printToString(UnknownFieldSet)}. |
*/ |
@Override |
public String toString() { |
return TextFormat.printToString(this); |
} |
/** |
* Serializes the message to a {@code ByteString} and returns it. This is |
* just a trivial wrapper around {@link #writeTo(CodedOutputStream)}. |
*/ |
public ByteString toByteString() { |
try { |
final ByteString.CodedBuilder out = |
ByteString.newCodedBuilder(getSerializedSize()); |
writeTo(out.getCodedOutput()); |
return out.build(); |
} catch (final IOException e) { |
throw new RuntimeException( |
"Serializing to a ByteString threw an IOException (should " + |
"never happen).", e); |
} |
} |
/** |
* Serializes the message to a {@code byte} array and returns it. This is |
* just a trivial wrapper around {@link #writeTo(CodedOutputStream)}. |
*/ |
public byte[] toByteArray() { |
try { |
final byte[] result = new byte[getSerializedSize()]; |
final CodedOutputStream output = CodedOutputStream.newInstance(result); |
writeTo(output); |
output.checkNoSpaceLeft(); |
return result; |
} catch (final IOException e) { |
throw new RuntimeException( |
"Serializing to a byte array threw an IOException " + |
"(should never happen).", e); |
} |
} |
/** |
* Serializes the message and writes it to {@code output}. This is just a |
* trivial wrapper around {@link #writeTo(CodedOutputStream)}. |
*/ |
public void writeTo(final OutputStream output) throws IOException { |
final CodedOutputStream codedOutput = CodedOutputStream.newInstance(output); |
writeTo(codedOutput); |
codedOutput.flush(); |
} |
public void writeDelimitedTo(OutputStream output) throws IOException { |
final CodedOutputStream codedOutput = CodedOutputStream.newInstance(output); |
codedOutput.writeRawVarint32(getSerializedSize()); |
writeTo(codedOutput); |
codedOutput.flush(); |
} |
/** Get the number of bytes required to encode this set. */ |
public int getSerializedSize() { |
int result = 0; |
for (final Map.Entry<Integer, Field> entry : fields.entrySet()) { |
result += entry.getValue().getSerializedSize(entry.getKey()); |
} |
return result; |
} |
/** |
* Serializes the set and writes it to {@code output} using |
* {@code MessageSet} wire format. |
*/ |
public void writeAsMessageSetTo(final CodedOutputStream output) |
throws IOException { |
for (final Map.Entry<Integer, Field> entry : fields.entrySet()) { |
entry.getValue().writeAsMessageSetExtensionTo( |
entry.getKey(), output); |
} |
} |
/** |
* Get the number of bytes required to encode this set using |
* {@code MessageSet} wire format. |
*/ |
public int getSerializedSizeAsMessageSet() { |
int result = 0; |
for (final Map.Entry<Integer, Field> entry : fields.entrySet()) { |
result += entry.getValue().getSerializedSizeAsMessageSetExtension( |
entry.getKey()); |
} |
return result; |
} |
public boolean isInitialized() { |
// UnknownFieldSets do not have required fields, so they are always |
// initialized. |
return true; |
} |
/** Parse an {@code UnknownFieldSet} from the given input stream. */ |
public static UnknownFieldSet parseFrom(final CodedInputStream input) |
throws IOException { |
return newBuilder().mergeFrom(input).build(); |
} |
/** Parse {@code data} as an {@code UnknownFieldSet} and return it. */ |
public static UnknownFieldSet parseFrom(final ByteString data) |
throws InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).build(); |
} |
/** Parse {@code data} as an {@code UnknownFieldSet} and return it. */ |
public static UnknownFieldSet parseFrom(final byte[] data) |
throws InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).build(); |
} |
/** Parse an {@code UnknownFieldSet} from {@code input} and return it. */ |
public static UnknownFieldSet parseFrom(final InputStream input) |
throws IOException { |
return newBuilder().mergeFrom(input).build(); |
} |
public Builder newBuilderForType() { |
return newBuilder(); |
} |
public Builder toBuilder() { |
return newBuilder().mergeFrom(this); |
} |
/** |
* Builder for {@link UnknownFieldSet}s. |
* |
* <p>Note that this class maintains {@link Field.Builder}s for all fields |
* in the set. Thus, adding one element to an existing {@link Field} does not |
* require making a copy. This is important for efficient parsing of |
* unknown repeated fields. However, it implies that {@link Field}s cannot |
* be constructed independently, nor can two {@link UnknownFieldSet}s share |
* the same {@code Field} object. |
* |
* <p>Use {@link UnknownFieldSet#newBuilder()} to construct a {@code Builder}. |
*/ |
public static final class Builder implements MessageLite.Builder { |
// This constructor should never be called directly (except from 'create'). |
private Builder() {} |
private Map<Integer, Field> fields; |
// Optimization: We keep around a builder for the last field that was |
// modified so that we can efficiently add to it multiple times in a |
// row (important when parsing an unknown repeated field). |
private int lastFieldNumber; |
private Field.Builder lastField; |
private static Builder create() { |
Builder builder = new Builder(); |
builder.reinitialize(); |
return builder; |
} |
/** |
* Get a field builder for the given field number which includes any |
* values that already exist. |
*/ |
private Field.Builder getFieldBuilder(final int number) { |
if (lastField != null) { |
if (number == lastFieldNumber) { |
return lastField; |
} |
// Note: addField() will reset lastField and lastFieldNumber. |
addField(lastFieldNumber, lastField.build()); |
} |
if (number == 0) { |
return null; |
} else { |
final Field existing = fields.get(number); |
lastFieldNumber = number; |
lastField = Field.newBuilder(); |
if (existing != null) { |
lastField.mergeFrom(existing); |
} |
return lastField; |
} |
} |
/** |
* Build the {@link UnknownFieldSet} and return it. |
* |
* <p>Once {@code build()} has been called, the {@code Builder} will no |
* longer be usable. Calling any method after {@code build()} will result |
* in undefined behavior and can cause a {@code NullPointerException} to be |
* thrown. |
*/ |
public UnknownFieldSet build() { |
getFieldBuilder(0); // Force lastField to be built. |
final UnknownFieldSet result; |
if (fields.isEmpty()) { |
result = getDefaultInstance(); |
} else { |
result = new UnknownFieldSet(Collections.unmodifiableMap(fields)); |
} |
fields = null; |
return result; |
} |
public UnknownFieldSet buildPartial() { |
// No required fields, so this is the same as build(). |
return build(); |
} |
@Override |
public Builder clone() { |
getFieldBuilder(0); // Force lastField to be built. |
return UnknownFieldSet.newBuilder().mergeFrom( |
new UnknownFieldSet(fields)); |
} |
public UnknownFieldSet getDefaultInstanceForType() { |
return UnknownFieldSet.getDefaultInstance(); |
} |
private void reinitialize() { |
fields = Collections.emptyMap(); |
lastFieldNumber = 0; |
lastField = null; |
} |
/** Reset the builder to an empty set. */ |
public Builder clear() { |
reinitialize(); |
return this; |
} |
/** |
* Merge the fields from {@code other} into this set. If a field number |
* exists in both sets, {@code other}'s values for that field will be |
* appended to the values in this set. |
*/ |
public Builder mergeFrom(final UnknownFieldSet other) { |
if (other != getDefaultInstance()) { |
for (final Map.Entry<Integer, Field> entry : other.fields.entrySet()) { |
mergeField(entry.getKey(), entry.getValue()); |
} |
} |
return this; |
} |
/** |
* Add a field to the {@code UnknownFieldSet}. If a field with the same |
* number already exists, the two are merged. |
*/ |
public Builder mergeField(final int number, final Field field) { |
if (number == 0) { |
throw new IllegalArgumentException("Zero is not a valid field number."); |
} |
if (hasField(number)) { |
getFieldBuilder(number).mergeFrom(field); |
} else { |
// Optimization: We could call getFieldBuilder(number).mergeFrom(field) |
// in this case, but that would create a copy of the Field object. |
// We'd rather reuse the one passed to us, so call addField() instead. |
addField(number, field); |
} |
return this; |
} |
/** |
* Convenience method for merging a new field containing a single varint |
* value. This is used in particular when an unknown enum value is |
* encountered. |
*/ |
public Builder mergeVarintField(final int number, final int value) { |
if (number == 0) { |
throw new IllegalArgumentException("Zero is not a valid field number."); |
} |
getFieldBuilder(number).addVarint(value); |
return this; |
} |
/** Check if the given field number is present in the set. */ |
public boolean hasField(final int number) { |
if (number == 0) { |
throw new IllegalArgumentException("Zero is not a valid field number."); |
} |
return number == lastFieldNumber || fields.containsKey(number); |
} |
/** |
* Add a field to the {@code UnknownFieldSet}. If a field with the same |
* number already exists, it is removed. |
*/ |
public Builder addField(final int number, final Field field) { |
if (number == 0) { |
throw new IllegalArgumentException("Zero is not a valid field number."); |
} |
if (lastField != null && lastFieldNumber == number) { |
// Discard this. |
lastField = null; |
lastFieldNumber = 0; |
} |
if (fields.isEmpty()) { |
fields = new TreeMap<Integer,Field>(); |
} |
fields.put(number, field); |
return this; |
} |
/** |
* Get all present {@code Field}s as an immutable {@code Map}. If more |
* fields are added, the changes may or may not be reflected in this map. |
*/ |
public Map<Integer, Field> asMap() { |
getFieldBuilder(0); // Force lastField to be built. |
return Collections.unmodifiableMap(fields); |
} |
/** |
* Parse an entire message from {@code input} and merge its fields into |
* this set. |
*/ |
public Builder mergeFrom(final CodedInputStream input) throws IOException { |
while (true) { |
final int tag = input.readTag(); |
if (tag == 0 || !mergeFieldFrom(tag, input)) { |
break; |
} |
} |
return this; |
} |
/** |
* Parse a single field from {@code input} and merge it into this set. |
* @param tag The field's tag number, which was already parsed. |
* @return {@code false} if the tag is an engroup tag. |
*/ |
public boolean mergeFieldFrom(final int tag, final CodedInputStream input) |
throws IOException { |
final int number = WireFormat.getTagFieldNumber(tag); |
switch (WireFormat.getTagWireType(tag)) { |
case WireFormat.WIRETYPE_VARINT: |
getFieldBuilder(number).addVarint(input.readInt64()); |
return true; |
case WireFormat.WIRETYPE_FIXED64: |
getFieldBuilder(number).addFixed64(input.readFixed64()); |
return true; |
case WireFormat.WIRETYPE_LENGTH_DELIMITED: |
getFieldBuilder(number).addLengthDelimited(input.readBytes()); |
return true; |
case WireFormat.WIRETYPE_START_GROUP: |
final Builder subBuilder = newBuilder(); |
input.readGroup(number, subBuilder, |
ExtensionRegistry.getEmptyRegistry()); |
getFieldBuilder(number).addGroup(subBuilder.build()); |
return true; |
case WireFormat.WIRETYPE_END_GROUP: |
return false; |
case WireFormat.WIRETYPE_FIXED32: |
getFieldBuilder(number).addFixed32(input.readFixed32()); |
return true; |
default: |
throw InvalidProtocolBufferException.invalidWireType(); |
} |
} |
/** |
* Parse {@code data} as an {@code UnknownFieldSet} and merge it with the |
* set being built. This is just a small wrapper around |
* {@link #mergeFrom(CodedInputStream)}. |
*/ |
public Builder mergeFrom(final ByteString data) |
throws InvalidProtocolBufferException { |
try { |
final CodedInputStream input = data.newCodedInput(); |
mergeFrom(input); |
input.checkLastTagWas(0); |
return this; |
} catch (final InvalidProtocolBufferException e) { |
throw e; |
} catch (final IOException e) { |
throw new RuntimeException( |
"Reading from a ByteString threw an IOException (should " + |
"never happen).", e); |
} |
} |
/** |
* Parse {@code data} as an {@code UnknownFieldSet} and merge it with the |
* set being built. This is just a small wrapper around |
* {@link #mergeFrom(CodedInputStream)}. |
*/ |
public Builder mergeFrom(final byte[] data) |
throws InvalidProtocolBufferException { |
try { |
final CodedInputStream input = CodedInputStream.newInstance(data); |
mergeFrom(input); |
input.checkLastTagWas(0); |
return this; |
} catch (final InvalidProtocolBufferException e) { |
throw e; |
} catch (final IOException e) { |
throw new RuntimeException( |
"Reading from a byte array threw an IOException (should " + |
"never happen).", e); |
} |
} |
/** |
* Parse an {@code UnknownFieldSet} from {@code input} and merge it with the |
* set being built. This is just a small wrapper around |
* {@link #mergeFrom(CodedInputStream)}. |
*/ |
public Builder mergeFrom(final InputStream input) throws IOException { |
final CodedInputStream codedInput = CodedInputStream.newInstance(input); |
mergeFrom(codedInput); |
codedInput.checkLastTagWas(0); |
return this; |
} |
public boolean mergeDelimitedFrom(InputStream input) |
throws IOException { |
final int firstByte = input.read(); |
if (firstByte == -1) { |
return false; |
} |
final int size = CodedInputStream.readRawVarint32(firstByte, input); |
final InputStream limitedInput = new LimitedInputStream(input, size); |
mergeFrom(limitedInput); |
return true; |
} |
public boolean mergeDelimitedFrom( |
InputStream input, |
ExtensionRegistryLite extensionRegistry) throws IOException { |
// UnknownFieldSet has no extensions. |
return mergeDelimitedFrom(input); |
} |
public Builder mergeFrom( |
CodedInputStream input, |
ExtensionRegistryLite extensionRegistry) throws IOException { |
// UnknownFieldSet has no extensions. |
return mergeFrom(input); |
} |
public Builder mergeFrom( |
ByteString data, |
ExtensionRegistryLite extensionRegistry) |
throws InvalidProtocolBufferException { |
// UnknownFieldSet has no extensions. |
return mergeFrom(data); |
} |
public Builder mergeFrom(byte[] data, int off, int len) |
throws InvalidProtocolBufferException { |
try { |
final CodedInputStream input = |
CodedInputStream.newInstance(data, off, len); |
mergeFrom(input); |
input.checkLastTagWas(0); |
return this; |
} catch (InvalidProtocolBufferException e) { |
throw e; |
} catch (IOException e) { |
throw new RuntimeException( |
"Reading from a byte array threw an IOException (should " + |
"never happen).", e); |
} |
} |
public Builder mergeFrom( |
byte[] data, |
ExtensionRegistryLite extensionRegistry) |
throws InvalidProtocolBufferException { |
// UnknownFieldSet has no extensions. |
return mergeFrom(data); |
} |
public Builder mergeFrom( |
byte[] data, int off, int len, |
ExtensionRegistryLite extensionRegistry) |
throws InvalidProtocolBufferException { |
// UnknownFieldSet has no extensions. |
return mergeFrom(data, off, len); |
} |
public Builder mergeFrom( |
InputStream input, |
ExtensionRegistryLite extensionRegistry) throws IOException { |
// UnknownFieldSet has no extensions. |
return mergeFrom(input); |
} |
public boolean isInitialized() { |
// UnknownFieldSets do not have required fields, so they are always |
// initialized. |
return true; |
} |
} |
/** |
* Represents a single field in an {@code UnknownFieldSet}. |
* |
* <p>A {@code Field} consists of five lists of values. The lists correspond |
* to the five "wire types" used in the protocol buffer binary format. |
* The wire type of each field can be determined from the encoded form alone, |
* without knowing the field's declared type. So, we are able to parse |
* unknown values at least this far and separate them. Normally, only one |
* of the five lists will contain any values, since it is impossible to |
* define a valid message type that declares two different types for the |
* same field number. However, the code is designed to allow for the case |
* where the same unknown field number is encountered using multiple different |
* wire types. |
* |
* <p>{@code Field} is an immutable class. To construct one, you must use a |
* {@link Builder}. |
* |
* @see UnknownFieldSet |
*/ |
public static final class Field { |
private Field() {} |
/** Construct a new {@link Builder}. */ |
public static Builder newBuilder() { |
return Builder.create(); |
} |
/** |
* Construct a new {@link Builder} and initialize it to a copy of |
* {@code copyFrom}. |
*/ |
public static Builder newBuilder(final Field copyFrom) { |
return newBuilder().mergeFrom(copyFrom); |
} |
/** Get an empty {@code Field}. */ |
public static Field getDefaultInstance() { |
return fieldDefaultInstance; |
} |
private static final Field fieldDefaultInstance = newBuilder().build(); |
/** Get the list of varint values for this field. */ |
public List<Long> getVarintList() { return varint; } |
/** Get the list of fixed32 values for this field. */ |
public List<Integer> getFixed32List() { return fixed32; } |
/** Get the list of fixed64 values for this field. */ |
public List<Long> getFixed64List() { return fixed64; } |
/** Get the list of length-delimited values for this field. */ |
public List<ByteString> getLengthDelimitedList() { return lengthDelimited; } |
/** |
* Get the list of embedded group values for this field. These are |
* represented using {@link UnknownFieldSet}s rather than {@link Message}s |
* since the group's type is presumably unknown. |
*/ |
public List<UnknownFieldSet> getGroupList() { return group; } |
@Override |
public boolean equals(final Object other) { |
if (this == other) { |
return true; |
} |
if (!(other instanceof Field)) { |
return false; |
} |
return Arrays.equals(getIdentityArray(), |
((Field) other).getIdentityArray()); |
} |
@Override |
public int hashCode() { |
return Arrays.hashCode(getIdentityArray()); |
} |
/** |
* Returns the array of objects to be used to uniquely identify this |
* {@link Field} instance. |
*/ |
private Object[] getIdentityArray() { |
return new Object[] { |
varint, |
fixed32, |
fixed64, |
lengthDelimited, |
group}; |
} |
/** |
* Serializes the field, including field number, and writes it to |
* {@code output}. |
*/ |
public void writeTo(final int fieldNumber, final CodedOutputStream output) |
throws IOException { |
for (final long value : varint) { |
output.writeUInt64(fieldNumber, value); |
} |
for (final int value : fixed32) { |
output.writeFixed32(fieldNumber, value); |
} |
for (final long value : fixed64) { |
output.writeFixed64(fieldNumber, value); |
} |
for (final ByteString value : lengthDelimited) { |
output.writeBytes(fieldNumber, value); |
} |
for (final UnknownFieldSet value : group) { |
output.writeGroup(fieldNumber, value); |
} |
} |
/** |
* Get the number of bytes required to encode this field, including field |
* number. |
*/ |
public int getSerializedSize(final int fieldNumber) { |
int result = 0; |
for (final long value : varint) { |
result += CodedOutputStream.computeUInt64Size(fieldNumber, value); |
} |
for (final int value : fixed32) { |
result += CodedOutputStream.computeFixed32Size(fieldNumber, value); |
} |
for (final long value : fixed64) { |
result += CodedOutputStream.computeFixed64Size(fieldNumber, value); |
} |
for (final ByteString value : lengthDelimited) { |
result += CodedOutputStream.computeBytesSize(fieldNumber, value); |
} |
for (final UnknownFieldSet value : group) { |
result += CodedOutputStream.computeGroupSize(fieldNumber, value); |
} |
return result; |
} |
/** |
* Serializes the field, including field number, and writes it to |
* {@code output}, using {@code MessageSet} wire format. |
*/ |
public void writeAsMessageSetExtensionTo( |
final int fieldNumber, |
final CodedOutputStream output) |
throws IOException { |
for (final ByteString value : lengthDelimited) { |
output.writeRawMessageSetExtension(fieldNumber, value); |
} |
} |
/** |
* Get the number of bytes required to encode this field, including field |
* number, using {@code MessageSet} wire format. |
*/ |
public int getSerializedSizeAsMessageSetExtension(final int fieldNumber) { |
int result = 0; |
for (final ByteString value : lengthDelimited) { |
result += CodedOutputStream.computeRawMessageSetExtensionSize( |
fieldNumber, value); |
} |
return result; |
} |
private List<Long> varint; |
private List<Integer> fixed32; |
private List<Long> fixed64; |
private List<ByteString> lengthDelimited; |
private List<UnknownFieldSet> group; |
/** |
* Used to build a {@link Field} within an {@link UnknownFieldSet}. |
* |
* <p>Use {@link Field#newBuilder()} to construct a {@code Builder}. |
*/ |
public static final class Builder { |
// This constructor should never be called directly (except from 'create'). |
private Builder() {} |
private static Builder create() { |
Builder builder = new Builder(); |
builder.result = new Field(); |
return builder; |
} |
private Field result; |
/** |
* Build the field. After {@code build()} has been called, the |
* {@code Builder} is no longer usable. Calling any other method will |
* result in undefined behavior and can cause a |
* {@code NullPointerException} to be thrown. |
*/ |
public Field build() { |
if (result.varint == null) { |
result.varint = Collections.emptyList(); |
} else { |
result.varint = Collections.unmodifiableList(result.varint); |
} |
if (result.fixed32 == null) { |
result.fixed32 = Collections.emptyList(); |
} else { |
result.fixed32 = Collections.unmodifiableList(result.fixed32); |
} |
if (result.fixed64 == null) { |
result.fixed64 = Collections.emptyList(); |
} else { |
result.fixed64 = Collections.unmodifiableList(result.fixed64); |
} |
if (result.lengthDelimited == null) { |
result.lengthDelimited = Collections.emptyList(); |
} else { |
result.lengthDelimited = |
Collections.unmodifiableList(result.lengthDelimited); |
} |
if (result.group == null) { |
result.group = Collections.emptyList(); |
} else { |
result.group = Collections.unmodifiableList(result.group); |
} |
final Field returnMe = result; |
result = null; |
return returnMe; |
} |
/** Discard the field's contents. */ |
public Builder clear() { |
result = new Field(); |
return this; |
} |
/** |
* Merge the values in {@code other} into this field. For each list |
* of values, {@code other}'s values are append to the ones in this |
* field. |
*/ |
public Builder mergeFrom(final Field other) { |
if (!other.varint.isEmpty()) { |
if (result.varint == null) { |
result.varint = new ArrayList<Long>(); |
} |
result.varint.addAll(other.varint); |
} |
if (!other.fixed32.isEmpty()) { |
if (result.fixed32 == null) { |
result.fixed32 = new ArrayList<Integer>(); |
} |
result.fixed32.addAll(other.fixed32); |
} |
if (!other.fixed64.isEmpty()) { |
if (result.fixed64 == null) { |
result.fixed64 = new ArrayList<Long>(); |
} |
result.fixed64.addAll(other.fixed64); |
} |
if (!other.lengthDelimited.isEmpty()) { |
if (result.lengthDelimited == null) { |
result.lengthDelimited = new ArrayList<ByteString>(); |
} |
result.lengthDelimited.addAll(other.lengthDelimited); |
} |
if (!other.group.isEmpty()) { |
if (result.group == null) { |
result.group = new ArrayList<UnknownFieldSet>(); |
} |
result.group.addAll(other.group); |
} |
return this; |
} |
/** Add a varint value. */ |
public Builder addVarint(final long value) { |
if (result.varint == null) { |
result.varint = new ArrayList<Long>(); |
} |
result.varint.add(value); |
return this; |
} |
/** Add a fixed32 value. */ |
public Builder addFixed32(final int value) { |
if (result.fixed32 == null) { |
result.fixed32 = new ArrayList<Integer>(); |
} |
result.fixed32.add(value); |
return this; |
} |
/** Add a fixed64 value. */ |
public Builder addFixed64(final long value) { |
if (result.fixed64 == null) { |
result.fixed64 = new ArrayList<Long>(); |
} |
result.fixed64.add(value); |
return this; |
} |
/** Add a length-delimited value. */ |
public Builder addLengthDelimited(final ByteString value) { |
if (result.lengthDelimited == null) { |
result.lengthDelimited = new ArrayList<ByteString>(); |
} |
result.lengthDelimited.add(value); |
return this; |
} |
/** Add an embedded group. */ |
public Builder addGroup(final UnknownFieldSet value) { |
if (result.group == null) { |
result.group = new ArrayList<UnknownFieldSet>(); |
} |
result.group.add(value); |
return this; |
} |
} |
} |
} |
/Android Development/IOIODebugger/src/com/google/protobuf/UnmodifiableLazyStringList.java |
---|
0,0 → 1,146 |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
// |
// * Redistributions of source code must retain the above copyright |
// notice, this list of conditions and the following disclaimer. |
// * Redistributions in binary form must reproduce the above |
// copyright notice, this list of conditions and the following disclaimer |
// in the documentation and/or other materials provided with the |
// distribution. |
// * Neither the name of Google Inc. nor the names of its |
// contributors may be used to endorse or promote products derived from |
// this software without specific prior written permission. |
// |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
package com.google.protobuf; |
import java.util.AbstractList; |
import java.util.RandomAccess; |
import java.util.ListIterator; |
import java.util.Iterator; |
/** |
* An implementation of {@link LazyStringList} that wraps another |
* {@link LazyStringList} such that it cannot be modified via the wrapper. |
* |
* @author jonp@google.com (Jon Perlow) |
*/ |
public class UnmodifiableLazyStringList extends AbstractList<String> |
implements LazyStringList, RandomAccess { |
private final LazyStringList list; |
public UnmodifiableLazyStringList(LazyStringList list) { |
this.list = list; |
} |
@Override |
public String get(int index) { |
return list.get(index); |
} |
@Override |
public int size() { |
return list.size(); |
} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public ByteString getByteString(int index) { |
return list.getByteString(index); |
} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public void add(ByteString element) { |
throw new UnsupportedOperationException(); |
} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public ListIterator<String> listIterator(final int index) { |
return new ListIterator<String>() { |
ListIterator<String> iter = list.listIterator(index); |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public boolean hasNext() { |
return iter.hasNext(); |
} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public String next() { |
return iter.next(); |
} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public boolean hasPrevious() { |
return iter.hasPrevious(); |
} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public String previous() { |
return iter.previous(); |
} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public int nextIndex() { |
return iter.nextIndex(); |
} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public int previousIndex() { |
return iter.previousIndex(); |
} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public void remove() { |
throw new UnsupportedOperationException(); |
} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public void set(String o) { |
throw new UnsupportedOperationException(); |
} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public void add(String o) { |
throw new UnsupportedOperationException(); |
} |
}; |
} |
@Override |
public Iterator<String> iterator() { |
return new Iterator<String>() { |
Iterator<String> iter = list.iterator(); |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public boolean hasNext() { |
return iter.hasNext(); |
} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public String next() { |
return iter.next(); |
} |
//@Override (Java 1.6 override semantics, but we must support 1.5) |
public void remove() { |
throw new UnsupportedOperationException(); |
} |
}; |
} |
} |
/Android Development/IOIODebugger/src/com/google/protobuf/WireFormat.java |
---|
0,0 → 1,163 |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
// |
// * Redistributions of source code must retain the above copyright |
// notice, this list of conditions and the following disclaimer. |
// * Redistributions in binary form must reproduce the above |
// copyright notice, this list of conditions and the following disclaimer |
// in the documentation and/or other materials provided with the |
// distribution. |
// * Neither the name of Google Inc. nor the names of its |
// contributors may be used to endorse or promote products derived from |
// this software without specific prior written permission. |
// |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
package com.google.protobuf; |
/** |
* This class is used internally by the Protocol Buffer library and generated |
* message implementations. It is public only because those generated messages |
* do not reside in the {@code protobuf} package. Others should not use this |
* class directly. |
* |
* This class contains constants and helper functions useful for dealing with |
* the Protocol Buffer wire format. |
* |
* @author kenton@google.com Kenton Varda |
*/ |
public final class WireFormat { |
// Do not allow instantiation. |
private WireFormat() {} |
public static final int WIRETYPE_VARINT = 0; |
public static final int WIRETYPE_FIXED64 = 1; |
public static final int WIRETYPE_LENGTH_DELIMITED = 2; |
public static final int WIRETYPE_START_GROUP = 3; |
public static final int WIRETYPE_END_GROUP = 4; |
public static final int WIRETYPE_FIXED32 = 5; |
static final int TAG_TYPE_BITS = 3; |
static final int TAG_TYPE_MASK = (1 << TAG_TYPE_BITS) - 1; |
/** Given a tag value, determines the wire type (the lower 3 bits). */ |
static int getTagWireType(final int tag) { |
return tag & TAG_TYPE_MASK; |
} |
/** Given a tag value, determines the field number (the upper 29 bits). */ |
public static int getTagFieldNumber(final int tag) { |
return tag >>> TAG_TYPE_BITS; |
} |
/** Makes a tag value given a field number and wire type. */ |
static int makeTag(final int fieldNumber, final int wireType) { |
return (fieldNumber << TAG_TYPE_BITS) | wireType; |
} |
/** |
* Lite equivalent to {@link Descriptors.FieldDescriptor.JavaType}. This is |
* only here to support the lite runtime and should not be used by users. |
*/ |
public enum JavaType { |
INT(0), |
LONG(0L), |
FLOAT(0F), |
DOUBLE(0D), |
BOOLEAN(false), |
STRING(""), |
BYTE_STRING(ByteString.EMPTY), |
ENUM(null), |
MESSAGE(null); |
JavaType(final Object defaultDefault) { |
this.defaultDefault = defaultDefault; |
} |
/** |
* The default default value for fields of this type, if it's a primitive |
* type. |
*/ |
Object getDefaultDefault() { |
return defaultDefault; |
} |
private final Object defaultDefault; |
} |
/** |
* Lite equivalent to {@link Descriptors.FieldDescriptor.Type}. This is |
* only here to support the lite runtime and should not be used by users. |
*/ |
public enum FieldType { |
DOUBLE (JavaType.DOUBLE , WIRETYPE_FIXED64 ), |
FLOAT (JavaType.FLOAT , WIRETYPE_FIXED32 ), |
INT64 (JavaType.LONG , WIRETYPE_VARINT ), |
UINT64 (JavaType.LONG , WIRETYPE_VARINT ), |
INT32 (JavaType.INT , WIRETYPE_VARINT ), |
FIXED64 (JavaType.LONG , WIRETYPE_FIXED64 ), |
FIXED32 (JavaType.INT , WIRETYPE_FIXED32 ), |
BOOL (JavaType.BOOLEAN , WIRETYPE_VARINT ), |
STRING (JavaType.STRING , WIRETYPE_LENGTH_DELIMITED) { |
public boolean isPackable() { return false; } |
}, |
GROUP (JavaType.MESSAGE , WIRETYPE_START_GROUP ) { |
public boolean isPackable() { return false; } |
}, |
MESSAGE (JavaType.MESSAGE , WIRETYPE_LENGTH_DELIMITED) { |
public boolean isPackable() { return false; } |
}, |
BYTES (JavaType.BYTE_STRING, WIRETYPE_LENGTH_DELIMITED) { |
public boolean isPackable() { return false; } |
}, |
UINT32 (JavaType.INT , WIRETYPE_VARINT ), |
ENUM (JavaType.ENUM , WIRETYPE_VARINT ), |
SFIXED32(JavaType.INT , WIRETYPE_FIXED32 ), |
SFIXED64(JavaType.LONG , WIRETYPE_FIXED64 ), |
SINT32 (JavaType.INT , WIRETYPE_VARINT ), |
SINT64 (JavaType.LONG , WIRETYPE_VARINT ); |
FieldType(final JavaType javaType, final int wireType) { |
this.javaType = javaType; |
this.wireType = wireType; |
} |
private final JavaType javaType; |
private final int wireType; |
public JavaType getJavaType() { return javaType; } |
public int getWireType() { return wireType; } |
public boolean isPackable() { return true; } |
} |
// Field numbers for feilds in MessageSet wire format. |
static final int MESSAGE_SET_ITEM = 1; |
static final int MESSAGE_SET_TYPE_ID = 2; |
static final int MESSAGE_SET_MESSAGE = 3; |
// Tag numbers. |
static final int MESSAGE_SET_ITEM_TAG = |
makeTag(MESSAGE_SET_ITEM, WIRETYPE_START_GROUP); |
static final int MESSAGE_SET_ITEM_END_TAG = |
makeTag(MESSAGE_SET_ITEM, WIRETYPE_END_GROUP); |
static final int MESSAGE_SET_TYPE_ID_TAG = |
makeTag(MESSAGE_SET_TYPE_ID, WIRETYPE_VARINT); |
static final int MESSAGE_SET_MESSAGE_TAG = |
makeTag(MESSAGE_SET_MESSAGE, WIRETYPE_LENGTH_DELIMITED); |
} |
/Android Development/IOIODebugger/src/ioio/debugger/AddIAActivity.java |
---|
0,0 → 1,88 |
package ioio.debugger; |
import android.app.Activity; |
import android.os.Bundle; |
import android.view.View; |
import android.view.View.OnClickListener; |
import android.widget.AdapterView; |
import android.widget.AdapterView.OnItemSelectedListener; |
import android.widget.ArrayAdapter; |
import android.widget.Button; |
import android.widget.Spinner; |
import android.widget.Toast; |
public class AddIAActivity extends Activity implements OnClickListener { |
private Spinner _spinnerPin; |
private Spinner _spinnerFreq; |
private Button _btnAdd; |
private Integer pin; |
private long freq; |
/** Called when the activity is first created. */ |
@Override |
public void onCreate(Bundle savedInstanceState) { |
super.onCreate(savedInstanceState); |
setContentView(R.layout.class_ia_activity); |
_spinnerPin = (Spinner)findViewById(R.id.IAspinnerPin); |
_spinnerFreq = (Spinner)findViewById(R.id.IAspinnerFreq); |
_btnAdd = (Button)findViewById(R.id.IAbuttonAdd); |
_btnAdd.setOnClickListener(this); |
ArrayAdapter<CharSequence> adapterPin = ArrayAdapter.createFromResource(this, R.array.analog_pins, android.R.layout.simple_spinner_item); |
adapterPin.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); |
_spinnerPin.setAdapter(adapterPin); |
ArrayAdapter<CharSequence> adapterFreq = ArrayAdapter.createFromResource(this, R.array.refresh_rate, android.R.layout.simple_spinner_item); |
adapterFreq.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); |
_spinnerFreq.setAdapter(adapterFreq); |
_spinnerPin.setOnItemSelectedListener(new OnItemSelectedListener() { |
@Override |
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { |
String str = parent.getItemAtPosition(pos).toString(); |
pin = Integer.parseInt(str); |
} |
@Override |
public void onNothingSelected(AdapterView<?> arg0) { |
// Do Nothing |
} |
}); |
_spinnerFreq.setOnItemSelectedListener(new OnItemSelectedListener() { |
@Override |
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { |
String str = parent.getItemAtPosition(pos).toString(); |
double val = Double.parseDouble(str); |
freq = (long)(val*1000); |
} |
@Override |
public void onNothingSelected(AdapterView<?> arg0) { |
// Do Nothing |
} |
}); |
} |
@Override |
public void onClick(View v) { |
for (Integer i : IOIODebuggerActivity.getOpenedPins()) { |
if (i == pin) { |
Toast.makeText(this, "Specified pin has already been opened", Toast.LENGTH_SHORT).show(); |
return; |
} |
} |
CreateWidget.addIA(pin, freq); |
setResult(RESULT_OK); |
finish(); |
} |
} |
/Android Development/IOIODebugger/src/ioio/debugger/AddIDActivity.java |
---|
0,0 → 1,109 |
package ioio.debugger; |
import android.app.Activity; |
import android.os.Bundle; |
import android.view.View; |
import android.view.View.OnClickListener; |
import android.widget.AdapterView; |
import android.widget.ArrayAdapter; |
import android.widget.Button; |
import android.widget.Spinner; |
import android.widget.Toast; |
import android.widget.AdapterView.OnItemSelectedListener; |
public class AddIDActivity extends Activity implements OnClickListener{ |
private Spinner _spinnerPin; |
private Spinner _spinnerFreq; |
private Spinner _spinnerMode; |
private Button _btnAdd; |
private Integer pin; |
private long freq; |
private String mode; |
/** Called when the activity is first created. */ |
@Override |
public void onCreate(Bundle savedInstanceState) { |
super.onCreate(savedInstanceState); |
setContentView(R.layout.class_id_activity); |
_spinnerPin = (Spinner)findViewById(R.id.IDspinnerPin); |
_spinnerFreq = (Spinner)findViewById(R.id.IDspinnerFreq); |
_spinnerMode = (Spinner)findViewById(R.id.IDspinnerMode); |
_btnAdd = (Button)findViewById(R.id.IDbuttonAdd); |
_btnAdd.setOnClickListener(this); |
ArrayAdapter<CharSequence> adapterPin = ArrayAdapter.createFromResource(this, R.array.digital_pins, android.R.layout.simple_spinner_item); |
adapterPin.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); |
_spinnerPin.setAdapter(adapterPin); |
ArrayAdapter<CharSequence> adapterFreq = ArrayAdapter.createFromResource(this, R.array.refresh_rate, android.R.layout.simple_spinner_item); |
adapterFreq.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); |
_spinnerFreq.setAdapter(adapterFreq); |
ArrayAdapter<CharSequence> adapterMode = ArrayAdapter.createFromResource(this, R.array.digital_in_mode, android.R.layout.simple_spinner_item); |
adapterMode.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); |
_spinnerMode.setAdapter(adapterMode); |
_spinnerPin.setOnItemSelectedListener(new OnItemSelectedListener() { |
@Override |
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { |
String str = parent.getItemAtPosition(pos).toString(); |
pin = Integer.parseInt(str); |
} |
@Override |
public void onNothingSelected(AdapterView<?> arg0) { |
// Do Nothing |
} |
}); |
_spinnerFreq.setOnItemSelectedListener(new OnItemSelectedListener() { |
@Override |
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { |
String str = parent.getItemAtPosition(pos).toString(); |
double val = Double.parseDouble(str); |
freq = (long)(val*1000); |
} |
@Override |
public void onNothingSelected(AdapterView<?> arg0) { |
// Do Nothing |
} |
}); |
_spinnerMode.setOnItemSelectedListener(new OnItemSelectedListener() { |
@Override |
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { |
mode = parent.getItemAtPosition(pos).toString(); |
} |
@Override |
public void onNothingSelected(AdapterView<?> arg0) { |
// Do Nothing |
} |
}); |
} |
@Override |
public void onClick(View v) { |
for (Integer i : IOIODebuggerActivity.getOpenedPins()) { |
if (i == pin) { |
Toast.makeText(this, "Specified pin has already been opened", Toast.LENGTH_SHORT).show(); |
return; |
} |
} |
CreateWidget.addID(pin, freq, mode); |
setResult(RESULT_OK); |
finish(); |
} |
} |
/Android Development/IOIODebugger/src/ioio/debugger/AddODActivity.java |
---|
0,0 → 1,92 |
package ioio.debugger; |
import android.app.Activity; |
import android.os.Bundle; |
import android.view.View; |
import android.view.View.OnClickListener; |
import android.widget.AdapterView; |
import android.widget.AdapterView.OnItemSelectedListener; |
import android.widget.ArrayAdapter; |
import android.widget.Button; |
import android.widget.CheckBox; |
import android.widget.Spinner; |
import android.widget.Toast; |
public class AddODActivity extends Activity implements OnClickListener { |
private Spinner _spinnerPin; |
private Spinner _spinnerMode; |
private CheckBox _checkMode; |
private Button _btnAdd; |
private Integer pin; |
private String mode; |
private boolean openDrain; |
/** Called when the activity is first created. */ |
@Override |
public void onCreate(Bundle savedInstanceState) { |
super.onCreate(savedInstanceState); |
setContentView(R.layout.class_od_activity); |
_spinnerPin = (Spinner)findViewById(R.id.ODspinnerPin); |
_spinnerMode = (Spinner)findViewById(R.id.ODspinnerLevel); |
_checkMode = (CheckBox)findViewById(R.id.ODopenDrainMode); |
_btnAdd = (Button)findViewById(R.id.ODbuttonAdd); |
_btnAdd.setOnClickListener(this); |
ArrayAdapter<CharSequence> adapterPin = ArrayAdapter.createFromResource(this, R.array.digital_pins, android.R.layout.simple_spinner_item); |
adapterPin.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); |
_spinnerPin.setAdapter(adapterPin); |
ArrayAdapter<CharSequence> adapterMode = ArrayAdapter.createFromResource(this, R.array.digital_out_mode, android.R.layout.simple_spinner_item); |
adapterMode.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); |
_spinnerMode.setAdapter(adapterMode); |
_spinnerPin.setOnItemSelectedListener(new OnItemSelectedListener() { |
@Override |
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { |
String str = parent.getItemAtPosition(pos).toString(); |
pin = Integer.parseInt(str); |
} |
@Override |
public void onNothingSelected(AdapterView<?> arg0) { |
// Do Nothing |
} |
}); |
_spinnerMode.setOnItemSelectedListener(new OnItemSelectedListener() { |
@Override |
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { |
mode = parent.getItemAtPosition(pos).toString(); |
} |
@Override |
public void onNothingSelected(AdapterView<?> arg0) { |
// Do Nothing |
} |
}); |
} |
@Override |
public void onClick(View v) { |
openDrain = _checkMode.isChecked(); |
for (Integer i : IOIODebuggerActivity.getOpenedPins()) { |
if (i == pin) { |
Toast.makeText(this, "Specified pin has already been opened", Toast.LENGTH_SHORT).show(); |
return; |
} |
} |
CreateWidget.addOD(pin, mode, openDrain); |
setResult(RESULT_OK); |
finish(); |
} |
} |
/Android Development/IOIODebugger/src/ioio/debugger/CreateWidget.java |
---|
0,0 → 1,290 |
package ioio.debugger; |
import android.content.Context; |
import android.content.SharedPreferences; |
import android.preference.PreferenceManager; |
import android.view.LayoutInflater; |
import android.view.View; |
import android.widget.CompoundButton; |
import android.widget.CompoundButton.OnCheckedChangeListener; |
import android.widget.ToggleButton; |
import ioio.lib.api.AnalogInput; |
import ioio.lib.api.DigitalInput; |
import ioio.lib.api.DigitalOutput; |
import ioio.lib.api.IOIO; |
import ioio.lib.api.exception.ConnectionLostException; |
public class CreateWidget { |
public static void addIA(final Integer pin, final long freq) { |
if (!IOIODebuggerActivity.getConnected()) |
return; |
Context ctx = IOIODebuggerActivity.getContext(); |
LayoutInflater inflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE); |
View v = inflater.inflate(R.layout.view_graph_text_widget, IOIODebuggerActivity._viewGroupGraphTextWidget); |
final ViewWidgetGraphText viewWidget = new ViewWidgetGraphText(); |
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(ctx); |
viewWidget.setView(v, false, Integer.parseInt(sharedPrefs.getString("pref_graphLength", "100"))); |
final NetworkClientConnectionHandler networkMgr = IOIODebuggerActivity.get_networkMgr(); |
final Double[] data = new Double[1]; |
Runnable r = new Runnable() { |
@Override |
public void run() { |
IOIODebuggerActivity.addOpenedPin(pin); |
viewWidget.setPin(pin); |
viewWidget.resetStopSignal(); |
if (networkMgr.connectedOk()) |
networkMgr.notifyStartIA(pin, freq); |
IOIO ioio = IOIODebuggerActivity.getIOIOInstance(); |
AnalogInput in = null; |
Float volts; |
try { |
in = ioio.openAnalogInput(pin); |
viewWidget.updateStatus("Pin #" + pin.toString() + " : In : Analog : 3.3v"); |
while (true) { |
if (Thread.currentThread().isInterrupted()) { |
in.close(); |
viewWidget.setStopSignal(); |
IOIODebuggerActivity.removeOpenedPin(pin); |
if (networkMgr.connectedOk()) |
networkMgr.notifyStopPin(pin); |
break; |
} |
volts = in.getVoltage(); |
viewWidget.updateText("Current Voltage: " + volts.toString()); |
viewWidget.updateData((double)volts); |
viewWidget.refreshGraph(); |
if (networkMgr.connectedOk()) { |
data[0] = (double)volts; |
networkMgr.sendData(pin, data); |
} |
Thread.sleep(freq); |
} |
} catch (ConnectionLostException e) { |
viewWidget.updateStatus("Connection Lost"); |
} catch (InterruptedException e) { |
if (in != null) |
in.close(); |
viewWidget.setStopSignal(); |
IOIODebuggerActivity.removeOpenedPin(pin); |
if (networkMgr.connectedOk()) |
networkMgr.notifyStopPin(pin); |
} catch (Exception e) { |
} |
} |
}; |
viewWidget.setRunnable(r); |
IOIODebuggerActivity.setViewWidget(viewWidget); |
} |
public static void addID(final Integer pin, final long freq, final String mode) { |
if (!IOIODebuggerActivity.getConnected()) |
return; |
Context ctx = IOIODebuggerActivity.getContext(); |
LayoutInflater inflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE); |
View v = inflater.inflate(R.layout.view_graph_text_widget, IOIODebuggerActivity._viewGroupGraphTextWidget); |
final ViewWidgetGraphText viewWidget = new ViewWidgetGraphText(); |
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(ctx); |
viewWidget.setView(v, true, Integer.parseInt(sharedPrefs.getString("pref_graphLength", "100"))); |
final NetworkClientConnectionHandler networkMgr = IOIODebuggerActivity.get_networkMgr(); |
final Double[] data = new Double[1]; |
Runnable r = new Runnable() { |
@Override |
public void run() { |
IOIODebuggerActivity.addOpenedPin(pin); |
if (networkMgr.connectedOk()) |
networkMgr.notifyStartID(pin, freq, mode); |
viewWidget.setPin(pin); |
viewWidget.resetStopSignal(); |
IOIO ioio = IOIODebuggerActivity.getIOIOInstance(); |
DigitalInput in = null; |
viewWidget.updateStatus("Pin #" + pin.toString() + " : In : Digital : 3.3v : " + mode); |
try { |
if (mode.compareTo("Float") == 0) { |
in = ioio.openDigitalInput(pin, DigitalInput.Spec.Mode.FLOATING); |
} else if (mode.compareTo("Pull Down") == 0) { |
in = ioio.openDigitalInput(pin, DigitalInput.Spec.Mode.PULL_DOWN); |
} else if (mode.compareTo("Pull Up") == 0) { |
in = ioio.openDigitalInput(pin, DigitalInput.Spec.Mode.PULL_UP); |
} |
while (true) { |
if (Thread.currentThread().isInterrupted()) { |
in.close(); |
viewWidget.setStopSignal(); |
IOIODebuggerActivity.removeOpenedPin(pin); |
if (networkMgr.connectedOk()) |
networkMgr.notifyStopPin(pin); |
break; |
} |
if (in.read()) { |
viewWidget.updateText("Current Input: High"); |
viewWidget.updateData(3.3); |
if (networkMgr.connectedOk()) { |
data[0] = 3.3; |
networkMgr.sendData(pin, data); |
} |
} else { |
viewWidget.updateText("Current Input: Low"); |
viewWidget.updateData(0.0); |
if (networkMgr.connectedOk()) { |
data[0] = 0.0; |
networkMgr.sendData(pin, data); |
} |
} |
viewWidget.refreshGraph(); |
Thread.sleep(freq); |
} |
} catch (ConnectionLostException e) { |
viewWidget.updateStatus("Connection Lost"); |
} catch (InterruptedException e) { |
if (in != null) |
in.close(); |
viewWidget.setStopSignal(); |
IOIODebuggerActivity.removeOpenedPin(pin); |
if (networkMgr.connectedOk()) |
networkMgr.notifyStopPin(pin); |
} |
} |
}; |
viewWidget.setRunnable(r); |
IOIODebuggerActivity.setViewWidget(viewWidget); |
} |
public static void addOD(final Integer pin, final String mode, final boolean openDrain) { |
if (!IOIODebuggerActivity.getConnected()) |
return; |
Context ctx = IOIODebuggerActivity.getContext(); |
LayoutInflater inflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE); |
View v = inflater.inflate(R.layout.view_toggle_text_widget, IOIODebuggerActivity._viewGroupToggleTextWidget); |
final ViewWidgetToggleText viewWidget = new ViewWidgetToggleText(); |
viewWidget.setView(v); |
ToggleButton toggle = (ToggleButton) viewWidget.getView().findViewById(R.id.layout_toggleText_toggle); |
if (mode.compareTo("High") == 0) |
toggle.setChecked(true); |
else |
toggle.setChecked(false); |
final NetworkClientConnectionHandler networkMgr = IOIODebuggerActivity.get_networkMgr(); |
final Double[] data = new Double[1]; |
Runnable r = new Runnable() { |
boolean outputHigh; |
IOIO ioio; |
DigitalOutput out; |
@Override |
public void run() { |
IOIODebuggerActivity.addOpenedPin(pin); |
if (networkMgr.connectedOk()) |
networkMgr.notifyStartOD(pin, mode, openDrain); |
viewWidget.setPin(pin); |
viewWidget.resetStopSignal(); |
if (mode.compareTo("High") == 0) |
outputHigh = true; |
else |
outputHigh = false; |
if (networkMgr.connectedOk()) { |
if (outputHigh) |
data[0] = 3.3; |
else |
data[0] = 0.0; |
networkMgr.sendData(pin, data); |
} |
viewWidget.setToggle(outputHigh); |
ioio = IOIODebuggerActivity.getIOIOInstance(); |
try { |
if (openDrain && outputHigh) |
out = ioio.openDigitalOutput(pin, DigitalOutput.Spec.Mode.OPEN_DRAIN, true); |
else if (openDrain && !outputHigh) |
out = ioio.openDigitalOutput(pin, DigitalOutput.Spec.Mode.OPEN_DRAIN, false); |
else if (!openDrain && outputHigh) |
out = ioio.openDigitalOutput(pin, DigitalOutput.Spec.Mode.NORMAL, true); |
else // (!openDrain && !outputHigh) |
out = ioio.openDigitalOutput(pin, DigitalOutput.Spec.Mode.NORMAL, false); |
if (openDrain) |
viewWidget.updateStatus("Pin #" + pin.toString() + " : Out : Digital : OD : 3.3v"); |
else |
viewWidget.updateStatus("Pin #" + pin.toString() + " : Out : Digital : 3.3v"); |
ToggleButton toggle = (ToggleButton)viewWidget.getView().findViewById(R.id.layout_toggleText_toggle); |
if (toggle.isChecked()) |
outputHigh = true; |
else |
outputHigh = false; |
toggle.setOnCheckedChangeListener(new OnCheckedChangeListener() { |
@Override |
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { |
if (isChecked) { |
outputHigh = true; |
} else { |
outputHigh = false; |
} |
if (networkMgr.connectedOk()) { |
if (outputHigh) |
data[0] = 3.3; |
else |
data[0] = 0.0; |
networkMgr.sendData(pin, data); |
} |
} |
}); |
while (true) { |
if (Thread.currentThread().isInterrupted()) { |
out.close(); |
viewWidget.setStopSignal(); |
IOIODebuggerActivity.removeOpenedPin(pin); |
if (networkMgr.connectedOk()) |
networkMgr.notifyStopPin(pin); |
break; |
} |
if (outputHigh) { |
viewWidget.updateText("Current Output: HIGH"); |
out.write(true); |
} else { |
viewWidget.updateText("Current Output: LOW"); |
out.write(false); |
} |
viewWidget.setToggle(outputHigh); |
Thread.sleep(50); |
} |
} catch (ConnectionLostException e) { |
viewWidget.updateStatus("Connection Lost"); |
} catch (InterruptedException e) { |
if (out != null) |
out.close(); |
viewWidget.setStopSignal(); |
IOIODebuggerActivity.removeOpenedPin(pin); |
if (networkMgr.connectedOk()) |
networkMgr.notifyStopPin(pin); |
} catch (Exception e) { |
} |
} |
}; |
viewWidget.setRunnable(r); |
IOIODebuggerActivity.setViewWidget(viewWidget); |
} |
} |
/Android Development/IOIODebugger/src/ioio/debugger/Debug Protocol Details.txt |
---|
0,0 → 1,24 |
Network Debug Protocol Message Type Details: |
Type# Description |
1 General ACK_SUCCESS |
2 General ACK_FAILURE |
10 Check if connection is ok |
11 Connection ok response |
12 Connection not ok response |
13 Reset board (hard reset) |
50 Start pin |
Type: InAnalog Pin:# Freq:# |
Type: InDigital Pin:# Freq:# Mode:[Float/Pull Up/Pull Down] |
Type: OutDigital Pin:# State:[Low/High] Boolean:[True/False] |
51 Stop pin |
Pin:# |
52 Remove pin |
Pin:# |
70 Send new data |
Pin:# Data:# |
/Android Development/IOIODebugger/src/ioio/debugger/GenericXYSeries.java |
---|
0,0 → 1,53 |
package ioio.debugger; |
import java.util.LinkedList; |
import com.androidplot.series.XYSeries; |
public class GenericXYSeries implements XYSeries { |
private int length; |
private String title; |
private LinkedList<Number> data; |
public GenericXYSeries(String str, int len) { |
title = str; |
length = len; |
data = new LinkedList<Number>(); |
} |
@Override |
public String getTitle() { |
return title; |
} |
@Override |
public int size() { |
return length; |
} |
@Override |
public Number getX(int index) { |
return index; |
} |
@Override |
public Number getY(int index) { |
if (index >= data.size()) |
return 0; |
else |
return data.get(index); |
} |
public void addDataToList(Number num) { |
if (data.size() > length) |
data.removeFirst(); |
data.addLast(num); |
} |
public void clearData() { |
data.clear(); |
} |
public LinkedList<Number> getData() { |
return data; |
} |
} |
/Android Development/IOIODebugger/src/ioio/debugger/GlobalPreferenceActivity.java |
---|
0,0 → 1,70 |
package ioio.debugger; |
import android.content.SharedPreferences; |
import android.content.SharedPreferences.OnSharedPreferenceChangeListener; |
import android.os.Bundle; |
import android.preference.EditTextPreference; |
import android.preference.PreferenceManager; |
import android.text.InputType; |
public class GlobalPreferenceActivity extends android.preference.PreferenceActivity implements OnSharedPreferenceChangeListener { |
private EditTextPreference _pref_serverIP; |
private EditTextPreference _pref_serverPort; |
// private CheckBoxPreference _pref_serverReconnect; |
private EditTextPreference _pref_serverReconnectInterval; |
private EditTextPreference _pref_graphLength; |
private SharedPreferences sharedPrefs; |
@Override |
public void onCreate(Bundle savedInstanceState) { |
super.onCreate(savedInstanceState); |
addPreferencesFromResource(R.xml.preference); |
_pref_serverIP = (EditTextPreference) findPreference("pref_serverIP"); |
_pref_serverPort = (EditTextPreference) findPreference("pref_serverPort"); |
// _pref_serverReconnect = (CheckBoxPreference) findPreference("pref_serverReconnect"); |
_pref_serverReconnectInterval = (EditTextPreference) findPreference("pref_serverReconnectInterval"); |
_pref_graphLength = (EditTextPreference) findPreference("pref_graphLength"); |
sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this); |
} |
@Override |
public void onResume() { |
super.onResume(); |
// Set the summary text to the current value |
_pref_serverIP.setSummary("Current Value: " + sharedPrefs.getString("pref_serverIP", "")); |
_pref_serverPort.setSummary("Current Value: " + sharedPrefs.getString("pref_serverPort", "")); |
_pref_serverReconnectInterval.setSummary("Current Value: " + sharedPrefs.getString("pref_serverReconnectInterval", "")); |
_pref_graphLength.setSummary("Current Value: " + sharedPrefs.getString("pref_graphLength", "")); |
_pref_serverPort.getEditText().setInputType(InputType.TYPE_CLASS_NUMBER); |
_pref_graphLength.getEditText().setInputType(InputType.TYPE_CLASS_NUMBER); |
_pref_serverReconnectInterval.getEditText().setInputType(InputType.TYPE_CLASS_NUMBER); |
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); |
} |
@Override |
public void onPause() { |
super.onPause(); |
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); |
} |
@Override |
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { |
// Change the summary text when the value is changed |
if (key.compareTo("pref_serverIP") == 0) { |
_pref_serverIP.setSummary("Current Value: " + sharedPreferences.getString(key, "")); |
} else if (key.compareTo("pref_serverPort") == 0) { |
_pref_serverPort.setSummary("Current Value: " + sharedPreferences.getString(key, "")); |
} else if (key.compareTo("pref_serverReconnectInterval") == 0) { |
_pref_serverReconnectInterval.setSummary("Current Value: " + sharedPreferences.getString(key, "")); |
} else if (key.compareTo("pref_graphLength") == 0) { |
_pref_graphLength.setSummary("Current Value: " + sharedPrefs.getString("pref_graphLength", "")); |
} |
} |
} |
/Android Development/IOIODebugger/src/ioio/debugger/IOIODebuggerActivity.java |
---|
0,0 → 1,663 |
package ioio.debugger; |
import java.util.ArrayList; |
import ioio.lib.api.IOIO; |
import ioio.lib.api.IOIOFactory; |
import ioio.lib.api.exception.ConnectionLostException; |
import ioio.lib.api.exception.IncompatibilityException; |
import android.app.Activity; |
import android.content.Context; |
import android.content.Intent; |
import android.content.SharedPreferences; |
import android.os.Bundle; |
import android.os.Handler; |
import android.preference.PreferenceManager; |
import android.view.ContextMenu; |
import android.view.ContextMenu.ContextMenuInfo; |
import android.view.Menu; |
import android.view.MenuInflater; |
import android.view.MenuItem; |
import android.view.View; |
import android.view.ViewGroup; |
import android.widget.LinearLayout; |
import android.widget.ProgressBar; |
import android.widget.TextView; |
import android.widget.Toast; |
public class IOIODebuggerActivity extends Activity { |
// Static IOIO instance so other activities can access it |
private static IOIO _IOIOInstance; |
private static ArrayList<Integer> _openedPins = new ArrayList<Integer>(); |
// Static variable for passing ViewWidget classes between activities |
private static ViewWidget retClass; |
// Holds the selected view when the context menu is brought up |
private static View currentlySelectedView; |
// Resources for allocating new ViewWidgets |
private static Context _context; |
public static ViewGroup _viewGroupGraphTextWidget; |
public static ViewGroup _viewGroupToggleTextWidget; |
public static ViewGroup _viewGroupSimpleTextWidget; |
// List of all view widgets to display |
ArrayList<ViewWidget> _viewList = new ArrayList<ViewWidget>(); |
private static Boolean _connected = false; |
private static Handler _handler = new Handler(); |
private Boolean _connectionReset = true; |
private Thread _connectionMonitor; |
private TextView _status; |
private TextView _statusServer; |
private LinearLayout _mainLayout; |
private LinearLayout _rootLayout; |
private ProgressBar _statusProgress; |
// Identifiers for started activities |
static final int ACTIVITY_INPUT_ANALOG = 0; |
static final int ACTIVITY_INPUT_DIGITAL = 1; |
static final int ACTIVITY_INPUT_PULSE = 2; |
static final int ACTIVITY_OUTPUT_DIGITAL = 3; |
static final int ACTIVITY_OUTPUT_PULSE = 4; |
// Connection manager to the server |
private static NetworkClientConnectionHandler _networkMgr; |
@Override |
public boolean onCreateOptionsMenu(Menu menu) { |
MenuInflater inflater = getMenuInflater(); |
inflater.inflate(R.menu.mainmenu, menu); |
return true; |
} |
@Override |
public boolean onOptionsItemSelected(MenuItem item) { |
// Handle item selection |
if (item.getItemId() != R.id.menuOptions && |
item.getItemId() != R.id.menuShowPinDetails && |
item.getItemId() != R.id.menuConnect && |
item.getItemId() != R.id.menuDisconnectFromServer && |
!_connected) { |
Toast.makeText(this, "IOIO board not connected", Toast.LENGTH_SHORT).show(); |
return true; |
} |
switch (item.getItemId()) { |
case R.id.addIA: |
// Show activity to add new monitoring instance |
startActivityForResult(new Intent(this, AddIAActivity.class), ACTIVITY_INPUT_ANALOG); |
return true; |
case R.id.addID: |
// Show activity to add new monitoring instance |
startActivityForResult(new Intent(this, AddIDActivity.class), ACTIVITY_INPUT_DIGITAL); |
return true; |
case R.id.addOD: |
// Show activity to add new monitoring instance |
startActivityForResult(new Intent(this, AddODActivity.class), ACTIVITY_OUTPUT_DIGITAL); |
return true; |
case R.id.menuOptions: |
// Show options/preferences menu |
startActivity(new Intent(this, GlobalPreferenceActivity.class)); |
return true; |
case R.id.menuShowPinDetails: |
// Pullup a list of pin and their details |
startActivity(new Intent(this, PinDetailActivity.class)); |
return true; |
case R.id.menuHardReset: |
hardReset(); |
return true; |
case R.id.menuResetMonitor: |
// Send command to clear all temp stored data |
clearAllMonitoredData(); |
return true; |
case R.id.menuDisconnectFromServer: |
// Disconnect from the server if connected |
if (_networkMgr.connectedOk()) |
_networkMgr.disconnectFromServer(); |
return true; |
case R.id.menuPauseAll: |
pauseAll(); |
return true; |
case R.id.menuResumeAll: |
resumeAll(); |
return true; |
case R.id.menuConnect: |
// Initiate connection to Netty server |
connectToServer(); |
return true; |
default: |
return super.onOptionsItemSelected(item); |
} |
} |
@Override |
/** Create a context menu that comes up on selection of a view */ |
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { |
super.onCreateContextMenu(menu, v, menuInfo); |
MenuInflater inflater = getMenuInflater(); |
inflater.inflate(R.menu.viewcontextmenu, menu); |
currentlySelectedView = v; |
} |
@Override |
public boolean onContextItemSelected(MenuItem item) { |
ViewWidget vw; |
// Operates on the individual widget views depending on the option selected |
switch (item.getItemId()) { |
case R.id.menuContextPause: |
stopViewWidget(currentlySelectedView); |
return true; |
case R.id.menuContextResume: |
startViewWidget(currentlySelectedView); |
return true; |
case R.id.menuContextRemove: |
removeViewWidget(currentlySelectedView); |
return true; |
case R.id.menuContextMoveDown: |
// Find the selected view |
for (int i = 0; i < _viewList.size()-1; i++) { |
vw = _viewList.get(i); |
if (vw.getView() == currentlySelectedView) { |
// Relocate the widget in the list |
_viewList.remove(i); |
_viewList.add(i+1, vw); |
// Remove view and divider after the view |
_mainLayout.removeViewAt(i*2); |
_mainLayout.removeViewAt(i*2); |
// Add a new divider |
addDivider(i*2+1); |
// Add the view |
_mainLayout.addView(vw.getView(), i*2+2); |
break; |
} |
} |
return true; |
case R.id.menuContextMoveUp: |
// Find the selected view |
for (int i = 1; i < _viewList.size(); i++) { |
vw = _viewList.get(i); |
if (vw.getView() == currentlySelectedView) { |
// Relocate the widget in the list |
_viewList.remove(i); |
_viewList.add(i-1, vw); |
// Remove view and divider before the view |
_mainLayout.removeViewAt(i*2); |
_mainLayout.removeViewAt(i*2-1); |
// Add a new divider |
addDivider(i*2-2); |
// Add the view |
_mainLayout.addView(vw.getView(), i*2-2); |
break; |
} |
} |
return true; |
default: |
return super.onContextItemSelected(item); |
} |
} |
/** Called when the activity is first created. */ |
@Override |
public void onCreate(Bundle savedInstanceState) { |
super.onCreate(savedInstanceState); |
setContentView(R.layout.main); |
_status = (TextView)findViewById(R.id.textStatus); |
_mainLayout = (LinearLayout)findViewById(R.id.mainLayout); |
_rootLayout = (LinearLayout)findViewById(R.id.rootLayout); |
_statusProgress = (ProgressBar)findViewById(R.id.progressStatus); |
_statusServer = new TextView(this); |
_rootLayout.addView(_statusServer, 0); |
_statusServer.setVisibility(8); |
_context = getApplicationContext(); |
_viewGroupSimpleTextWidget = (ViewGroup) findViewById(R.id.layout_simpleText_root); |
_viewGroupGraphTextWidget = (ViewGroup) findViewById(R.id.layout_graphText_root); |
_viewGroupToggleTextWidget = (ViewGroup) findViewById(R.id.layout_toggleText_root); |
_networkMgr = new NetworkClientConnectionHandler(this); |
// Start connection monitoring thread for the IOIO board |
connectToIOIOBoard(); |
} |
@Override |
public void onDestroy() { |
super.onDestroy(); |
// Stop all monitoring update threads |
for (ViewWidget vw : _viewList) |
vw.stopThread(); |
_connectionMonitor.interrupt(); |
_IOIOInstance.disconnect(); |
_openedPins.clear(); |
_connected = false; |
_networkMgr.stopAutoReconnect(); |
// Disconnect from server if connected |
if (_networkMgr.isConnected()) |
_networkMgr.disconnectFromServer(); |
} |
@Override |
public void onActivityResult(int requestCode, int resultCode, Intent data) { |
if (resultCode == RESULT_CANCELED) { |
return; |
} else { |
processAddWidget(requestCode); |
} |
} |
/** Called by internal/external functions to add a widget after setting retClass |
* |
* @param requestCode one of the static codes from this class eg. ACTIVITY_INPUT_ANALOG |
*/ |
public void processAddWidget(final int requestCode) { |
_handler.post(new Runnable() { |
@Override |
public void run() { |
if (_mainLayout.getChildCount() != 0) { |
// Insert a divider before each entry but not the first entry |
addDivider(_mainLayout.getChildCount()); |
} |
switch (requestCode) { |
case ACTIVITY_INPUT_ANALOG: |
_mainLayout.addView(retClass.getView()); |
retClass.startThread(); |
_viewList.add(retClass); |
registerForContextMenu(retClass.getView()); |
return; |
case ACTIVITY_INPUT_DIGITAL: |
_mainLayout.addView(retClass.getView()); |
retClass.startThread(); |
_viewList.add(retClass); |
registerForContextMenu(retClass.getView()); |
return; |
case ACTIVITY_OUTPUT_DIGITAL: |
_mainLayout.addView(retClass.getView()); |
retClass.startThread(); |
_viewList.add(retClass); |
registerForContextMenu(retClass.getView()); |
return; |
} |
} |
}); |
} |
/** Start the server using values from shared preferences */ |
private void connectToServer() { |
// Show the server status message |
_statusServer.setVisibility(0); |
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this); |
String server = sharedPrefs.getString("pref_serverIP", ""); |
int port = Integer.parseInt(sharedPrefs.getString("pref_serverPort", "0")); |
boolean reconnect = sharedPrefs.getBoolean("pref_serverReconnect", false); |
int reconnectInterval = Integer.parseInt(sharedPrefs.getString("pref_serverReconnectInterval", "3000")); |
get_networkMgr().setConnectionSettings(server, port, reconnect, reconnectInterval); |
get_networkMgr().startConnect(); |
} |
/** Change the server status message text */ |
public void updateServerStatus(final String str) { |
_handler.post(new Runnable() { |
@Override |
public void run() { |
_statusServer.setText(str); |
} |
}); |
} |
/** Starts the thread that monitors the connection to the IOIO board */ |
private void connectToIOIOBoard() { |
_connectionMonitor = new Thread(new Runnable() { |
@Override |
public void run() { |
while (true) { |
try { |
// Check if a new instance of IOIO needs to be created |
// Reset is only triggered when a disconnect happens |
if (_connectionReset) { |
updateStatus("Waiting to connect to the IOIO board..."); |
toggleProgressOn(); |
_IOIOInstance = IOIOFactory.create(); |
_connectionReset = false; |
} |
// Check if thread should keep running |
if (Thread.currentThread().isInterrupted()) { |
break; |
} |
// Attempt to connect to the IOIO board |
// If the board was disconnected, ConnectionLostException is thrown |
_IOIOInstance.waitForConnect(); |
_connected = true; |
updateStatus("Connected to the IOIO board"); |
toggleProgressOff(); |
Thread.sleep(500); |
} catch (ConnectionLostException e) { |
// Reset the connection so reconnection attempts can be made |
_connected = false; |
_connectionReset = true; |
connectionReset(); |
updateStatus("Connection to the IOIO board has be lost"); |
} catch (IncompatibilityException e) { |
_connected = false; |
_connectionReset = true; |
connectionReset(); |
updateStatus("Connected IOIO board is incompatible"); |
} catch (InterruptedException e) { |
break; |
} |
} |
} |
}); |
_connectionMonitor.start(); |
} |
/** Called when the connection to the IOIO board is reset */ |
private void connectionReset() { |
_handler.post(new Runnable() { |
@Override |
public void run() { |
// Stop all threads and remove all views |
for (ViewWidget view : _viewList) { |
view.stopThread(); |
if (_networkMgr.connectedOk()) |
_networkMgr.notifyRemovePin(view.getPin()); |
} |
_openedPins.clear(); |
_mainLayout.removeAllViews(); |
_viewList.clear(); |
} |
}); |
} |
/** Adds a divider at location in mainLayout */ |
private void addDivider(int index) { |
View ruler = new View(this); |
ruler.setBackgroundColor(0xAAAAAAAA); |
_mainLayout.addView(ruler, index, new ViewGroup.LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, 2)); |
} |
private void pauseAll() { |
_handler.post(new Runnable() { |
@Override |
public void run() { |
if (_viewList.size() != 0) { |
for (ViewWidget vw : _viewList) { |
if (vw.getThread().isAlive()) |
vw.stopThread(); |
} |
} |
} |
}); |
} |
private void resumeAll() { |
_handler.post(new Runnable() { |
@Override |
public void run() { |
if (_viewList.size() != 0) { |
for (ViewWidget vw : _viewList) { |
if (!vw.getThread().isAlive()) |
vw.startThread(); |
} |
} |
} |
}); |
} |
/** Clear all stored data */ |
private void clearAllMonitoredData() { |
for (ViewWidget vw : _viewList) { |
vw.clearData(); |
} |
} |
/** |
* A soft reset means "return everything to its initial state". |
* This includes closing all interfaces obtained from this IOIO |
* instance, and in turn freeing all resources. All pins (save |
* the stat LED) will become floating inputs. All modules will |
* be powered off. These operations are done without dropping |
* the connection with the IOIO, thus a soft reset is very fast. |
*/ |
// private void softReset() { |
// try { |
// _IOIOInstance.softReset(); |
// } catch (ConnectionLostException e) { |
// synchronized (_connected) { |
// _connected = false; |
// _connectionReset = true; |
// connectionReset(); |
// updateStatus("Connection to the IOIO board has be lost"); |
// } |
// } |
// } |
/** |
* A hard reset is exactly like physically powering off the IOIO |
* board and powering it back on. As a result, the connection |
* with the IOIO will drop and the IOIO instance will become |
* disconnected and unusable. The board will perform a full reboot, |
* including going through the bootloader sequence, i.e. an attempt |
* to update the board's firmware will be made. |
*/ |
public void hardReset() { |
try { |
_IOIOInstance.hardReset(); |
} catch (ConnectionLostException e) { |
_connected = false; |
_connectionReset = true; |
connectionReset(); |
updateStatus("Connection to the IOIO board has be lost"); |
} |
} |
private void toggleProgressOn() { |
_handler.post(new Runnable() { |
@Override |
public void run() { |
_statusProgress.setVisibility(View.VISIBLE); |
} |
}); |
} |
private void toggleProgressOff() { |
_handler.post(new Runnable() { |
@Override |
public void run() { |
_statusProgress.setVisibility(View.GONE); |
} |
}); |
} |
/** |
* Updates the status label |
* |
* @param text The string for the label to be set to |
*/ |
private void updateStatus(final String text) { |
_handler.post(new Runnable() { |
@Override |
public void run() { |
_status.setText("Status: " + text); |
} |
}); |
} |
/** Returns the static IOIO instance */ |
public static IOIO getIOIOInstance() { |
return _IOIOInstance; |
} |
/** Returns the context of the application */ |
public static Context getContext() { |
return _context; |
} |
/** Returns the list of opened pins */ |
public static ArrayList<Integer> getOpenedPins() { |
return _openedPins; |
} |
/** Adds a pin to the list of opened pins */ |
public static void addOpenedPin(Integer i) { |
_openedPins.add(i); |
} |
/** Removes a pin from the list of opened pins */ |
public static void removeOpenedPin(Integer i) { |
_openedPins.remove(i); |
} |
// /** Returns the static retClass ViewWidget */ |
// public static ViewWidget getViewWidget() { |
// return retClass; |
// } |
/** Sets the current static retClass ViewWidget */ |
public static void setViewWidget(final ViewWidget retClass) { |
_handler.post(new Runnable() { |
@Override |
public void run() { |
IOIODebuggerActivity.retClass = retClass; |
} |
}); |
} |
/** Returns the static NetworkClientConnectionHandler */ |
public static NetworkClientConnectionHandler get_networkMgr() { |
return _networkMgr; |
} |
/** Signal all monitoring threads to send history of saved data */ |
public void sendAllData() { |
for (ViewWidget vw : _viewList) { |
vw.sendDataHistory(); |
} |
} |
/** Sends new data to the server */ |
public static void sendData(int pin, Double[] d) { |
_networkMgr.sendData(pin, d); |
} |
/** Queries if the IOIO board is currently connected */ |
public static boolean getConnected() { |
return _connected; |
} |
/** Starts the updater thread for the specified view */ |
public void startViewWidget(View vw) { |
// Find the selected view |
for (ViewWidget vww : _viewList) { |
if (vww.getView() == currentlySelectedView) { |
vww.startThread(); |
break; |
} |
} |
} |
/** Stops the updater thread for the specified view */ |
public void stopViewWidget(View vw) { |
// Find the selected view |
for (ViewWidget vww : _viewList) { |
if (vww.getView() == currentlySelectedView) { |
vww.stopThread(); |
break; |
} |
} |
} |
/** Stops the updater thread for the ViewWidget with the specified pin */ |
public void stopViewWidget(int pin) { |
// Find the selected view |
for (ViewWidget vww : _viewList) { |
if (vww.getPin() == pin) { |
vww.stopThread(); |
break; |
} |
} |
} |
/** Removes the ViewWidget that has the specified view */ |
public void removeViewWidget(View view) { |
ViewWidget vw; |
// Find the selected view |
for (int i = 0; i < _viewList.size(); i++) { |
vw = _viewList.get(i); |
if (vw.getView() == view) { |
vw.stopThread(); |
// If the widget to remove is the first one and there is only one |
if (i == 0 && _viewList.size() == 1) { |
_mainLayout.removeViewAt(0); |
// If the widget to remove is the first one and there is more than one |
} else if (i == 0 && _viewList.size() > 1) { |
_mainLayout.removeViewAt(0); |
_mainLayout.removeViewAt(0); |
// If the widget to remove is the last one |
} else if (i == _viewList.size()-1) { |
_mainLayout.removeViewAt(_mainLayout.getChildCount()-1); |
_mainLayout.removeViewAt(_mainLayout.getChildCount()-1); |
} else { |
// Remove the widget at the specified location |
_mainLayout.removeViewAt(i*2); |
_mainLayout.removeViewAt(i*2); |
} |
// Notify the server that a pin is being removed |
if (_networkMgr.connectedOk()) |
_networkMgr.notifyRemovePin(vw.getPin()); |
_viewList.remove(i); |
break; |
} |
} |
} |
/** Removes the ViewWidget with the specified pin */ |
public void removeViewWidget(int pin) { |
ViewWidget vw; |
// Find the selected view |
for (int i = 0; i < _viewList.size(); i++) { |
vw = _viewList.get(i); |
if (vw.getPin() == pin) { |
vw.stopThread(); |
// If the widget to remove is the first one and there is only one |
if (i == 0 && _viewList.size() == 1) { |
_mainLayout.removeViewAt(0); |
// If the widget to remove is the first one and there is more than one |
} else if (i == 0 && _viewList.size() > 1) { |
_mainLayout.removeViewAt(0); |
_mainLayout.removeViewAt(0); |
// If the widget to remove is the last one |
} else if (i == _viewList.size()-1) { |
_mainLayout.removeViewAt(_mainLayout.getChildCount()-1); |
_mainLayout.removeViewAt(_mainLayout.getChildCount()-1); |
} else { |
// Remove the widget at the specified location |
_mainLayout.removeViewAt(i*2); |
_mainLayout.removeViewAt(i*2); |
} |
// Notify the server that a pin is being removed |
if (_networkMgr.connectedOk()) |
_networkMgr.notifyRemovePin(vw.getPin()); |
_viewList.remove(i); |
break; |
} |
} |
} |
} |
/Android Development/IOIODebugger/src/ioio/debugger/NetworkClient.java |
---|
0,0 → 1,55 |
/************************************************************************** |
* Copyright 2011 Jules White |
* |
* Licensed under the Apache License, Version 2.0 (the "License"); |
* you may not use this file except in compliance with the License. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
***************************************************************************/ |
package ioio.debugger; |
import java.net.InetSocketAddress; |
import java.util.concurrent.Executors; |
import org.jboss.netty.bootstrap.ClientBootstrap; |
import org.jboss.netty.channel.Channel; |
import org.jboss.netty.channel.ChannelFuture; |
import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory; |
public class NetworkClient { |
@SuppressWarnings("rawtypes") |
public static NetworkClientHandler connect(String host, int port) throws Exception { |
// Configure the client. |
ClientBootstrap bootstrap = new ClientBootstrap( |
new NioClientSocketChannelFactory( |
Executors.newCachedThreadPool(), |
Executors.newCachedThreadPool())); |
// Configure the pipeline factory. |
bootstrap.setPipelineFactory(new NetworkClientPipelineFactory()); |
// Start the connection attempt. |
ChannelFuture future = bootstrap.connect(new InetSocketAddress(host, port)); |
// Wait until the connection attempt succeeds or fails. |
Channel channel = future.awaitUninterruptibly().getChannel(); |
if (!future.isSuccess()) { |
future.getCause().printStackTrace(); |
bootstrap.releaseExternalResources(); |
return null; |
} |
return channel.getPipeline().get(NetworkClientHandler.class); |
} |
} |
/Android Development/IOIODebugger/src/ioio/debugger/NetworkClientConnectionHandler.java |
---|
0,0 → 1,356 |
package ioio.debugger; |
import java.util.List; |
import ioio.debugger.NetworkIOIOProtocol.Message; |
import ioio.debugger.NetworkIOIOProtocol.Message.Builder; |
import ioio.debugger.NetworkIOIOProtocol.TrackingMessage; |
import org.jboss.netty.channel.Channel; |
import android.os.Handler; |
public class NetworkClientConnectionHandler implements NetworkMessageHandler<TrackingMessage> { |
// Message handler for sending messages to server |
private NetworkClientHandler<NetworkIOIOProtocol.TrackingMessage> msgHandler_; |
private Boolean connected_ = false; |
private boolean connectionOk_ = false; |
private long reconnectInterval_ = 3000; |
private boolean autoReconnect_ = false; |
private String server_; |
private int port_; |
private IOIODebuggerActivity parent_; |
private Thread connection_; |
private Handler handler_ = new Handler(); |
public NetworkClientConnectionHandler(IOIODebuggerActivity parent) { |
parent_ = parent; |
connection_ = new Thread(); |
} |
public void setConnectionSettings(final String server, final int port, final boolean autoReconnect, final long reconnectInterval) { |
handler_.post(new Runnable() { |
@Override |
public void run() { |
server_ = server; |
port_ = port; |
autoReconnect_ = autoReconnect; |
reconnectInterval_ = reconnectInterval; |
} |
}); |
} |
@Override |
public void channelException(Throwable e) { |
synchronized (connected_) { |
parent_.updateServerStatus("Exception occured contacting server"); |
connected_ = false; |
connectionOk_ = false; |
} |
} |
@Override |
public void channelClosed(Channel c) { |
synchronized (connected_) { |
parent_.updateServerStatus("Connection to server closed"); |
connected_ = false; |
connectionOk_ = false; |
} |
} |
@Override |
public void received(final TrackingMessage msg) { |
handler_.post(new Runnable() { |
@Override |
public void run() { |
List<Message> messageList; |
switch(msg.getType()) { |
case 11: |
parent_.updateServerStatus("Connected to server [ " + server_ + " :: " + port_ + " ]"); |
connectionOk_ = true; |
parent_.sendAllData(); |
break; |
case 12: |
parent_.updateServerStatus("Connection to server rejected. Try again?"); |
disconnectFromServer(); |
break; |
case 13: |
parent_.hardReset(); |
break; |
case 50: |
messageList = msg.getMessageList(); |
for (Message message : messageList) { |
String type = message.getType(); |
if (type.compareTo("InAnalog") == 0) { |
CreateWidget.addIA(message.getPin(), message.getFreq()); |
parent_.processAddWidget(IOIODebuggerActivity.ACTIVITY_INPUT_ANALOG); |
} else if (type.compareTo("InDigital") == 0) { |
CreateWidget.addID(message.getPin(), message.getFreq(), message.getMode()); |
parent_.processAddWidget(IOIODebuggerActivity.ACTIVITY_INPUT_DIGITAL); |
} else if (type.compareTo("OutDigital") == 0) { |
CreateWidget.addOD(message.getPin(), message.getMode(), message.getBoolean()); |
parent_.processAddWidget(IOIODebuggerActivity.ACTIVITY_OUTPUT_DIGITAL); |
} |
} |
break; |
case 51: |
messageList = msg.getMessageList(); |
for (Message message : messageList) { |
parent_.stopViewWidget(message.getPin()); |
} |
break; |
case 52: |
messageList = msg.getMessageList(); |
for (Message message : messageList) { |
parent_.removeViewWidget(message.getPin()); |
} |
} |
} |
}); |
} |
@SuppressWarnings("unchecked") |
public boolean connectToServer() { |
try { |
synchronized (connected_) { |
if (connected_) |
return true; |
parent_.updateServerStatus("Connecting to server..."); |
msgHandler_ = NetworkClient.connect(server_, port_); |
msgHandler_.setListener(this); |
connected_ = true; |
// Wait a bit for the connection to finish initialization |
Thread.sleep(500); |
// Queries if connection is ok |
TrackingMessage newMsg = TrackingMessage.newBuilder() |
.setId(0) |
.setType(10) |
.build(); |
msgHandler_.send(newMsg); |
} |
return true; |
} catch (Exception e) { |
parent_.updateServerStatus("Unable to connect to server"); |
return false; |
} |
} |
private class ConnectWorker implements Runnable { |
public void run() { |
doConnect(); |
} |
public void doConnect() { |
try { |
if (!connectToServer()) { |
while (autoReconnect_ && !connectToServer()) { |
parent_.updateServerStatus("Waiting to reconnect to server..."); |
Thread.sleep(reconnectInterval_); |
} |
} |
} catch (Exception e) { |
doConnect(); |
} |
} |
} |
public void startConnect() { |
handler_.post(new Runnable() { |
@Override |
public void run() { |
ConnectWorker w = new ConnectWorker(); |
connection_ = new Thread(w); |
connection_.start(); |
} |
}); |
} |
public void stopAutoReconnect() { |
autoReconnect_ = false; |
} |
public void disconnectFromServer() { |
synchronized (connected_) { |
connected_ = false; |
connectionOk_ = false; |
autoReconnect_ = false; |
msgHandler_.disconnect(); |
parent_.updateServerStatus("Disconnected from server"); |
} |
} |
public Boolean isConnected() { |
return connected_; |
} |
public boolean connectedOk() { |
return connectionOk_; |
} |
public void notifyACK_Success() { |
handler_.post(new Runnable() { |
@Override |
public void run() { |
TrackingMessage newMsg = TrackingMessage.newBuilder() |
.setId(0) |
.setType(1) |
.build(); |
msgHandler_.send(newMsg); |
} |
}); |
} |
public void notifyACK_Failure() { |
handler_.post(new Runnable() { |
@Override |
public void run() { |
TrackingMessage newMsg = TrackingMessage.newBuilder() |
.setId(0) |
.setType(2) |
.build(); |
msgHandler_.send(newMsg); |
} |
}); |
} |
public void notifyStartIA(final int pin, final long freq) { |
handler_.post(new Runnable() { |
@Override |
public void run() { |
Builder message = Message.newBuilder() |
.setPin(pin) |
.setFreq(freq) |
.setType("InAnalog"); |
TrackingMessage newMsg = TrackingMessage.newBuilder() |
.setId(0) |
.setType(50) |
.addMessage(message) |
.build(); |
msgHandler_.send(newMsg); |
} |
}); |
} |
public void notifyStartID(final int pin, final long freq, final String mode) { |
handler_.post(new Runnable() { |
@Override |
public void run() { |
Builder message = Message.newBuilder() |
.setPin(pin) |
.setFreq(freq) |
.setMode(mode) |
.setType("InDigital"); |
TrackingMessage newMsg = TrackingMessage.newBuilder() |
.setId(0) |
.setType(50) |
.addMessage(message) |
.build(); |
msgHandler_.send(newMsg); |
} |
}); |
} |
public void notifyStartOD(final int pin, final String state, final boolean openDrain) { |
handler_.post(new Runnable() { |
@Override |
public void run() { |
Builder message = Message.newBuilder() |
.setPin(pin) |
.setState(state) |
.setBoolean(openDrain) |
.setType("OutDigital"); |
TrackingMessage newMsg = TrackingMessage.newBuilder() |
.setId(0) |
.setType(50) |
.addMessage(message) |
.build(); |
msgHandler_.send(newMsg); |
} |
}); |
} |
public void notifyStopPin(final int pin) { |
handler_.post(new Runnable() { |
@Override |
public void run() { |
Builder message = Message.newBuilder() |
.setPin(pin); |
TrackingMessage newMsg = TrackingMessage.newBuilder() |
.setId(0) |
.setType(51) |
.addMessage(message) |
.build(); |
msgHandler_.send(newMsg); |
} |
}); |
} |
public void notifyRemovePin(final int pin) { |
handler_.post(new Runnable() { |
@Override |
public void run() { |
Builder message = Message.newBuilder() |
.setPin(pin); |
TrackingMessage newMsg = TrackingMessage.newBuilder() |
.setId(0) |
.setType(52) |
.addMessage(message) |
.build(); |
msgHandler_.send(newMsg); |
} |
}); |
} |
public void sendData(final int pin, final Double[] data) { |
handler_.post(new Runnable() { |
@Override |
public void run() { |
ioio.debugger.NetworkIOIOProtocol.TrackingMessage.Builder newMsg = TrackingMessage.newBuilder() |
.setId(0) |
.setType(70); |
Builder message = Message.newBuilder().setPin(pin); |
for (double d : data) { |
message.addData(d); |
} |
newMsg.addMessage(message); |
msgHandler_.send(newMsg.build()); |
} |
}); |
} |
} |
/Android Development/IOIODebugger/src/ioio/debugger/NetworkClientHandler.java |
---|
0,0 → 1,116 |
/************************************************************************** |
* Copyright 2011 Jules White |
* |
* Licensed under the Apache License, Version 2.0 (the "License"); |
* you may not use this file except in compliance with the License. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
***************************************************************************/ |
package ioio.debugger; |
import java.util.logging.Level; |
import java.util.logging.Logger; |
import org.jboss.netty.channel.Channel; |
import org.jboss.netty.channel.ChannelEvent; |
import org.jboss.netty.channel.ChannelFuture; |
import org.jboss.netty.channel.ChannelFutureListener; |
import org.jboss.netty.channel.ChannelHandlerContext; |
import org.jboss.netty.channel.ChannelStateEvent; |
import org.jboss.netty.channel.ExceptionEvent; |
import org.jboss.netty.channel.MessageEvent; |
import org.jboss.netty.channel.SimpleChannelUpstreamHandler; |
import android.util.Log; |
/** |
* Handles a client-side channel. |
* |
* @author <a href="http://www.jboss.org/netty/">The Netty Project</a> |
* @author <a href="http://gleamynode.net/">Trustin Lee</a> |
* |
* @version $Rev: 2121 $, $Date: 2010-02-02 09:38:07 +0900 (Tue, 02 Feb 2010) $ |
*/ |
public class NetworkClientHandler<T> extends SimpleChannelUpstreamHandler { |
private static final String TAG = NetworkClientHandler.class.getName(); |
private NetworkMessageHandler<T> listener_; |
private Channel channel_; |
private static final Logger logger = Logger |
.getLogger(NetworkClientHandler.class.getName()); |
public void disconnect(){ |
channel_.disconnect(); |
} |
@Override |
public void handleUpstream(ChannelHandlerContext ctx, ChannelEvent e) |
throws Exception { |
if (e instanceof ChannelStateEvent) { |
logger.info(e.toString()); |
} |
super.handleUpstream(ctx, e); |
} |
// @Override |
public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) |
throws Exception { |
channel_ = e.getChannel(); |
channel_.getCloseFuture().addListener(new ChannelFutureListener() { |
@Override |
public void operationComplete(ChannelFuture future) |
throws Exception { |
listener_.channelClosed(channel_); |
} |
}); |
} |
@Override |
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) { |
if (listener_ != null) { |
@SuppressWarnings("unchecked") |
T msg = (T) e.getMessage(); |
listener_.received(msg); |
} else { |
System.err.println(e.getMessage()); |
} |
} |
public void send(NetworkIOIOProtocol.TrackingMessage msg) { |
channel_.write(msg); |
} |
@Override |
public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) { |
logger.log(Level.WARNING, "Unexpected exception from downstream.", |
e.getCause()); |
e.getChannel().close(); |
if(listener_ != null) |
listener_.channelException(e.getCause()); |
else |
Log.e(TAG, "Error communicating with server",e.getCause()); |
} |
public NetworkMessageHandler<T> getListener() { |
return listener_; |
} |
public void setListener(NetworkMessageHandler<T> listener) { |
listener_ = listener; |
} |
} |
/Android Development/IOIODebugger/src/ioio/debugger/NetworkClientPipelineFactory.java |
---|
0,0 → 1,54 |
/************************************************************************** |
* Copyright 2011 Jules White |
* |
* Licensed under the Apache License, Version 2.0 (the "License"); |
* you may not use this file except in compliance with the License. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
***************************************************************************/ |
package ioio.debugger; |
import static org.jboss.netty.channel.Channels.pipeline; |
import org.jboss.netty.channel.ChannelPipeline; |
import org.jboss.netty.channel.ChannelPipelineFactory; |
import org.jboss.netty.handler.codec.protobuf.ProtobufDecoder; |
import org.jboss.netty.handler.codec.protobuf.ProtobufEncoder; |
import org.jboss.netty.handler.codec.protobuf.ProtobufVarint32FrameDecoder; |
import org.jboss.netty.handler.codec.protobuf.ProtobufVarint32LengthFieldPrepender; |
/** |
* Creates a newly configured {@link ChannelPipeline} for a new channel. |
* |
* @author <a href="http://www.jboss.org/netty/">The Netty Project</a> |
* @author <a href="http://gleamynode.net/">Trustin Lee</a> |
* |
* @version $Rev: 2080 $, $Date: 2010-01-26 18:04:19 +0900 (Tue, 26 Jan 2010) $ |
* |
*/ |
public class NetworkClientPipelineFactory implements ChannelPipelineFactory { |
public ChannelPipeline getPipeline() throws Exception { |
ChannelPipeline pipeline = pipeline(); |
pipeline.addLast("frameDecoder", new ProtobufVarint32FrameDecoder()); |
pipeline.addLast("protobufDecoder", new ProtobufDecoder( |
NetworkIOIOProtocol.TrackingMessage.getDefaultInstance())); |
pipeline.addLast("frameEncoder", |
new ProtobufVarint32LengthFieldPrepender()); |
pipeline.addLast("protobufEncoder", new ProtobufEncoder()); |
// and then business logic. |
pipeline.addLast("handler", new NetworkClientHandler<NetworkIOIOProtocol.TrackingMessage>()); |
return pipeline; |
} |
} |
/Android Development/IOIODebugger/src/ioio/debugger/NetworkIOIOProtocol.java |
---|
0,0 → 1,1591 |
// Generated by the protocol buffer compiler. DO NOT EDIT! |
// source: NetworkIOIOProtocol.proto |
package ioio.debugger; |
public final class NetworkIOIOProtocol { |
private NetworkIOIOProtocol() {} |
public static void registerAllExtensions( |
com.google.protobuf.ExtensionRegistry registry) { |
} |
public interface TrackingMessageOrBuilder |
extends com.google.protobuf.MessageOrBuilder { |
// required int32 id = 1; |
boolean hasId(); |
int getId(); |
// required int32 type = 2; |
boolean hasType(); |
int getType(); |
// repeated .ioio.debugger.Message message = 3; |
java.util.List<ioio.debugger.NetworkIOIOProtocol.Message> |
getMessageList(); |
ioio.debugger.NetworkIOIOProtocol.Message getMessage(int index); |
int getMessageCount(); |
java.util.List<? extends ioio.debugger.NetworkIOIOProtocol.MessageOrBuilder> |
getMessageOrBuilderList(); |
ioio.debugger.NetworkIOIOProtocol.MessageOrBuilder getMessageOrBuilder( |
int index); |
} |
public static final class TrackingMessage extends |
com.google.protobuf.GeneratedMessage |
implements TrackingMessageOrBuilder { |
// Use TrackingMessage.newBuilder() to construct. |
private TrackingMessage(Builder builder) { |
super(builder); |
} |
private TrackingMessage(boolean noInit) {} |
private static final TrackingMessage defaultInstance; |
public static TrackingMessage getDefaultInstance() { |
return defaultInstance; |
} |
public TrackingMessage getDefaultInstanceForType() { |
return defaultInstance; |
} |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return ioio.debugger.NetworkIOIOProtocol.internal_static_ioio_debugger_TrackingMessage_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return ioio.debugger.NetworkIOIOProtocol.internal_static_ioio_debugger_TrackingMessage_fieldAccessorTable; |
} |
private int bitField0_; |
// required int32 id = 1; |
public static final int ID_FIELD_NUMBER = 1; |
private int id_; |
public boolean hasId() { |
return ((bitField0_ & 0x00000001) == 0x00000001); |
} |
public int getId() { |
return id_; |
} |
// required int32 type = 2; |
public static final int TYPE_FIELD_NUMBER = 2; |
private int type_; |
public boolean hasType() { |
return ((bitField0_ & 0x00000002) == 0x00000002); |
} |
public int getType() { |
return type_; |
} |
// repeated .ioio.debugger.Message message = 3; |
public static final int MESSAGE_FIELD_NUMBER = 3; |
private java.util.List<ioio.debugger.NetworkIOIOProtocol.Message> message_; |
public java.util.List<ioio.debugger.NetworkIOIOProtocol.Message> getMessageList() { |
return message_; |
} |
public java.util.List<? extends ioio.debugger.NetworkIOIOProtocol.MessageOrBuilder> |
getMessageOrBuilderList() { |
return message_; |
} |
public int getMessageCount() { |
return message_.size(); |
} |
public ioio.debugger.NetworkIOIOProtocol.Message getMessage(int index) { |
return message_.get(index); |
} |
public ioio.debugger.NetworkIOIOProtocol.MessageOrBuilder getMessageOrBuilder( |
int index) { |
return message_.get(index); |
} |
private void initFields() { |
id_ = 0; |
type_ = 0; |
message_ = java.util.Collections.emptyList(); |
} |
private byte memoizedIsInitialized = -1; |
public final boolean isInitialized() { |
byte isInitialized = memoizedIsInitialized; |
if (isInitialized != -1) return isInitialized == 1; |
if (!hasId()) { |
memoizedIsInitialized = 0; |
return false; |
} |
if (!hasType()) { |
memoizedIsInitialized = 0; |
return false; |
} |
memoizedIsInitialized = 1; |
return true; |
} |
public void writeTo(com.google.protobuf.CodedOutputStream output) |
throws java.io.IOException { |
getSerializedSize(); |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
output.writeInt32(1, id_); |
} |
if (((bitField0_ & 0x00000002) == 0x00000002)) { |
output.writeInt32(2, type_); |
} |
for (int i = 0; i < message_.size(); i++) { |
output.writeMessage(3, message_.get(i)); |
} |
getUnknownFields().writeTo(output); |
} |
private int memoizedSerializedSize = -1; |
public int getSerializedSize() { |
int size = memoizedSerializedSize; |
if (size != -1) return size; |
size = 0; |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
size += com.google.protobuf.CodedOutputStream |
.computeInt32Size(1, id_); |
} |
if (((bitField0_ & 0x00000002) == 0x00000002)) { |
size += com.google.protobuf.CodedOutputStream |
.computeInt32Size(2, type_); |
} |
for (int i = 0; i < message_.size(); i++) { |
size += com.google.protobuf.CodedOutputStream |
.computeMessageSize(3, message_.get(i)); |
} |
size += getUnknownFields().getSerializedSize(); |
memoizedSerializedSize = size; |
return size; |
} |
private static final long serialVersionUID = 0L; |
@java.lang.Override |
protected java.lang.Object writeReplace() |
throws java.io.ObjectStreamException { |
return super.writeReplace(); |
} |
public static ioio.debugger.NetworkIOIOProtocol.TrackingMessage parseFrom( |
com.google.protobuf.ByteString data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static ioio.debugger.NetworkIOIOProtocol.TrackingMessage parseFrom( |
com.google.protobuf.ByteString data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static ioio.debugger.NetworkIOIOProtocol.TrackingMessage parseFrom(byte[] data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static ioio.debugger.NetworkIOIOProtocol.TrackingMessage parseFrom( |
byte[] data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static ioio.debugger.NetworkIOIOProtocol.TrackingMessage parseFrom(java.io.InputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static ioio.debugger.NetworkIOIOProtocol.TrackingMessage parseFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static ioio.debugger.NetworkIOIOProtocol.TrackingMessage parseDelimitedFrom(java.io.InputStream input) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static ioio.debugger.NetworkIOIOProtocol.TrackingMessage parseDelimitedFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input, extensionRegistry)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static ioio.debugger.NetworkIOIOProtocol.TrackingMessage parseFrom( |
com.google.protobuf.CodedInputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static ioio.debugger.NetworkIOIOProtocol.TrackingMessage parseFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static Builder newBuilder() { return Builder.create(); } |
public Builder newBuilderForType() { return newBuilder(); } |
public static Builder newBuilder(ioio.debugger.NetworkIOIOProtocol.TrackingMessage prototype) { |
return newBuilder().mergeFrom(prototype); |
} |
public Builder toBuilder() { return newBuilder(this); } |
@java.lang.Override |
protected Builder newBuilderForType( |
com.google.protobuf.GeneratedMessage.BuilderParent parent) { |
Builder builder = new Builder(parent); |
return builder; |
} |
public static final class Builder extends |
com.google.protobuf.GeneratedMessage.Builder<Builder> |
implements ioio.debugger.NetworkIOIOProtocol.TrackingMessageOrBuilder { |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return ioio.debugger.NetworkIOIOProtocol.internal_static_ioio_debugger_TrackingMessage_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return ioio.debugger.NetworkIOIOProtocol.internal_static_ioio_debugger_TrackingMessage_fieldAccessorTable; |
} |
// Construct using ioio.debugger.NetworkIOIOProtocol.TrackingMessage.newBuilder() |
private Builder() { |
maybeForceBuilderInitialization(); |
} |
private Builder(BuilderParent parent) { |
super(parent); |
maybeForceBuilderInitialization(); |
} |
private void maybeForceBuilderInitialization() { |
if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { |
getMessageFieldBuilder(); |
} |
} |
private static Builder create() { |
return new Builder(); |
} |
public Builder clear() { |
super.clear(); |
id_ = 0; |
bitField0_ = (bitField0_ & ~0x00000001); |
type_ = 0; |
bitField0_ = (bitField0_ & ~0x00000002); |
if (messageBuilder_ == null) { |
message_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000004); |
} else { |
messageBuilder_.clear(); |
} |
return this; |
} |
public Builder clone() { |
return create().mergeFrom(buildPartial()); |
} |
public com.google.protobuf.Descriptors.Descriptor |
getDescriptorForType() { |
return ioio.debugger.NetworkIOIOProtocol.TrackingMessage.getDescriptor(); |
} |
public ioio.debugger.NetworkIOIOProtocol.TrackingMessage getDefaultInstanceForType() { |
return ioio.debugger.NetworkIOIOProtocol.TrackingMessage.getDefaultInstance(); |
} |
public ioio.debugger.NetworkIOIOProtocol.TrackingMessage build() { |
ioio.debugger.NetworkIOIOProtocol.TrackingMessage result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException(result); |
} |
return result; |
} |
private ioio.debugger.NetworkIOIOProtocol.TrackingMessage buildParsed() |
throws com.google.protobuf.InvalidProtocolBufferException { |
ioio.debugger.NetworkIOIOProtocol.TrackingMessage result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException( |
result).asInvalidProtocolBufferException(); |
} |
return result; |
} |
public ioio.debugger.NetworkIOIOProtocol.TrackingMessage buildPartial() { |
ioio.debugger.NetworkIOIOProtocol.TrackingMessage result = new ioio.debugger.NetworkIOIOProtocol.TrackingMessage(this); |
int from_bitField0_ = bitField0_; |
int to_bitField0_ = 0; |
if (((from_bitField0_ & 0x00000001) == 0x00000001)) { |
to_bitField0_ |= 0x00000001; |
} |
result.id_ = id_; |
if (((from_bitField0_ & 0x00000002) == 0x00000002)) { |
to_bitField0_ |= 0x00000002; |
} |
result.type_ = type_; |
if (messageBuilder_ == null) { |
if (((bitField0_ & 0x00000004) == 0x00000004)) { |
message_ = java.util.Collections.unmodifiableList(message_); |
bitField0_ = (bitField0_ & ~0x00000004); |
} |
result.message_ = message_; |
} else { |
result.message_ = messageBuilder_.build(); |
} |
result.bitField0_ = to_bitField0_; |
onBuilt(); |
return result; |
} |
public Builder mergeFrom(com.google.protobuf.Message other) { |
if (other instanceof ioio.debugger.NetworkIOIOProtocol.TrackingMessage) { |
return mergeFrom((ioio.debugger.NetworkIOIOProtocol.TrackingMessage)other); |
} else { |
super.mergeFrom(other); |
return this; |
} |
} |
public Builder mergeFrom(ioio.debugger.NetworkIOIOProtocol.TrackingMessage other) { |
if (other == ioio.debugger.NetworkIOIOProtocol.TrackingMessage.getDefaultInstance()) return this; |
if (other.hasId()) { |
setId(other.getId()); |
} |
if (other.hasType()) { |
setType(other.getType()); |
} |
if (messageBuilder_ == null) { |
if (!other.message_.isEmpty()) { |
if (message_.isEmpty()) { |
message_ = other.message_; |
bitField0_ = (bitField0_ & ~0x00000004); |
} else { |
ensureMessageIsMutable(); |
message_.addAll(other.message_); |
} |
onChanged(); |
} |
} else { |
if (!other.message_.isEmpty()) { |
if (messageBuilder_.isEmpty()) { |
messageBuilder_.dispose(); |
messageBuilder_ = null; |
message_ = other.message_; |
bitField0_ = (bitField0_ & ~0x00000004); |
messageBuilder_ = |
com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? |
getMessageFieldBuilder() : null; |
} else { |
messageBuilder_.addAllMessages(other.message_); |
} |
} |
} |
this.mergeUnknownFields(other.getUnknownFields()); |
return this; |
} |
public final boolean isInitialized() { |
if (!hasId()) { |
return false; |
} |
if (!hasType()) { |
return false; |
} |
return true; |
} |
public Builder mergeFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
com.google.protobuf.UnknownFieldSet.Builder unknownFields = |
com.google.protobuf.UnknownFieldSet.newBuilder( |
this.getUnknownFields()); |
while (true) { |
int tag = input.readTag(); |
switch (tag) { |
case 0: |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
default: { |
if (!parseUnknownField(input, unknownFields, |
extensionRegistry, tag)) { |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
} |
break; |
} |
case 8: { |
bitField0_ |= 0x00000001; |
id_ = input.readInt32(); |
break; |
} |
case 16: { |
bitField0_ |= 0x00000002; |
type_ = input.readInt32(); |
break; |
} |
case 26: { |
ioio.debugger.NetworkIOIOProtocol.Message.Builder subBuilder = ioio.debugger.NetworkIOIOProtocol.Message.newBuilder(); |
input.readMessage(subBuilder, extensionRegistry); |
addMessage(subBuilder.buildPartial()); |
break; |
} |
} |
} |
} |
private int bitField0_; |
// required int32 id = 1; |
private int id_ ; |
public boolean hasId() { |
return ((bitField0_ & 0x00000001) == 0x00000001); |
} |
public int getId() { |
return id_; |
} |
public Builder setId(int value) { |
bitField0_ |= 0x00000001; |
id_ = value; |
onChanged(); |
return this; |
} |
public Builder clearId() { |
bitField0_ = (bitField0_ & ~0x00000001); |
id_ = 0; |
onChanged(); |
return this; |
} |
// required int32 type = 2; |
private int type_ ; |
public boolean hasType() { |
return ((bitField0_ & 0x00000002) == 0x00000002); |
} |
public int getType() { |
return type_; |
} |
public Builder setType(int value) { |
bitField0_ |= 0x00000002; |
type_ = value; |
onChanged(); |
return this; |
} |
public Builder clearType() { |
bitField0_ = (bitField0_ & ~0x00000002); |
type_ = 0; |
onChanged(); |
return this; |
} |
// repeated .ioio.debugger.Message message = 3; |
private java.util.List<ioio.debugger.NetworkIOIOProtocol.Message> message_ = |
java.util.Collections.emptyList(); |
private void ensureMessageIsMutable() { |
if (!((bitField0_ & 0x00000004) == 0x00000004)) { |
message_ = new java.util.ArrayList<ioio.debugger.NetworkIOIOProtocol.Message>(message_); |
bitField0_ |= 0x00000004; |
} |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
ioio.debugger.NetworkIOIOProtocol.Message, ioio.debugger.NetworkIOIOProtocol.Message.Builder, ioio.debugger.NetworkIOIOProtocol.MessageOrBuilder> messageBuilder_; |
public java.util.List<ioio.debugger.NetworkIOIOProtocol.Message> getMessageList() { |
if (messageBuilder_ == null) { |
return java.util.Collections.unmodifiableList(message_); |
} else { |
return messageBuilder_.getMessageList(); |
} |
} |
public int getMessageCount() { |
if (messageBuilder_ == null) { |
return message_.size(); |
} else { |
return messageBuilder_.getCount(); |
} |
} |
public ioio.debugger.NetworkIOIOProtocol.Message getMessage(int index) { |
if (messageBuilder_ == null) { |
return message_.get(index); |
} else { |
return messageBuilder_.getMessage(index); |
} |
} |
public Builder setMessage( |
int index, ioio.debugger.NetworkIOIOProtocol.Message value) { |
if (messageBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureMessageIsMutable(); |
message_.set(index, value); |
onChanged(); |
} else { |
messageBuilder_.setMessage(index, value); |
} |
return this; |
} |
public Builder setMessage( |
int index, ioio.debugger.NetworkIOIOProtocol.Message.Builder builderForValue) { |
if (messageBuilder_ == null) { |
ensureMessageIsMutable(); |
message_.set(index, builderForValue.build()); |
onChanged(); |
} else { |
messageBuilder_.setMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addMessage(ioio.debugger.NetworkIOIOProtocol.Message value) { |
if (messageBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureMessageIsMutable(); |
message_.add(value); |
onChanged(); |
} else { |
messageBuilder_.addMessage(value); |
} |
return this; |
} |
public Builder addMessage( |
int index, ioio.debugger.NetworkIOIOProtocol.Message value) { |
if (messageBuilder_ == null) { |
if (value == null) { |
throw new NullPointerException(); |
} |
ensureMessageIsMutable(); |
message_.add(index, value); |
onChanged(); |
} else { |
messageBuilder_.addMessage(index, value); |
} |
return this; |
} |
public Builder addMessage( |
ioio.debugger.NetworkIOIOProtocol.Message.Builder builderForValue) { |
if (messageBuilder_ == null) { |
ensureMessageIsMutable(); |
message_.add(builderForValue.build()); |
onChanged(); |
} else { |
messageBuilder_.addMessage(builderForValue.build()); |
} |
return this; |
} |
public Builder addMessage( |
int index, ioio.debugger.NetworkIOIOProtocol.Message.Builder builderForValue) { |
if (messageBuilder_ == null) { |
ensureMessageIsMutable(); |
message_.add(index, builderForValue.build()); |
onChanged(); |
} else { |
messageBuilder_.addMessage(index, builderForValue.build()); |
} |
return this; |
} |
public Builder addAllMessage( |
java.lang.Iterable<? extends ioio.debugger.NetworkIOIOProtocol.Message> values) { |
if (messageBuilder_ == null) { |
ensureMessageIsMutable(); |
super.addAll(values, message_); |
onChanged(); |
} else { |
messageBuilder_.addAllMessages(values); |
} |
return this; |
} |
public Builder clearMessage() { |
if (messageBuilder_ == null) { |
message_ = java.util.Collections.emptyList(); |
bitField0_ = (bitField0_ & ~0x00000004); |
onChanged(); |
} else { |
messageBuilder_.clear(); |
} |
return this; |
} |
public Builder removeMessage(int index) { |
if (messageBuilder_ == null) { |
ensureMessageIsMutable(); |
message_.remove(index); |
onChanged(); |
} else { |
messageBuilder_.remove(index); |
} |
return this; |
} |
public ioio.debugger.NetworkIOIOProtocol.Message.Builder getMessageBuilder( |
int index) { |
return getMessageFieldBuilder().getBuilder(index); |
} |
public ioio.debugger.NetworkIOIOProtocol.MessageOrBuilder getMessageOrBuilder( |
int index) { |
if (messageBuilder_ == null) { |
return message_.get(index); } else { |
return messageBuilder_.getMessageOrBuilder(index); |
} |
} |
public java.util.List<? extends ioio.debugger.NetworkIOIOProtocol.MessageOrBuilder> |
getMessageOrBuilderList() { |
if (messageBuilder_ != null) { |
return messageBuilder_.getMessageOrBuilderList(); |
} else { |
return java.util.Collections.unmodifiableList(message_); |
} |
} |
public ioio.debugger.NetworkIOIOProtocol.Message.Builder addMessageBuilder() { |
return getMessageFieldBuilder().addBuilder( |
ioio.debugger.NetworkIOIOProtocol.Message.getDefaultInstance()); |
} |
public ioio.debugger.NetworkIOIOProtocol.Message.Builder addMessageBuilder( |
int index) { |
return getMessageFieldBuilder().addBuilder( |
index, ioio.debugger.NetworkIOIOProtocol.Message.getDefaultInstance()); |
} |
public java.util.List<ioio.debugger.NetworkIOIOProtocol.Message.Builder> |
getMessageBuilderList() { |
return getMessageFieldBuilder().getBuilderList(); |
} |
private com.google.protobuf.RepeatedFieldBuilder< |
ioio.debugger.NetworkIOIOProtocol.Message, ioio.debugger.NetworkIOIOProtocol.Message.Builder, ioio.debugger.NetworkIOIOProtocol.MessageOrBuilder> |
getMessageFieldBuilder() { |
if (messageBuilder_ == null) { |
messageBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< |
ioio.debugger.NetworkIOIOProtocol.Message, ioio.debugger.NetworkIOIOProtocol.Message.Builder, ioio.debugger.NetworkIOIOProtocol.MessageOrBuilder>( |
message_, |
((bitField0_ & 0x00000004) == 0x00000004), |
getParentForChildren(), |
isClean()); |
message_ = null; |
} |
return messageBuilder_; |
} |
// @@protoc_insertion_point(builder_scope:ioio.debugger.TrackingMessage) |
} |
static { |
defaultInstance = new TrackingMessage(true); |
defaultInstance.initFields(); |
} |
// @@protoc_insertion_point(class_scope:ioio.debugger.TrackingMessage) |
} |
public interface MessageOrBuilder |
extends com.google.protobuf.MessageOrBuilder { |
// optional int32 pin = 1; |
boolean hasPin(); |
int getPin(); |
// repeated double data = 2; |
java.util.List<java.lang.Double> getDataList(); |
int getDataCount(); |
double getData(int index); |
// optional string type = 3; |
boolean hasType(); |
String getType(); |
// optional int64 freq = 4; |
boolean hasFreq(); |
long getFreq(); |
// optional string mode = 5; |
boolean hasMode(); |
String getMode(); |
// optional string state = 6; |
boolean hasState(); |
String getState(); |
// optional bool boolean = 7; |
boolean hasBoolean(); |
boolean getBoolean(); |
} |
public static final class Message extends |
com.google.protobuf.GeneratedMessage |
implements MessageOrBuilder { |
// Use Message.newBuilder() to construct. |
private Message(Builder builder) { |
super(builder); |
} |
private Message(boolean noInit) {} |
private static final Message defaultInstance; |
public static Message getDefaultInstance() { |
return defaultInstance; |
} |
public Message getDefaultInstanceForType() { |
return defaultInstance; |
} |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return ioio.debugger.NetworkIOIOProtocol.internal_static_ioio_debugger_Message_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return ioio.debugger.NetworkIOIOProtocol.internal_static_ioio_debugger_Message_fieldAccessorTable; |
} |
private int bitField0_; |
// optional int32 pin = 1; |
public static final int PIN_FIELD_NUMBER = 1; |
private int pin_; |
public boolean hasPin() { |
return ((bitField0_ & 0x00000001) == 0x00000001); |
} |
public int getPin() { |
return pin_; |
} |
// repeated double data = 2; |
public static final int DATA_FIELD_NUMBER = 2; |
private java.util.List<java.lang.Double> data_; |
public java.util.List<java.lang.Double> |
getDataList() { |
return data_; |
} |
public int getDataCount() { |
return data_.size(); |
} |
public double getData(int index) { |
return data_.get(index); |
} |
// optional string type = 3; |
public static final int TYPE_FIELD_NUMBER = 3; |
private java.lang.Object type_; |
public boolean hasType() { |
return ((bitField0_ & 0x00000002) == 0x00000002); |
} |
public String getType() { |
java.lang.Object ref = type_; |
if (ref instanceof String) { |
return (String) ref; |
} else { |
com.google.protobuf.ByteString bs = |
(com.google.protobuf.ByteString) ref; |
String s = bs.toStringUtf8(); |
if (com.google.protobuf.Internal.isValidUtf8(bs)) { |
type_ = s; |
} |
return s; |
} |
} |
private com.google.protobuf.ByteString getTypeBytes() { |
java.lang.Object ref = type_; |
if (ref instanceof String) { |
com.google.protobuf.ByteString b = |
com.google.protobuf.ByteString.copyFromUtf8((String) ref); |
type_ = b; |
return b; |
} else { |
return (com.google.protobuf.ByteString) ref; |
} |
} |
// optional int64 freq = 4; |
public static final int FREQ_FIELD_NUMBER = 4; |
private long freq_; |
public boolean hasFreq() { |
return ((bitField0_ & 0x00000004) == 0x00000004); |
} |
public long getFreq() { |
return freq_; |
} |
// optional string mode = 5; |
public static final int MODE_FIELD_NUMBER = 5; |
private java.lang.Object mode_; |
public boolean hasMode() { |
return ((bitField0_ & 0x00000008) == 0x00000008); |
} |
public String getMode() { |
java.lang.Object ref = mode_; |
if (ref instanceof String) { |
return (String) ref; |
} else { |
com.google.protobuf.ByteString bs = |
(com.google.protobuf.ByteString) ref; |
String s = bs.toStringUtf8(); |
if (com.google.protobuf.Internal.isValidUtf8(bs)) { |
mode_ = s; |
} |
return s; |
} |
} |
private com.google.protobuf.ByteString getModeBytes() { |
java.lang.Object ref = mode_; |
if (ref instanceof String) { |
com.google.protobuf.ByteString b = |
com.google.protobuf.ByteString.copyFromUtf8((String) ref); |
mode_ = b; |
return b; |
} else { |
return (com.google.protobuf.ByteString) ref; |
} |
} |
// optional string state = 6; |
public static final int STATE_FIELD_NUMBER = 6; |
private java.lang.Object state_; |
public boolean hasState() { |
return ((bitField0_ & 0x00000010) == 0x00000010); |
} |
public String getState() { |
java.lang.Object ref = state_; |
if (ref instanceof String) { |
return (String) ref; |
} else { |
com.google.protobuf.ByteString bs = |
(com.google.protobuf.ByteString) ref; |
String s = bs.toStringUtf8(); |
if (com.google.protobuf.Internal.isValidUtf8(bs)) { |
state_ = s; |
} |
return s; |
} |
} |
private com.google.protobuf.ByteString getStateBytes() { |
java.lang.Object ref = state_; |
if (ref instanceof String) { |
com.google.protobuf.ByteString b = |
com.google.protobuf.ByteString.copyFromUtf8((String) ref); |
state_ = b; |
return b; |
} else { |
return (com.google.protobuf.ByteString) ref; |
} |
} |
// optional bool boolean = 7; |
public static final int BOOLEAN_FIELD_NUMBER = 7; |
private boolean boolean_; |
public boolean hasBoolean() { |
return ((bitField0_ & 0x00000020) == 0x00000020); |
} |
public boolean getBoolean() { |
return boolean_; |
} |
private void initFields() { |
pin_ = 0; |
data_ = java.util.Collections.emptyList();; |
type_ = ""; |
freq_ = 0L; |
mode_ = ""; |
state_ = ""; |
boolean_ = false; |
} |
private byte memoizedIsInitialized = -1; |
public final boolean isInitialized() { |
byte isInitialized = memoizedIsInitialized; |
if (isInitialized != -1) return isInitialized == 1; |
memoizedIsInitialized = 1; |
return true; |
} |
public void writeTo(com.google.protobuf.CodedOutputStream output) |
throws java.io.IOException { |
getSerializedSize(); |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
output.writeInt32(1, pin_); |
} |
for (int i = 0; i < data_.size(); i++) { |
output.writeDouble(2, data_.get(i)); |
} |
if (((bitField0_ & 0x00000002) == 0x00000002)) { |
output.writeBytes(3, getTypeBytes()); |
} |
if (((bitField0_ & 0x00000004) == 0x00000004)) { |
output.writeInt64(4, freq_); |
} |
if (((bitField0_ & 0x00000008) == 0x00000008)) { |
output.writeBytes(5, getModeBytes()); |
} |
if (((bitField0_ & 0x00000010) == 0x00000010)) { |
output.writeBytes(6, getStateBytes()); |
} |
if (((bitField0_ & 0x00000020) == 0x00000020)) { |
output.writeBool(7, boolean_); |
} |
getUnknownFields().writeTo(output); |
} |
private int memoizedSerializedSize = -1; |
public int getSerializedSize() { |
int size = memoizedSerializedSize; |
if (size != -1) return size; |
size = 0; |
if (((bitField0_ & 0x00000001) == 0x00000001)) { |
size += com.google.protobuf.CodedOutputStream |
.computeInt32Size(1, pin_); |
} |
{ |
int dataSize = 0; |
dataSize = 8 * getDataList().size(); |
size += dataSize; |
size += 1 * getDataList().size(); |
} |
if (((bitField0_ & 0x00000002) == 0x00000002)) { |
size += com.google.protobuf.CodedOutputStream |
.computeBytesSize(3, getTypeBytes()); |
} |
if (((bitField0_ & 0x00000004) == 0x00000004)) { |
size += com.google.protobuf.CodedOutputStream |
.computeInt64Size(4, freq_); |
} |
if (((bitField0_ & 0x00000008) == 0x00000008)) { |
size += com.google.protobuf.CodedOutputStream |
.computeBytesSize(5, getModeBytes()); |
} |
if (((bitField0_ & 0x00000010) == 0x00000010)) { |
size += com.google.protobuf.CodedOutputStream |
.computeBytesSize(6, getStateBytes()); |
} |
if (((bitField0_ & 0x00000020) == 0x00000020)) { |
size += com.google.protobuf.CodedOutputStream |
.computeBoolSize(7, boolean_); |
} |
size += getUnknownFields().getSerializedSize(); |
memoizedSerializedSize = size; |
return size; |
} |
private static final long serialVersionUID = 0L; |
@java.lang.Override |
protected java.lang.Object writeReplace() |
throws java.io.ObjectStreamException { |
return super.writeReplace(); |
} |
public static ioio.debugger.NetworkIOIOProtocol.Message parseFrom( |
com.google.protobuf.ByteString data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static ioio.debugger.NetworkIOIOProtocol.Message parseFrom( |
com.google.protobuf.ByteString data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static ioio.debugger.NetworkIOIOProtocol.Message parseFrom(byte[] data) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data).buildParsed(); |
} |
public static ioio.debugger.NetworkIOIOProtocol.Message parseFrom( |
byte[] data, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws com.google.protobuf.InvalidProtocolBufferException { |
return newBuilder().mergeFrom(data, extensionRegistry) |
.buildParsed(); |
} |
public static ioio.debugger.NetworkIOIOProtocol.Message parseFrom(java.io.InputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static ioio.debugger.NetworkIOIOProtocol.Message parseFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static ioio.debugger.NetworkIOIOProtocol.Message parseDelimitedFrom(java.io.InputStream input) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static ioio.debugger.NetworkIOIOProtocol.Message parseDelimitedFrom( |
java.io.InputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
Builder builder = newBuilder(); |
if (builder.mergeDelimitedFrom(input, extensionRegistry)) { |
return builder.buildParsed(); |
} else { |
return null; |
} |
} |
public static ioio.debugger.NetworkIOIOProtocol.Message parseFrom( |
com.google.protobuf.CodedInputStream input) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input).buildParsed(); |
} |
public static ioio.debugger.NetworkIOIOProtocol.Message parseFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
return newBuilder().mergeFrom(input, extensionRegistry) |
.buildParsed(); |
} |
public static Builder newBuilder() { return Builder.create(); } |
public Builder newBuilderForType() { return newBuilder(); } |
public static Builder newBuilder(ioio.debugger.NetworkIOIOProtocol.Message prototype) { |
return newBuilder().mergeFrom(prototype); |
} |
public Builder toBuilder() { return newBuilder(this); } |
@java.lang.Override |
protected Builder newBuilderForType( |
com.google.protobuf.GeneratedMessage.BuilderParent parent) { |
Builder builder = new Builder(parent); |
return builder; |
} |
public static final class Builder extends |
com.google.protobuf.GeneratedMessage.Builder<Builder> |
implements ioio.debugger.NetworkIOIOProtocol.MessageOrBuilder { |
public static final com.google.protobuf.Descriptors.Descriptor |
getDescriptor() { |
return ioio.debugger.NetworkIOIOProtocol.internal_static_ioio_debugger_Message_descriptor; |
} |
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internalGetFieldAccessorTable() { |
return ioio.debugger.NetworkIOIOProtocol.internal_static_ioio_debugger_Message_fieldAccessorTable; |
} |
// Construct using ioio.debugger.NetworkIOIOProtocol.Message.newBuilder() |
private Builder() { |
maybeForceBuilderInitialization(); |
} |
private Builder(BuilderParent parent) { |
super(parent); |
maybeForceBuilderInitialization(); |
} |
private void maybeForceBuilderInitialization() { |
if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { |
} |
} |
private static Builder create() { |
return new Builder(); |
} |
public Builder clear() { |
super.clear(); |
pin_ = 0; |
bitField0_ = (bitField0_ & ~0x00000001); |
data_ = java.util.Collections.emptyList();; |
bitField0_ = (bitField0_ & ~0x00000002); |
type_ = ""; |
bitField0_ = (bitField0_ & ~0x00000004); |
freq_ = 0L; |
bitField0_ = (bitField0_ & ~0x00000008); |
mode_ = ""; |
bitField0_ = (bitField0_ & ~0x00000010); |
state_ = ""; |
bitField0_ = (bitField0_ & ~0x00000020); |
boolean_ = false; |
bitField0_ = (bitField0_ & ~0x00000040); |
return this; |
} |
public Builder clone() { |
return create().mergeFrom(buildPartial()); |
} |
public com.google.protobuf.Descriptors.Descriptor |
getDescriptorForType() { |
return ioio.debugger.NetworkIOIOProtocol.Message.getDescriptor(); |
} |
public ioio.debugger.NetworkIOIOProtocol.Message getDefaultInstanceForType() { |
return ioio.debugger.NetworkIOIOProtocol.Message.getDefaultInstance(); |
} |
public ioio.debugger.NetworkIOIOProtocol.Message build() { |
ioio.debugger.NetworkIOIOProtocol.Message result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException(result); |
} |
return result; |
} |
private ioio.debugger.NetworkIOIOProtocol.Message buildParsed() |
throws com.google.protobuf.InvalidProtocolBufferException { |
ioio.debugger.NetworkIOIOProtocol.Message result = buildPartial(); |
if (!result.isInitialized()) { |
throw newUninitializedMessageException( |
result).asInvalidProtocolBufferException(); |
} |
return result; |
} |
public ioio.debugger.NetworkIOIOProtocol.Message buildPartial() { |
ioio.debugger.NetworkIOIOProtocol.Message result = new ioio.debugger.NetworkIOIOProtocol.Message(this); |
int from_bitField0_ = bitField0_; |
int to_bitField0_ = 0; |
if (((from_bitField0_ & 0x00000001) == 0x00000001)) { |
to_bitField0_ |= 0x00000001; |
} |
result.pin_ = pin_; |
if (((bitField0_ & 0x00000002) == 0x00000002)) { |
data_ = java.util.Collections.unmodifiableList(data_); |
bitField0_ = (bitField0_ & ~0x00000002); |
} |
result.data_ = data_; |
if (((from_bitField0_ & 0x00000004) == 0x00000004)) { |
to_bitField0_ |= 0x00000002; |
} |
result.type_ = type_; |
if (((from_bitField0_ & 0x00000008) == 0x00000008)) { |
to_bitField0_ |= 0x00000004; |
} |
result.freq_ = freq_; |
if (((from_bitField0_ & 0x00000010) == 0x00000010)) { |
to_bitField0_ |= 0x00000008; |
} |
result.mode_ = mode_; |
if (((from_bitField0_ & 0x00000020) == 0x00000020)) { |
to_bitField0_ |= 0x00000010; |
} |
result.state_ = state_; |
if (((from_bitField0_ & 0x00000040) == 0x00000040)) { |
to_bitField0_ |= 0x00000020; |
} |
result.boolean_ = boolean_; |
result.bitField0_ = to_bitField0_; |
onBuilt(); |
return result; |
} |
public Builder mergeFrom(com.google.protobuf.Message other) { |
if (other instanceof ioio.debugger.NetworkIOIOProtocol.Message) { |
return mergeFrom((ioio.debugger.NetworkIOIOProtocol.Message)other); |
} else { |
super.mergeFrom(other); |
return this; |
} |
} |
public Builder mergeFrom(ioio.debugger.NetworkIOIOProtocol.Message other) { |
if (other == ioio.debugger.NetworkIOIOProtocol.Message.getDefaultInstance()) return this; |
if (other.hasPin()) { |
setPin(other.getPin()); |
} |
if (!other.data_.isEmpty()) { |
if (data_.isEmpty()) { |
data_ = other.data_; |
bitField0_ = (bitField0_ & ~0x00000002); |
} else { |
ensureDataIsMutable(); |
data_.addAll(other.data_); |
} |
onChanged(); |
} |
if (other.hasType()) { |
setType(other.getType()); |
} |
if (other.hasFreq()) { |
setFreq(other.getFreq()); |
} |
if (other.hasMode()) { |
setMode(other.getMode()); |
} |
if (other.hasState()) { |
setState(other.getState()); |
} |
if (other.hasBoolean()) { |
setBoolean(other.getBoolean()); |
} |
this.mergeUnknownFields(other.getUnknownFields()); |
return this; |
} |
public final boolean isInitialized() { |
return true; |
} |
public Builder mergeFrom( |
com.google.protobuf.CodedInputStream input, |
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
throws java.io.IOException { |
com.google.protobuf.UnknownFieldSet.Builder unknownFields = |
com.google.protobuf.UnknownFieldSet.newBuilder( |
this.getUnknownFields()); |
while (true) { |
int tag = input.readTag(); |
switch (tag) { |
case 0: |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
default: { |
if (!parseUnknownField(input, unknownFields, |
extensionRegistry, tag)) { |
this.setUnknownFields(unknownFields.build()); |
onChanged(); |
return this; |
} |
break; |
} |
case 8: { |
bitField0_ |= 0x00000001; |
pin_ = input.readInt32(); |
break; |
} |
case 17: { |
ensureDataIsMutable(); |
data_.add(input.readDouble()); |
break; |
} |
case 18: { |
int length = input.readRawVarint32(); |
int limit = input.pushLimit(length); |
while (input.getBytesUntilLimit() > 0) { |
addData(input.readDouble()); |
} |
input.popLimit(limit); |
break; |
} |
case 26: { |
bitField0_ |= 0x00000004; |
type_ = input.readBytes(); |
break; |
} |
case 32: { |
bitField0_ |= 0x00000008; |
freq_ = input.readInt64(); |
break; |
} |
case 42: { |
bitField0_ |= 0x00000010; |
mode_ = input.readBytes(); |
break; |
} |
case 50: { |
bitField0_ |= 0x00000020; |
state_ = input.readBytes(); |
break; |
} |
case 56: { |
bitField0_ |= 0x00000040; |
boolean_ = input.readBool(); |
break; |
} |
} |
} |
} |
private int bitField0_; |
// optional int32 pin = 1; |
private int pin_ ; |
public boolean hasPin() { |
return ((bitField0_ & 0x00000001) == 0x00000001); |
} |
public int getPin() { |
return pin_; |
} |
public Builder setPin(int value) { |
bitField0_ |= 0x00000001; |
pin_ = value; |
onChanged(); |
return this; |
} |
public Builder clearPin() { |
bitField0_ = (bitField0_ & ~0x00000001); |
pin_ = 0; |
onChanged(); |
return this; |
} |
// repeated double data = 2; |
private java.util.List<java.lang.Double> data_ = java.util.Collections.emptyList();; |
private void ensureDataIsMutable() { |
if (!((bitField0_ & 0x00000002) == 0x00000002)) { |
data_ = new java.util.ArrayList<java.lang.Double>(data_); |
bitField0_ |= 0x00000002; |
} |
} |
public java.util.List<java.lang.Double> |
getDataList() { |
return java.util.Collections.unmodifiableList(data_); |
} |
public int getDataCount() { |
return data_.size(); |
} |
public double getData(int index) { |
return data_.get(index); |
} |
public Builder setData( |
int index, double value) { |
ensureDataIsMutable(); |
data_.set(index, value); |
onChanged(); |
return this; |
} |
public Builder addData(double value) { |
ensureDataIsMutable(); |
data_.add(value); |
onChanged(); |
return this; |
} |
public Builder addAllData( |
java.lang.Iterable<? extends java.lang.Double> values) { |
ensureDataIsMutable(); |
super.addAll(values, data_); |
onChanged(); |
return this; |
} |
public Builder clearData() { |
data_ = java.util.Collections.emptyList();; |
bitField0_ = (bitField0_ & ~0x00000002); |
onChanged(); |
return this; |
} |
// optional string type = 3; |
private java.lang.Object type_ = ""; |
public boolean hasType() { |
return ((bitField0_ & 0x00000004) == 0x00000004); |
} |
public String getType() { |
java.lang.Object ref = type_; |
if (!(ref instanceof String)) { |
String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); |
type_ = s; |
return s; |
} else { |
return (String) ref; |
} |
} |
public Builder setType(String value) { |
if (value == null) { |
throw new NullPointerException(); |
} |
bitField0_ |= 0x00000004; |
type_ = value; |
onChanged(); |
return this; |
} |
public Builder clearType() { |
bitField0_ = (bitField0_ & ~0x00000004); |
type_ = getDefaultInstance().getType(); |
onChanged(); |
return this; |
} |
void setType(com.google.protobuf.ByteString value) { |
bitField0_ |= 0x00000004; |
type_ = value; |
onChanged(); |
} |
// optional int64 freq = 4; |
private long freq_ ; |
public boolean hasFreq() { |
return ((bitField0_ & 0x00000008) == 0x00000008); |
} |
public long getFreq() { |
return freq_; |
} |
public Builder setFreq(long value) { |
bitField0_ |= 0x00000008; |
freq_ = value; |
onChanged(); |
return this; |
} |
public Builder clearFreq() { |
bitField0_ = (bitField0_ & ~0x00000008); |
freq_ = 0L; |
onChanged(); |
return this; |
} |
// optional string mode = 5; |
private java.lang.Object mode_ = ""; |
public boolean hasMode() { |
return ((bitField0_ & 0x00000010) == 0x00000010); |
} |
public String getMode() { |
java.lang.Object ref = mode_; |
if (!(ref instanceof String)) { |
String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); |
mode_ = s; |
return s; |
} else { |
return (String) ref; |
} |
} |
public Builder setMode(String value) { |
if (value == null) { |
throw new NullPointerException(); |
} |
bitField0_ |= 0x00000010; |
mode_ = value; |
onChanged(); |
return this; |
} |
public Builder clearMode() { |
bitField0_ = (bitField0_ & ~0x00000010); |
mode_ = getDefaultInstance().getMode(); |
onChanged(); |
return this; |
} |
void setMode(com.google.protobuf.ByteString value) { |
bitField0_ |= 0x00000010; |
mode_ = value; |
onChanged(); |
} |
// optional string state = 6; |
private java.lang.Object state_ = ""; |
public boolean hasState() { |
return ((bitField0_ & 0x00000020) == 0x00000020); |
} |
public String getState() { |
java.lang.Object ref = state_; |
if (!(ref instanceof String)) { |
String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); |
state_ = s; |
return s; |
} else { |
return (String) ref; |
} |
} |
public Builder setState(String value) { |
if (value == null) { |
throw new NullPointerException(); |
} |
bitField0_ |= 0x00000020; |
state_ = value; |
onChanged(); |
return this; |
} |
public Builder clearState() { |
bitField0_ = (bitField0_ & ~0x00000020); |
state_ = getDefaultInstance().getState(); |
onChanged(); |
return this; |
} |
void setState(com.google.protobuf.ByteString value) { |
bitField0_ |= 0x00000020; |
state_ = value; |
onChanged(); |
} |
// optional bool boolean = 7; |
private boolean boolean_ ; |
public boolean hasBoolean() { |
return ((bitField0_ & 0x00000040) == 0x00000040); |
} |
public boolean getBoolean() { |
return boolean_; |
} |
public Builder setBoolean(boolean value) { |
bitField0_ |= 0x00000040; |
boolean_ = value; |
onChanged(); |
return this; |
} |
public Builder clearBoolean() { |
bitField0_ = (bitField0_ & ~0x00000040); |
boolean_ = false; |
onChanged(); |
return this; |
} |
// @@protoc_insertion_point(builder_scope:ioio.debugger.Message) |
} |
static { |
defaultInstance = new Message(true); |
defaultInstance.initFields(); |
} |
// @@protoc_insertion_point(class_scope:ioio.debugger.Message) |
} |
private static com.google.protobuf.Descriptors.Descriptor |
internal_static_ioio_debugger_TrackingMessage_descriptor; |
private static |
com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internal_static_ioio_debugger_TrackingMessage_fieldAccessorTable; |
private static com.google.protobuf.Descriptors.Descriptor |
internal_static_ioio_debugger_Message_descriptor; |
private static |
com.google.protobuf.GeneratedMessage.FieldAccessorTable |
internal_static_ioio_debugger_Message_fieldAccessorTable; |
public static com.google.protobuf.Descriptors.FileDescriptor |
getDescriptor() { |
return descriptor; |
} |
private static com.google.protobuf.Descriptors.FileDescriptor |
descriptor; |
static { |
java.lang.String[] descriptorData = { |
"\n\031NetworkIOIOProtocol.proto\022\rioio.debugg" + |
"er\"T\n\017TrackingMessage\022\n\n\002id\030\001 \002(\005\022\014\n\004typ" + |
"e\030\002 \002(\005\022\'\n\007message\030\003 \003(\0132\026.ioio.debugger" + |
".Message\"n\n\007Message\022\013\n\003pin\030\001 \001(\005\022\014\n\004data" + |
"\030\002 \003(\001\022\014\n\004type\030\003 \001(\t\022\014\n\004freq\030\004 \001(\003\022\014\n\004mo" + |
"de\030\005 \001(\t\022\r\n\005state\030\006 \001(\t\022\017\n\007boolean\030\007 \001(\010" |
}; |
com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = |
new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() { |
public com.google.protobuf.ExtensionRegistry assignDescriptors( |
com.google.protobuf.Descriptors.FileDescriptor root) { |
descriptor = root; |
internal_static_ioio_debugger_TrackingMessage_descriptor = |
getDescriptor().getMessageTypes().get(0); |
internal_static_ioio_debugger_TrackingMessage_fieldAccessorTable = new |
com.google.protobuf.GeneratedMessage.FieldAccessorTable( |
internal_static_ioio_debugger_TrackingMessage_descriptor, |
new java.lang.String[] { "Id", "Type", "Message", }, |
ioio.debugger.NetworkIOIOProtocol.TrackingMessage.class, |
ioio.debugger.NetworkIOIOProtocol.TrackingMessage.Builder.class); |
internal_static_ioio_debugger_Message_descriptor = |
getDescriptor().getMessageTypes().get(1); |
internal_static_ioio_debugger_Message_fieldAccessorTable = new |
com.google.protobuf.GeneratedMessage.FieldAccessorTable( |
internal_static_ioio_debugger_Message_descriptor, |
new java.lang.String[] { "Pin", "Data", "Type", "Freq", "Mode", "State", "Boolean", }, |
ioio.debugger.NetworkIOIOProtocol.Message.class, |
ioio.debugger.NetworkIOIOProtocol.Message.Builder.class); |
return null; |
} |
}; |
com.google.protobuf.Descriptors.FileDescriptor |
.internalBuildGeneratedFileFrom(descriptorData, |
new com.google.protobuf.Descriptors.FileDescriptor[] { |
}, assigner); |
} |
// @@protoc_insertion_point(outer_class_scope) |
} |
/Android Development/IOIODebugger/src/ioio/debugger/NetworkIOIOProtocol.proto |
---|
0,0 → 1,17 |
package ioio.debugger; |
message TrackingMessage { |
required int32 id = 1; |
required int32 type = 2; |
repeated Message message = 3; |
} |
message Message { |
optional int32 pin = 1; |
repeated double data = 2; |
optional string type = 3; |
optional int64 freq = 4; |
optional string mode = 5; |
optional string state = 6; |
optional bool boolean = 7; |
} |
/Android Development/IOIODebugger/src/ioio/debugger/NetworkMessageHandler.java |
---|
0,0 → 1,29 |
/************************************************************************** |
* Copyright 2011 Jules White |
* |
* Licensed under the Apache License, Version 2.0 (the "License"); |
* you may not use this file except in compliance with the License. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
***************************************************************************/ |
package ioio.debugger; |
import org.jboss.netty.channel.Channel; |
public interface NetworkMessageHandler<T> { |
public void received(T msg); |
public void channelException(Throwable e); |
public void channelClosed(Channel c); |
} |
/Android Development/IOIODebugger/src/ioio/debugger/PinDetailActivity.java |
---|
0,0 → 1,132 |
package ioio.debugger; |
import java.util.Arrays; |
import java.util.HashMap; |
import java.util.HashSet; |
import android.app.Activity; |
import android.os.Bundle; |
import android.view.Gravity; |
import android.widget.TableLayout; |
import android.widget.TableRow; |
import android.widget.TableRow.LayoutParams; |
import android.widget.TextView; |
public class PinDetailActivity extends Activity { |
private TableLayout root; |
private int totalPins = 48; |
private HashSet<Integer> AD; |
private HashSet<Integer> PPSi; |
private HashSet<Integer> PPSo; |
private HashSet<Integer> FiveV; |
private HashMap<Integer, String> I2C = new HashMap<Integer, String>(); |
private HashMap<Integer, String> Comp = new HashMap<Integer, String>();; |
@Override |
public void onCreate(Bundle savedInstanceState) { |
super.onCreate(savedInstanceState); |
setContentView(R.layout.pin_details); |
root = (TableLayout) findViewById(R.id.pin_table_root); |
Integer[] ad = {31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46}; |
AD = new HashSet<Integer>(Arrays.asList(ad)); |
Integer[] ppsi = {3,4,5,6,7,9,10,11,12,13,14,27,28,29,30,31,32,34,35,36,37,38,39,40,45,46,47,48}; |
PPSi = new HashSet<Integer>(Arrays.asList(ppsi)); |
Integer[] ppso = {3,4,5,6,7,10,11,12,13,14,27,28,29,30,31,32,34,35,36,37,38,39,40,45,46,47,48}; |
PPSo = new HashSet<Integer>(Arrays.asList(ppso)); |
Integer[] fiveV = {3,4,5,6,7,10,11,12,13,14,18,19,20,21,22,23,24,25,26,47,48}; |
FiveV = new HashSet<Integer>(Arrays.asList(fiveV)); |
I2C.put(4, "DA0"); |
I2C.put(5, "CL0"); |
I2C.put(25, "DA2"); |
I2C.put(26, "CL2"); |
I2C.put(47, "DA1"); |
I2C.put(48, "CL1"); |
Comp.put(8, "3D"); |
Comp.put(9, "3C"); |
Comp.put(15, "3B"); |
Comp.put(16, "3A"); |
Comp.put(27, "1D"); |
Comp.put(28, "1C"); |
Comp.put(29, "2D"); |
Comp.put(30, "2C"); |
Comp.put(31, "1A"); |
Comp.put(32, "1B"); |
Comp.put(33, "2A"); |
Comp.put(34, "2B"); |
root.setStretchAllColumns(true); |
for (Integer i = 1; i <= totalPins; i++) { |
TableRow row = new TableRow(this); |
TextView tv = new TextView(this); |
tv.setLayoutParams(new LayoutParams(0, LayoutParams.WRAP_CONTENT, 1)); |
tv.setGravity(Gravity.CENTER); |
tv.setText(String.valueOf(i)); |
row.addView(tv); |
tv = new TextView(this); |
tv.setGravity(Gravity.CENTER); |
tv.setLayoutParams(new LayoutParams(0, LayoutParams.WRAP_CONTENT, 1)); |
if (AD.contains(i)) |
tv.setText("\u2713"); |
else |
tv.setText(""); |
row.addView(tv); |
tv = new TextView(this); |
tv.setGravity(Gravity.CENTER); |
tv.setLayoutParams(new LayoutParams(0, LayoutParams.WRAP_CONTENT, 1)); |
if (I2C.containsKey(i)) |
tv.setText(I2C.get(i)); |
else |
tv.setText(""); |
row.addView(tv); |
tv = new TextView(this); |
tv.setGravity(Gravity.CENTER); |
tv.setLayoutParams(new LayoutParams(0, LayoutParams.WRAP_CONTENT, 1)); |
if (PPSi.contains(i)) |
tv.setText("\u2713"); |
else |
tv.setText(""); |
row.addView(tv); |
tv = new TextView(this); |
tv.setGravity(Gravity.CENTER); |
tv.setLayoutParams(new LayoutParams(0, LayoutParams.WRAP_CONTENT, 1)); |
if (PPSo.contains(i)) |
tv.setText("\u2713"); |
else |
tv.setText(""); |
row.addView(tv); |
tv = new TextView(this); |
tv.setGravity(Gravity.CENTER); |
tv.setLayoutParams(new LayoutParams(0, LayoutParams.WRAP_CONTENT, 1)); |
if (FiveV.contains(i)) |
tv.setText("\u2713"); |
else |
tv.setText(""); |
row.addView(tv); |
tv = new TextView(this); |
tv.setGravity(Gravity.CENTER); |
tv.setLayoutParams(new LayoutParams(0, LayoutParams.WRAP_CONTENT, 1)); |
if (Comp.containsKey(i)) |
tv.setText(Comp.get(i)); |
else |
tv.setText(""); |
row.addView(tv); |
root.addView(row); |
} |
} |
} |
/Android Development/IOIODebugger/src/ioio/debugger/ViewWidget.java |
---|
0,0 → 1,18 |
package ioio.debugger; |
import android.view.View; |
public interface ViewWidget { |
public void stopThread(); |
public void startThread(); |
public void clearData(); |
public void setStopSignal(); |
public void resetStopSignal(); |
public void sendDataHistory(); |
public View getView(); |
public Thread getThread(); |
public void setPin(int pin); |
public int getPin(); |
} |
/Android Development/IOIODebugger/src/ioio/debugger/ViewWidgetGraphText.java |
---|
0,0 → 1,194 |
package ioio.debugger; |
import java.util.LinkedList; |
import com.androidplot.Plot.BorderStyle; |
import com.androidplot.xy.BoundaryMode; |
import com.androidplot.xy.LineAndPointFormatter; |
import com.androidplot.xy.StepFormatter; |
import com.androidplot.xy.XYPlot; |
import com.androidplot.xy.XYStepMode; |
import android.graphics.Color; |
import android.os.Handler; |
import android.view.View; |
import android.widget.TextView; |
public class ViewWidgetGraphText implements ViewWidget { |
private View view; |
private Runnable run; |
private Thread thread; |
private Handler handler = new Handler(); |
private GenericXYSeries plotData; |
private XYPlot historyPlot; |
private int pin; |
public ViewWidgetGraphText() { |
} |
@Override |
public void stopThread() { |
thread.interrupt(); |
} |
@Override |
public void startThread() { |
// Kill the thread if it is already running |
if (thread != null && thread.isAlive()) |
thread.interrupt(); |
// Start a new thread and run the passed Runnable |
thread = new Thread (run); |
thread.start(); |
} |
@Override |
public View getView() { |
return view; |
} |
@Override |
public Thread getThread() { |
return thread; |
} |
@Override |
public void clearData() { |
plotData.clearData(); |
} |
@Override |
public void setStopSignal() { |
handler.post(new Runnable() { |
@Override |
public void run() { |
TextView tv = (TextView)view.findViewById(R.id.layout_graphText_status); |
tv.setTextColor(Color.RED); |
} |
}); |
} |
@Override |
public void resetStopSignal() { |
handler.post(new Runnable() { |
@Override |
public void run() { |
TextView tv = (TextView)view.findViewById(R.id.layout_graphText_status); |
tv.setTextColor(Color.WHITE); |
} |
}); |
} |
@Override |
public void sendDataHistory() { |
LinkedList<Number> data = plotData.getData(); |
Double[] data2 = data.toArray(new Double[data.size()]); |
IOIODebuggerActivity.get_networkMgr().sendData(pin, data2); |
} |
@Override |
public int getPin() { |
return pin; |
} |
public void setPin(final int p) { |
pin = p; |
} |
public void updateText(final String str) { |
handler.post(new Runnable() { |
@Override |
public void run() { |
TextView tv = (TextView)view.findViewById(R.id.layout_graphText_text); |
tv.setText(str); |
} |
}); |
} |
public void updateStatus(final String str) { |
handler.post(new Runnable() { |
@Override |
public void run() { |
TextView tv = (TextView)view.findViewById(R.id.layout_graphText_status); |
tv.setText(str); |
} |
}); |
} |
public void setView(View view, boolean useStep, int historyLength) { |
this.view = view; |
// Set graph plot details |
plotData = new GenericXYSeries("Analog In", historyLength); |
historyPlot = (XYPlot) view.findViewById(R.id.layout_graphText_graph); |
// Add data to plot |
if (!useStep) |
historyPlot.addSeries(plotData, new LineAndPointFormatter(Color.rgb(0, 0, 200), Color.rgb(0, 0, 100),Color.rgb(150, 150, 190))); |
else { |
StepFormatter stepFormatter = new StepFormatter(Color.rgb(0, 0, 0), Color.rgb(150, 190, 150)); |
stepFormatter.getLinePaint().setStrokeWidth(1); |
historyPlot.addSeries(plotData, stepFormatter); |
} |
// Set boundary and ticks |
historyPlot.setRangeBoundaries(0, 3.3, BoundaryMode.FIXED); |
historyPlot.setDomainBoundaries(0, historyLength, BoundaryMode.FIXED); |
historyPlot.setDomainStepValue(5); |
historyPlot.setRangeStep(XYStepMode.SUBDIVIDE, 4); |
historyPlot.setTicksPerRangeLabel(3); |
// Remove labels and legend |
historyPlot.getLegendWidget().setVisible(false); |
historyPlot.getDomainLabelWidget().setVisible(false); |
historyPlot.getRangeLabelWidget().setVisible(false); |
historyPlot.getTitleWidget().setVisible(false); |
// Remove extra margin space |
historyPlot.getGraphWidget().setMargins(0, 10, 10, 0); |
historyPlot.getGraphWidget().setRangeLabelWidth(30); |
historyPlot.getGraphWidget().setDomainLabelWidth(15); |
historyPlot.getGraphWidget().setMarginLeft(-5); |
historyPlot.getGraphWidget().setMarginRight(25); |
historyPlot.setPlotMargins(0, 0, 0, 0); |
historyPlot.setPlotPadding(0, 0, 0, 0); |
// Remove background color |
historyPlot.getGraphWidget().setBackgroundPaint(null); |
historyPlot.setBackgroundPaint(null); |
historyPlot.setBorderPaint(null); |
historyPlot.setBorderStyle(BorderStyle.SQUARE, null, null); |
historyPlot.disableAllMarkup(); |
} |
public void setRunnable(Runnable r) { |
run = r; |
} |
public void updateData(Number num) { |
plotData.addDataToList(num); |
} |
public void refreshGraph() { |
handler.post(new Runnable() { |
@Override |
public void run() { |
historyPlot.redraw(); |
} |
}); |
} |
public void setRange(Number start, Number end) { |
historyPlot.setRangeBoundaries(start, end, BoundaryMode.FIXED); |
} |
public void setDomain(Number length) { |
historyPlot.setDomainBoundaries(0, length, BoundaryMode.FIXED); |
} |
} |
/Android Development/IOIODebugger/src/ioio/debugger/ViewWidgetSimpleText.java |
---|
0,0 → 1,117 |
package ioio.debugger; |
import android.graphics.Color; |
import android.os.Handler; |
import android.view.View; |
import android.widget.TextView; |
public class ViewWidgetSimpleText implements ViewWidget { |
private View view; |
private Runnable run; |
private Thread thread; |
private Handler handler = new Handler(); |
private int pin; |
public ViewWidgetSimpleText() { |
} |
@Override |
public void stopThread() { |
thread.interrupt(); |
} |
@Override |
public void startThread() { |
// Kill the thread if it is already running |
if (thread != null && thread.isAlive()) |
thread.interrupt(); |
// Start a new thread and run the passed Runnable |
thread = new Thread (run); |
thread.start(); |
} |
@Override |
public View getView() { |
return view; |
} |
@Override |
public Thread getThread() { |
return thread; |
} |
@Override |
public void clearData() { |
} |
@Override |
public void setStopSignal() { |
handler.post(new Runnable() { |
@Override |
public void run() { |
TextView tv = (TextView)view.findViewById(R.id.layout_simpleText_status); |
tv.setTextColor(Color.RED); |
} |
}); |
} |
@Override |
public void resetStopSignal() { |
handler.post(new Runnable() { |
@Override |
public void run() { |
TextView tv = (TextView)view.findViewById(R.id.layout_simpleText_status); |
tv.setTextColor(Color.WHITE); |
} |
}); |
} |
@Override |
public void sendDataHistory() { |
} |
@Override |
public int getPin() { |
return pin; |
} |
public void setPin(int pin) { |
this.pin = pin; |
} |
public void updateText(final String str) { |
handler.post(new Runnable() { |
@Override |
public void run() { |
TextView tv = (TextView)view.findViewById(R.id.layout_simpleText_text); |
tv.setText(str); |
} |
}); |
} |
public void updateStatus(final String str) { |
handler.post(new Runnable() { |
@Override |
public void run() { |
TextView tv = (TextView)view.findViewById(R.id.layout_simpleText_status); |
tv.setText(str); |
} |
}); |
} |
public void setView(View view) { |
this.view = view; |
} |
public void setRunnable(Runnable r) { |
this.run = r; |
} |
} |
/Android Development/IOIODebugger/src/ioio/debugger/ViewWidgetToggleText.java |
---|
0,0 → 1,127 |
package ioio.debugger; |
import android.graphics.Color; |
import android.os.Handler; |
import android.view.View; |
import android.widget.TextView; |
public class ViewWidgetToggleText implements ViewWidget { |
private View view; |
private Runnable run; |
private Thread thread; |
private Handler handler = new Handler(); |
private int pin; |
private boolean toggle; |
public ViewWidgetToggleText() { |
} |
@Override |
public void stopThread() { |
thread.interrupt(); |
} |
@Override |
public void startThread() { |
// Kill the thread if it is already running |
if (thread != null && thread.isAlive()) |
thread.interrupt(); |
// Start a new thread and run the passed Runnable |
thread = new Thread (run); |
thread.start(); |
} |
@Override |
public View getView() { |
return view; |
} |
@Override |
public Thread getThread() { |
return thread; |
} |
@Override |
public void clearData() { |
} |
@Override |
public void setStopSignal() { |
handler.post(new Runnable() { |
@Override |
public void run() { |
TextView tv = (TextView)view.findViewById(R.id.layout_toggleText_status); |
tv.setTextColor(Color.RED); |
} |
}); |
} |
@Override |
public void resetStopSignal() { |
handler.post(new Runnable() { |
@Override |
public void run() { |
TextView tv = (TextView)view.findViewById(R.id.layout_toggleText_status); |
tv.setTextColor(Color.WHITE); |
} |
}); |
} |
@Override |
public void sendDataHistory() { |
Double[] data = new Double[1]; |
if (toggle) |
data[0] = 3.3; |
else |
data[0] = 0.0; |
IOIODebuggerActivity.get_networkMgr().sendData(pin, data); |
} |
@Override |
public int getPin() { |
return pin; |
} |
public void setPin(int pin) { |
this.pin = pin; |
} |
public void updateText(final String str) { |
handler.post(new Runnable() { |
@Override |
public void run() { |
TextView tv = (TextView)view.findViewById(R.id.layout_toggleText_text); |
tv.setText(str); |
} |
}); |
} |
public void updateStatus(final String str) { |
handler.post(new Runnable() { |
@Override |
public void run() { |
TextView tv = (TextView)view.findViewById(R.id.layout_toggleText_status); |
tv.setText(str); |
} |
}); |
} |
public void setToggle(boolean b) { |
toggle = b; |
} |
public void setView(View view) { |
this.view = view; |
} |
public void setRunnable(Runnable r) { |
this.run = r; |
} |
} |
/Android Development/IOIODebugger/src/ioio/debugger/build_protocol.sh |
---|
0,0 → 1,0 |
protoc NetworkIOIOProtocol.proto --java_out=../../ |