@@ -557,6 +557,38 @@ private void writeDoubleListInternal(int fieldNumber, List<Double> value, boolea
557
557
@ Override
558
558
public void writeEnumList (int fieldNumber , List <Integer > value , boolean packed )
559
559
throws IOException {
560
+ if (value instanceof IntArrayList ) {
561
+ writeEnumListInternal (fieldNumber , (IntArrayList ) value , packed );
562
+ } else {
563
+ writeEnumListInternal (fieldNumber , value , packed );
564
+ }
565
+ }
566
+
567
+ private void writeEnumListInternal (int fieldNumber , IntArrayList value , boolean packed )
568
+ throws IOException {
569
+ if (packed ) {
570
+ output .writeTag (fieldNumber , WIRETYPE_LENGTH_DELIMITED );
571
+
572
+ // Compute and write the length of the data.
573
+ int dataSize = 0 ;
574
+ for (int i = 0 ; i < value .size (); ++i ) {
575
+ dataSize += CodedOutputStream .computeEnumSizeNoTag (value .getInt (i ));
576
+ }
577
+ output .writeUInt32NoTag (dataSize );
578
+
579
+ // Write the data itself, without any tags.
580
+ for (int i = 0 ; i < value .size (); ++i ) {
581
+ output .writeEnumNoTag (value .getInt (i ));
582
+ }
583
+ } else {
584
+ for (int i = 0 ; i < value .size (); ++i ) {
585
+ output .writeEnum (fieldNumber , value .getInt (i ));
586
+ }
587
+ }
588
+ }
589
+
590
+ private void writeEnumListInternal (int fieldNumber , List <Integer > value , boolean packed )
591
+ throws IOException {
560
592
if (packed ) {
561
593
output .writeTag (fieldNumber , WIRETYPE_LENGTH_DELIMITED );
562
594
0 commit comments