@@ -687,28 +687,27 @@ void RepeatedImmutableEnumFieldGenerator::GenerateMembers(
687
687
printer->Print (
688
688
variables_,
689
689
" @SuppressWarnings(\" serial\" )\n "
690
- " private java.util.List<java.lang.Integer> $name$_;\n "
690
+ " private com.google.protobuf.Internal.IntList $name$_;\n "
691
691
" private static final "
692
- " com.google.protobuf.Internal.ListAdapter.Converter <\n "
693
- " java.lang.Integer, $type$> $name$_converter_ =\n "
694
- " new com.google.protobuf.Internal.ListAdapter.Converter <\n "
695
- " java.lang.Integer, $type$>() {\n "
696
- " public $type$ convert(java.lang.Integer from) {\n "
692
+ " com.google.protobuf.Internal.IntListAdapter.IntConverter <\n "
693
+ " $type$> $name$_converter_ =\n "
694
+ " new com.google.protobuf.Internal.IntListAdapter.IntConverter <\n "
695
+ " $type$>() {\n "
696
+ " public $type$ convert(int from) {\n "
697
697
" $type$ result = $type$.forNumber(from);\n "
698
698
" return result == null ? $unknown$ : result;\n "
699
699
" }\n "
700
700
" };\n " );
701
701
PrintExtraFieldInfo (variables_, printer);
702
702
WriteFieldAccessorDocComment (printer, descriptor_, LIST_GETTER,
703
703
context_->options ());
704
- printer->Print (
705
- variables_,
706
- " @java.lang.Override\n "
707
- " $deprecation$public java.util.List<$type$> "
708
- " ${$get$capitalized_name$List$}$() {\n "
709
- " return new com.google.protobuf.Internal.ListAdapter<\n "
710
- " java.lang.Integer, $type$>($name$_, $name$_converter_);\n "
711
- " }\n " );
704
+ printer->Print (variables_,
705
+ " @java.lang.Override\n "
706
+ " $deprecation$public java.util.List<$type$> "
707
+ " ${$get$capitalized_name$List$}$() {\n "
708
+ " return new com.google.protobuf.Internal.IntListAdapter<\n "
709
+ " $type$>($name$_, $name$_converter_);\n "
710
+ " }\n " );
712
711
printer->Annotate (" {" , " }" , descriptor_);
713
712
WriteFieldAccessorDocComment (printer, descriptor_, LIST_COUNT,
714
713
context_->options ());
@@ -725,7 +724,7 @@ void RepeatedImmutableEnumFieldGenerator::GenerateMembers(
725
724
variables_,
726
725
" @java.lang.Override\n "
727
726
" $deprecation$public $type$ ${$get$capitalized_name$$}$(int index) {\n "
728
- " return $name$_converter_.convert($name$_.get (index));\n "
727
+ " return $name$_converter_.convert($name$_.getInt (index));\n "
729
728
" }\n " );
730
729
printer->Annotate (" {" , " }" , descriptor_);
731
730
if (SupportUnknownEnumValue (descriptor_)) {
@@ -744,7 +743,7 @@ void RepeatedImmutableEnumFieldGenerator::GenerateMembers(
744
743
" @java.lang.Override\n "
745
744
" $deprecation$public int "
746
745
" ${$get$capitalized_name$Value$}$(int index) {\n "
747
- " return $name$_.get (index);\n "
746
+ " return $name$_.getInt (index);\n "
748
747
" }\n " );
749
748
printer->Annotate (" {" , " }" , descriptor_);
750
749
}
@@ -760,19 +759,18 @@ void RepeatedImmutableEnumFieldGenerator::GenerateBuilderMembers(
760
759
variables_,
761
760
// One field is the list and the other field keeps track of whether the
762
761
// list is immutable. If it's immutable, the invariant is that it must
763
- // either an instance of Collections.emptyList() or it's an ArrayList
764
- // wrapped in a Collections.unmodifiableList() wrapper and nobody else has
765
- // a reference to the underlying ArrayList. This invariant allows us to
766
- // share instances of lists between protocol buffers avoiding expensive
767
- // memory allocations. Note, immutable is a strong guarantee here -- not
768
- // just that the list cannot be modified via the reference but that the
769
- // list can never be modified.
770
- " private java.util.List<java.lang.Integer> $name$_ =\n "
771
- " java.util.Collections.emptyList();\n "
762
+ // either an instance of emptyIntList() or it's an immutable IntArrayList
763
+ // and nobody else has a reference to the underlying ArrayList. This
764
+ // invariant allows us to share instances of lists between protocol
765
+ // buffers avoiding expensive memory allocations. Note, immutable is a
766
+ // strong guarantee here -- not just that the list cannot be modified via
767
+ // the reference but that the list can never be modified.
768
+ " private com.google.protobuf.Internal.IntList $name$_ =\n "
769
+ " emptyIntList();\n "
772
770
773
771
" private void ensure$capitalized_name$IsMutable() {\n "
774
772
" if (!$get_mutable_bit_builder$) {\n "
775
- " $name$_ = new java.util.ArrayList<java.lang.Integer> ($name$_);\n "
773
+ " $name$_ = makeMutableCopy ($name$_);\n "
776
774
" $set_mutable_bit_builder$;\n "
777
775
" }\n "
778
776
" }\n " );
@@ -787,8 +785,8 @@ void RepeatedImmutableEnumFieldGenerator::GenerateBuilderMembers(
787
785
// immutable.
788
786
" $deprecation$public java.util.List<$type$> "
789
787
" ${$get$capitalized_name$List$}$() {\n "
790
- " return new com.google.protobuf.Internal.ListAdapter <\n "
791
- " java.lang.Integer, $type$>($name$_, $name$_converter_);\n "
788
+ " return new com.google.protobuf.Internal.IntListAdapter <\n "
789
+ " $type$>($name$_, $name$_converter_);\n "
792
790
" }\n " );
793
791
printer->Annotate (" {" , " }" , descriptor_);
794
792
WriteFieldAccessorDocComment (printer, descriptor_, LIST_COUNT,
@@ -804,7 +802,7 @@ void RepeatedImmutableEnumFieldGenerator::GenerateBuilderMembers(
804
802
printer->Print (
805
803
variables_,
806
804
" $deprecation$public $type$ ${$get$capitalized_name$$}$(int index) {\n "
807
- " return $name$_converter_.convert($name$_.get (index));\n "
805
+ " return $name$_converter_.convert($name$_.getInt (index));\n "
808
806
" }\n " );
809
807
printer->Annotate (" {" , " }" , descriptor_);
810
808
WriteFieldAccessorDocComment (printer, descriptor_, LIST_INDEXED_SETTER,
@@ -817,7 +815,7 @@ void RepeatedImmutableEnumFieldGenerator::GenerateBuilderMembers(
817
815
" throw new NullPointerException();\n "
818
816
" }\n "
819
817
" ensure$capitalized_name$IsMutable();\n "
820
- " $name$_.set (index, value.getNumber());\n "
818
+ " $name$_.setInt (index, value.getNumber());\n "
821
819
" onChanged();\n "
822
820
" return this;\n "
823
821
" }\n " );
@@ -832,7 +830,7 @@ void RepeatedImmutableEnumFieldGenerator::GenerateBuilderMembers(
832
830
" throw new NullPointerException();\n "
833
831
" }\n "
834
832
" ensure$capitalized_name$IsMutable();\n "
835
- " $name$_.add (value.getNumber());\n "
833
+ " $name$_.addInt (value.getNumber());\n "
836
834
" onChanged();\n "
837
835
" return this;\n "
838
836
" }\n " );
@@ -845,7 +843,7 @@ void RepeatedImmutableEnumFieldGenerator::GenerateBuilderMembers(
845
843
" java.lang.Iterable<? extends $type$> values) {\n "
846
844
" ensure$capitalized_name$IsMutable();\n "
847
845
" for ($type$ value : values) {\n "
848
- " $name$_.add (value.getNumber());\n "
846
+ " $name$_.addInt (value.getNumber());\n "
849
847
" }\n "
850
848
" onChanged();\n "
851
849
" return this;\n "
@@ -857,7 +855,7 @@ void RepeatedImmutableEnumFieldGenerator::GenerateBuilderMembers(
857
855
printer->Print (
858
856
variables_,
859
857
" $deprecation$public Builder ${$clear$capitalized_name$$}$() {\n "
860
- " $name$_ = java.util.Collections.emptyList ();\n "
858
+ " $name$_ = emptyIntList ();\n "
861
859
" $clear_mutable_bit_builder$;\n "
862
860
" onChanged();\n "
863
861
" return this;\n "
@@ -878,7 +876,7 @@ void RepeatedImmutableEnumFieldGenerator::GenerateBuilderMembers(
878
876
printer->Print (variables_,
879
877
" $deprecation$public int "
880
878
" ${$get$capitalized_name$Value$}$(int index) {\n "
881
- " return $name$_.get (index);\n "
879
+ " return $name$_.getInt (index);\n "
882
880
" }\n " );
883
881
printer->Annotate (" {" , " }" , descriptor_);
884
882
WriteFieldEnumValueAccessorDocComment (
@@ -889,7 +887,7 @@ void RepeatedImmutableEnumFieldGenerator::GenerateBuilderMembers(
889
887
" $deprecation$public Builder ${$set$capitalized_name$Value$}$(\n "
890
888
" int index, int value) {\n "
891
889
" ensure$capitalized_name$IsMutable();\n "
892
- " $name$_.set (index, value);\n "
890
+ " $name$_.setInt (index, value);\n "
893
891
" onChanged();\n "
894
892
" return this;\n "
895
893
" }\n " );
@@ -901,7 +899,7 @@ void RepeatedImmutableEnumFieldGenerator::GenerateBuilderMembers(
901
899
" $deprecation$public Builder "
902
900
" ${$add$capitalized_name$Value$}$(int value) {\n "
903
901
" ensure$capitalized_name$IsMutable();\n "
904
- " $name$_.add (value);\n "
902
+ " $name$_.addInt (value);\n "
905
903
" onChanged();\n "
906
904
" return this;\n "
907
905
" }\n " );
@@ -915,7 +913,7 @@ void RepeatedImmutableEnumFieldGenerator::GenerateBuilderMembers(
915
913
" java.lang.Iterable<java.lang.Integer> values) {\n "
916
914
" ensure$capitalized_name$IsMutable();\n "
917
915
" for (int value : values) {\n "
918
- " $name$_.add (value);\n "
916
+ " $name$_.addInt (value);\n "
919
917
" }\n "
920
918
" onChanged();\n "
921
919
" return this;\n "
@@ -931,13 +929,13 @@ void RepeatedImmutableEnumFieldGenerator::
931
929
932
930
void RepeatedImmutableEnumFieldGenerator::GenerateInitializationCode (
933
931
io::Printer* printer) const {
934
- printer->Print (variables_, " $name$_ = java.util.Collections.emptyList ();\n " );
932
+ printer->Print (variables_, " $name$_ = emptyIntList ();\n " );
935
933
}
936
934
937
935
void RepeatedImmutableEnumFieldGenerator::GenerateBuilderClearCode (
938
936
io::Printer* printer) const {
939
937
printer->Print (variables_,
940
- " $name$_ = java.util.Collections.emptyList ();\n "
938
+ " $name$_ = emptyIntList ();\n "
941
939
" $clear_mutable_bit_builder$;\n " );
942
940
}
943
941
@@ -965,13 +963,12 @@ void RepeatedImmutableEnumFieldGenerator::GenerateBuildingCode(
965
963
io::Printer* printer) const {
966
964
// The code below ensures that the result has an immutable list. If our
967
965
// list is immutable, we can just reuse it. If not, we make it immutable.
968
- printer->Print (
969
- variables_,
970
- " if ($get_mutable_bit_builder$) {\n "
971
- " $name$_ = java.util.Collections.unmodifiableList($name$_);\n "
972
- " $clear_mutable_bit_builder$;\n "
973
- " }\n "
974
- " result.$name$_ = $name$_;\n " );
966
+ printer->Print (variables_,
967
+ " if ($get_mutable_bit_builder$) {\n "
968
+ " $name$_.makeImmutable();\n "
969
+ " $clear_mutable_bit_builder$;\n "
970
+ " }\n "
971
+ " result.$name$_ = $name$_;\n " );
975
972
}
976
973
977
974
void RepeatedImmutableEnumFieldGenerator::GenerateBuilderParsingCode (
@@ -981,7 +978,7 @@ void RepeatedImmutableEnumFieldGenerator::GenerateBuilderParsingCode(
981
978
printer->Print (variables_,
982
979
" int tmpRaw = input.readEnum();\n "
983
980
" ensure$capitalized_name$IsMutable();\n "
984
- " $name$_.add (tmpRaw);\n " );
981
+ " $name$_.addInt (tmpRaw);\n " );
985
982
} else {
986
983
printer->Print (variables_,
987
984
" int tmpRaw = input.readEnum();\n "
@@ -991,7 +988,7 @@ void RepeatedImmutableEnumFieldGenerator::GenerateBuilderParsingCode(
991
988
" mergeUnknownVarintField($number$, tmpRaw);\n "
992
989
" } else {\n "
993
990
" ensure$capitalized_name$IsMutable();\n "
994
- " $name$_.add (tmpRaw);\n "
991
+ " $name$_.addInt (tmpRaw);\n "
995
992
" }\n " );
996
993
}
997
994
}
@@ -1022,12 +1019,12 @@ void RepeatedImmutableEnumFieldGenerator::GenerateSerializationCode(
1022
1019
" output.writeUInt32NoTag($name$MemoizedSerializedSize);\n "
1023
1020
" }\n "
1024
1021
" for (int i = 0; i < $name$_.size(); i++) {\n "
1025
- " output.writeEnumNoTag($name$_.get (i));\n "
1022
+ " output.writeEnumNoTag($name$_.getInt (i));\n "
1026
1023
" }\n " );
1027
1024
} else {
1028
1025
printer->Print (variables_,
1029
1026
" for (int i = 0; i < $name$_.size(); i++) {\n "
1030
- " output.writeEnum($number$, $name$_.get (i));\n "
1027
+ " output.writeEnum($number$, $name$_.getInt (i));\n "
1031
1028
" }\n " );
1032
1029
}
1033
1030
}
@@ -1042,7 +1039,7 @@ void RepeatedImmutableEnumFieldGenerator::GenerateSerializedSizeCode(
1042
1039
printer->Print (variables_,
1043
1040
" for (int i = 0; i < $name$_.size(); i++) {\n "
1044
1041
" dataSize += com.google.protobuf.CodedOutputStream\n "
1045
- " .computeEnumSizeNoTag($name$_.get (i));\n "
1042
+ " .computeEnumSizeNoTag($name$_.getInt (i));\n "
1046
1043
" }\n " );
1047
1044
printer->Print (" size += dataSize;\n " );
1048
1045
if (descriptor_->is_packed ()) {
0 commit comments