31 package com.google.protobuf;
33 import java.io.IOException;
34 import java.util.Arrays;
76 System.arraycopy(second.tags, 0,
tags,
first.count, second.count);
78 System.arraycopy(second.objects, 0,
objects,
first.count, second.count);
116 this.isMutable =
false;
120 void checkMutable() {
122 throw new UnsupportedOperationException();
173 if (writer.fieldOrder() == Writer.FieldOrder.DESCENDING) {
175 for (
int i =
count - 1;
i >= 0;
i--) {
177 writer.writeMessageSetItem(fieldNumber,
objects[
i]);
182 int fieldNumber = WireFormat.getTagFieldNumber(
tags[
i]);
183 writer.writeMessageSetItem(fieldNumber,
objects[
i]);
189 public void writeTo(Writer writer)
throws IOException {
195 if (writer.fieldOrder() == Writer.FieldOrder.ASCENDING) {
200 for (
int i =
count - 1;
i >= 0; --
i) {
206 private static void writeField(
int tag, Object
object, Writer writer)
throws IOException {
210 writer.writeInt64(fieldNumber, (Long)
object);
213 writer.writeFixed32(fieldNumber, (Integer)
object);
216 writer.writeFixed64(fieldNumber, (Long)
object);
219 writer.writeBytes(fieldNumber, (
ByteString)
object);
222 if (writer.fieldOrder() == Writer.FieldOrder.ASCENDING) {
223 writer.writeStartGroup(fieldNumber);
225 writer.writeEndGroup(fieldNumber);
227 writer.writeEndGroup(fieldNumber);
229 writer.writeStartGroup(fieldNumber);
304 private static boolean equals(
int[] tags1,
int[] tags2,
int count) {
306 if (tags1[
i] != tags2[
i]) {
313 private static boolean equals(Object[] objects1, Object[] objects2,
int count) {
315 if (!objects1[
i].
equals(objects2[
i])) {
381 final void printWithIndent(StringBuilder
buffer,
int indent) {
389 void storeField(
int tag, Object
value) {
402 int newLength =
count + increment;
404 tags = Arrays.copyOf(
tags, newLength);
422 storeField(tag,
input.readInt64());
425 storeField(tag,
input.readFixed32());
428 storeField(tag,
input.readFixed64());
431 storeField(tag,
input.readBytes());
437 storeField(tag, subFieldSet);
454 if (fieldNumber == 0) {
455 throw new IllegalArgumentException(
"Zero is not a valid field number.");
458 storeField(WireFormat.makeTag(fieldNumber, WireFormat.WIRETYPE_VARINT), (
long)
value);
470 if (fieldNumber == 0) {
471 throw new IllegalArgumentException(
"Zero is not a valid field number.");
474 storeField(WireFormat.makeTag(fieldNumber, WireFormat.WIRETYPE_LENGTH_DELIMITED),
value);
483 final int tag =
input.readTag();
484 if (tag == 0 || !mergeFieldFrom(tag,
input)) {