LCOV - code coverage report
Current view: top level - third_party/protobuf/src/google/protobuf/compiler/java - java_lazy_message_field.cc (source / functions) Hit Total Coverage
Test: tmp.zDYK9MVh93 Lines: 0 175 0.0 %
Date: 2015-10-10 Functions: 0 30 0.0 %

          Line data    Source code
       1             : // Protocol Buffers - Google's data interchange format
       2             : // Copyright 2008 Google Inc.  All rights reserved.
       3             : // https://developers.google.com/protocol-buffers/
       4             : //
       5             : // Redistribution and use in source and binary forms, with or without
       6             : // modification, are permitted provided that the following conditions are
       7             : // met:
       8             : //
       9             : //     * Redistributions of source code must retain the above copyright
      10             : // notice, this list of conditions and the following disclaimer.
      11             : //     * Redistributions in binary form must reproduce the above
      12             : // copyright notice, this list of conditions and the following disclaimer
      13             : // in the documentation and/or other materials provided with the
      14             : // distribution.
      15             : //     * Neither the name of Google Inc. nor the names of its
      16             : // contributors may be used to endorse or promote products derived from
      17             : // this software without specific prior written permission.
      18             : //
      19             : // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
      20             : // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
      21             : // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
      22             : // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
      23             : // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
      24             : // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
      25             : // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
      26             : // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
      27             : // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
      28             : // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
      29             : // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
      30             : 
      31             : // Author: niwasaki@google.com (Naoki Iwasaki)
      32             : //  Based on original Protocol Buffers design by
      33             : //  Sanjay Ghemawat, Jeff Dean, and others.
      34             : 
      35             : #include <google/protobuf/compiler/java/java_context.h>
      36             : #include <google/protobuf/compiler/java/java_lazy_message_field.h>
      37             : #include <google/protobuf/compiler/java/java_doc_comment.h>
      38             : #include <google/protobuf/compiler/java/java_helpers.h>
      39             : #include <google/protobuf/io/printer.h>
      40             : 
      41             : namespace google {
      42             : namespace protobuf {
      43             : namespace compiler {
      44             : namespace java {
      45             : 
      46           0 : ImmutableLazyMessageFieldGenerator::
      47             : ImmutableLazyMessageFieldGenerator(
      48             :     const FieldDescriptor* descriptor,
      49             :     int messageBitIndex,
      50             :     int builderBitIndex,
      51             :     Context* context)
      52             :     : ImmutableMessageFieldGenerator(
      53           0 :           descriptor, messageBitIndex, builderBitIndex, context) {
      54           0 : }
      55             : 
      56           0 : ImmutableLazyMessageFieldGenerator::~ImmutableLazyMessageFieldGenerator() {}
      57             : 
      58           0 : void ImmutableLazyMessageFieldGenerator::
      59             : GenerateMembers(io::Printer* printer) const {
      60             :   printer->Print(variables_,
      61             :     "private com.google.protobuf.LazyFieldLite $name$_ =\n"
      62           0 :     "    new com.google.protobuf.LazyFieldLite();\n");
      63             : 
      64           0 :   PrintExtraFieldInfo(variables_, printer);
      65           0 :   WriteFieldDocComment(printer, descriptor_);
      66             :   printer->Print(variables_,
      67             :     "$deprecation$public boolean has$capitalized_name$() {\n"
      68             :     "  return $get_has_field_bit_message$;\n"
      69           0 :     "}\n");
      70           0 :   WriteFieldDocComment(printer, descriptor_);
      71             : 
      72             :   printer->Print(variables_,
      73             :     "$deprecation$public $type$ get$capitalized_name$() {\n"
      74             :     "  return ($type$) $name$_.getValue($type$.getDefaultInstance());\n"
      75           0 :     "}\n");
      76           0 :   WriteFieldDocComment(printer, descriptor_);
      77             :   printer->Print(variables_,
      78             :     "$deprecation$public $type$OrBuilder get$capitalized_name$OrBuilder() {\n"
      79             :     "  return $name$_;\n"
      80           0 :     "}\n");
      81           0 : }
      82             : 
      83           0 : void ImmutableLazyMessageFieldGenerator::
      84             : GenerateBuilderMembers(io::Printer* printer) const {
      85             :   // When using nested-builders, the code initially works just like the
      86             :   // non-nested builder case. It only creates a nested builder lazily on
      87             :   // demand and then forever delegates to it after creation.
      88             : 
      89             :   printer->Print(variables_,
      90             :     "private com.google.protobuf.LazyFieldLite $name$_ =\n"
      91           0 :     "    new com.google.protobuf.LazyFieldLite();\n");
      92             : 
      93             :   printer->Print(variables_,
      94             :     // If this builder is non-null, it is used and the other fields are
      95             :     // ignored.
      96             :     "private com.google.protobuf.SingleFieldBuilder<\n"
      97             :     "    $type$, $type$.Builder, $type$OrBuilder> $name$Builder_;"
      98           0 :     "\n");
      99             : 
     100             :   // The comments above the methods below are based on a hypothetical
     101             :   // field of type "Field" called "Field".
     102             : 
     103             :   // boolean hasField()
     104           0 :   WriteFieldDocComment(printer, descriptor_);
     105             :   printer->Print(variables_,
     106             :     "$deprecation$public boolean has$capitalized_name$() {\n"
     107             :     "  return $get_has_field_bit_builder$;\n"
     108           0 :     "}\n");
     109             : 
     110             :     printer->Print(variables_,
     111             :       "$deprecation$public $type$ get$capitalized_name$() {\n"
     112             :       "  return ($type$) $name$_.getValue($type$.getDefaultInstance());\n"
     113           0 :       "}\n");
     114             : 
     115             :   // Field.Builder setField(Field value)
     116           0 :   WriteFieldDocComment(printer, descriptor_);
     117             :   PrintNestedBuilderFunction(printer,
     118             :     "$deprecation$public Builder set$capitalized_name$($type$ value)",
     119             : 
     120             :     "if (value == null) {\n"
     121             :     "  throw new NullPointerException();\n"
     122             :     "}\n"
     123             :     "$name$_.setValue(value);\n"
     124             :     "$on_changed$\n",
     125             : 
     126             :      NULL,  // Lazy fields are supported only for lite-runtime.
     127             : 
     128             :     "$set_has_field_bit_builder$;\n"
     129           0 :     "return this;\n");
     130             : 
     131             :   // Field.Builder setField(Field.Builder builderForValue)
     132           0 :   WriteFieldDocComment(printer, descriptor_);
     133             :   PrintNestedBuilderFunction(printer,
     134             :     "$deprecation$public Builder set$capitalized_name$(\n"
     135             :     "    $type$.Builder builderForValue)",
     136             : 
     137             :     "$name$_.setValue(builderForValue.build());\n"
     138             :     "$on_changed$\n",
     139             : 
     140             :     NULL,
     141             : 
     142             :     "$set_has_field_bit_builder$;\n"
     143           0 :     "return this;\n");
     144             : 
     145             :   // Field.Builder mergeField(Field value)
     146           0 :   WriteFieldDocComment(printer, descriptor_);
     147             :   PrintNestedBuilderFunction(printer,
     148             :     "$deprecation$public Builder merge$capitalized_name$($type$ value)",
     149             : 
     150             :     "if ($get_has_field_bit_builder$ &&\n"
     151             :     "    !$name$_.containsDefaultInstance()) {\n"
     152             :     "  $name$_.setValue(\n"
     153             :     "    $type$.newBuilder(\n"
     154             :     "        get$capitalized_name$()).mergeFrom(value).buildPartial());\n"
     155             :     "} else {\n"
     156             :     "  $name$_.setValue(value);\n"
     157             :     "}\n"
     158             :     "$on_changed$\n",
     159             : 
     160             :     NULL,
     161             : 
     162             :     "$set_has_field_bit_builder$;\n"
     163           0 :     "return this;\n");
     164             : 
     165             :   // Field.Builder clearField()
     166           0 :   WriteFieldDocComment(printer, descriptor_);
     167             :   PrintNestedBuilderFunction(printer,
     168             :     "$deprecation$public Builder clear$capitalized_name$()",
     169             : 
     170             :     "$name$_.clear();\n"
     171             :     "$on_changed$\n",
     172             : 
     173             :     NULL,
     174             : 
     175             :     "$clear_has_field_bit_builder$;\n"
     176           0 :     "return this;\n");
     177             : 
     178           0 :   WriteFieldDocComment(printer, descriptor_);
     179             :   printer->Print(variables_,
     180             :     "$deprecation$public $type$.Builder get$capitalized_name$Builder() {\n"
     181             :     "  $set_has_field_bit_builder$;\n"
     182             :     "  $on_changed$\n"
     183             :     "  return get$capitalized_name$FieldBuilder().getBuilder();\n"
     184           0 :     "}\n");
     185           0 :   WriteFieldDocComment(printer, descriptor_);
     186             :   printer->Print(variables_,
     187             :     "$deprecation$public $type$OrBuilder get$capitalized_name$OrBuilder() {\n"
     188             :     "  if ($name$Builder_ != null) {\n"
     189             :     "    return $name$Builder_.getMessageOrBuilder();\n"
     190             :     "  } else {\n"
     191             :     "    return $name$_;\n"
     192             :     "  }\n"
     193           0 :     "}\n");
     194           0 :   WriteFieldDocComment(printer, descriptor_);
     195             :   printer->Print(variables_,
     196             :     "private com.google.protobuf.SingleFieldBuilder<\n"
     197             :     "    $type$, $type$.Builder, $type$OrBuilder> \n"
     198             :     "    get$capitalized_name$FieldBuilder() {\n"
     199             :     "  if ($name$Builder_ == null) {\n"
     200             :     "    $name$Builder_ = new com.google.protobuf.SingleFieldBuilder<\n"
     201             :     "        $type$, $type$.Builder, $type$OrBuilder>(\n"
     202             :     "            $name$_,\n"
     203             :     "            getParentForChildren(),\n"
     204             :     "            isClean());\n"
     205             :     "    $name$_ = null;\n"
     206             :     "  }\n"
     207             :     "  return $name$Builder_;\n"
     208           0 :     "}\n");
     209           0 : }
     210             : 
     211             : 
     212           0 : void ImmutableLazyMessageFieldGenerator::
     213             : GenerateInitializationCode(io::Printer* printer) const {
     214           0 :   printer->Print(variables_, "$name$_.clear();\n");
     215           0 : }
     216             : 
     217           0 : void ImmutableLazyMessageFieldGenerator::
     218             : GenerateBuilderClearCode(io::Printer* printer) const {
     219           0 :   printer->Print(variables_, "$name$_.clear();\n");
     220           0 :   printer->Print(variables_, "$clear_has_field_bit_builder$;\n");
     221           0 : }
     222             : 
     223           0 : void ImmutableLazyMessageFieldGenerator::
     224             : GenerateMergingCode(io::Printer* printer) const {
     225             :   printer->Print(variables_,
     226             :     "if (other.has$capitalized_name$()) {\n"
     227             :     "  $name$_.merge(other.$name$_);\n"
     228             :     "  $set_has_field_bit_builder$;\n"
     229           0 :     "}\n");
     230           0 : }
     231             : 
     232           0 : void ImmutableLazyMessageFieldGenerator::
     233             : GenerateBuildingCode(io::Printer* printer) const {
     234             :   printer->Print(variables_,
     235             :       "if ($get_has_field_bit_from_local$) {\n"
     236             :       "  $set_has_field_bit_to_local$;\n"
     237           0 :       "}\n");
     238             : 
     239             :   printer->Print(variables_,
     240             :       "result.$name$_.set(\n"
     241           0 :       "    $name$_);\n");
     242           0 : }
     243             : 
     244           0 : void ImmutableLazyMessageFieldGenerator::
     245             : GenerateParsingCode(io::Printer* printer) const {
     246             :   printer->Print(variables_,
     247           0 :     "$name$_.setByteString(input.readBytes(), extensionRegistry);\n");
     248             :   printer->Print(variables_,
     249           0 :     "$set_has_field_bit_message$;\n");
     250           0 : }
     251             : 
     252           0 : void ImmutableLazyMessageFieldGenerator::
     253             : GenerateSerializationCode(io::Printer* printer) const {
     254             :   // Do not de-serialize lazy fields.
     255             :   printer->Print(variables_,
     256             :     "if ($get_has_field_bit_message$) {\n"
     257             :     "  output.writeBytes($number$, $name$_.toByteString());\n"
     258           0 :     "}\n");
     259           0 : }
     260             : 
     261           0 : void ImmutableLazyMessageFieldGenerator::
     262             : GenerateSerializedSizeCode(io::Printer* printer) const {
     263             :   printer->Print(variables_,
     264             :     "if ($get_has_field_bit_message$) {\n"
     265             :     "  size += com.google.protobuf.CodedOutputStream\n"
     266             :     "    .computeLazyFieldSize($number$, $name$_);\n"
     267           0 :     "}\n");
     268           0 : }
     269             : 
     270             : // ===================================================================
     271             : 
     272           0 : ImmutableLazyMessageOneofFieldGenerator::
     273           0 : ImmutableLazyMessageOneofFieldGenerator(const FieldDescriptor* descriptor,
     274             :                                         int messageBitIndex,
     275             :                                         int builderBitIndex,
     276             :                                         Context* context)
     277             :     : ImmutableLazyMessageFieldGenerator(
     278           0 :           descriptor, messageBitIndex, builderBitIndex, context) {
     279             :   const OneofGeneratorInfo* info =
     280           0 :       context->GetOneofGeneratorInfo(descriptor->containing_oneof());
     281           0 :   SetCommonOneofVariables(descriptor, info, &variables_);
     282           0 :   variables_["lazy_type"] = "com.google.protobuf.LazyFieldLite";
     283           0 : }
     284             : 
     285           0 : ImmutableLazyMessageOneofFieldGenerator::
     286           0 : ~ImmutableLazyMessageOneofFieldGenerator() {}
     287             : 
     288           0 : void ImmutableLazyMessageOneofFieldGenerator::
     289             : GenerateMembers(io::Printer* printer) const {
     290           0 :   PrintExtraFieldInfo(variables_, printer);
     291           0 :   WriteFieldDocComment(printer, descriptor_);
     292             : 
     293             :   printer->Print(variables_,
     294             :     "$deprecation$public boolean has$capitalized_name$() {\n"
     295             :     "  return $has_oneof_case_message$;\n"
     296           0 :     "}\n");
     297           0 :   WriteFieldDocComment(printer, descriptor_);
     298             : 
     299             :   printer->Print(variables_,
     300             :     "$deprecation$public $type$ get$capitalized_name$() {\n"
     301             :     "  if ($has_oneof_case_message$) {\n"
     302             :     "    return ($type$) (($lazy_type$) $oneof_name$_).getValue(\n"
     303             :     "        $type$.getDefaultInstance());\n"
     304             :     "  }\n"
     305             :     "  return $type$.getDefaultInstance();\n"
     306           0 :     "}\n");
     307           0 : }
     308             : 
     309           0 : void ImmutableLazyMessageOneofFieldGenerator::
     310             : GenerateBuilderMembers(io::Printer* printer) const {
     311             :   // boolean hasField()
     312           0 :   WriteFieldDocComment(printer, descriptor_);
     313             :   printer->Print(variables_,
     314             :     "$deprecation$public boolean has$capitalized_name$() {\n"
     315             :     "  return $has_oneof_case_message$;\n"
     316           0 :     "}\n");
     317             : 
     318             :   printer->Print(variables_,
     319             :     "$deprecation$public $type$ get$capitalized_name$() {\n"
     320             :     "  if ($has_oneof_case_message$) {\n"
     321             :     "    return ($type$) (($lazy_type$) $oneof_name$_).getValue(\n"
     322             :     "        $type$.getDefaultInstance());\n"
     323             :     "  }\n"
     324             :     "  return $type$.getDefaultInstance();\n"
     325           0 :     "}\n");
     326             : 
     327             :   // Field.Builder setField(Field value)
     328           0 :   WriteFieldDocComment(printer, descriptor_);
     329             :   PrintNestedBuilderFunction(printer,
     330             :     "$deprecation$public Builder set$capitalized_name$($type$ value)",
     331             : 
     332             :     "if (value == null) {\n"
     333             :     "  throw new NullPointerException();\n"
     334             :     "}\n"
     335             :     "if (!($has_oneof_case_message$)) {\n"
     336             :     "  $oneof_name$_ = new $lazy_type$();\n"
     337             :     "  $set_oneof_case_message$;\n"
     338             :     "}\n"
     339             :     "(($lazy_type$) $oneof_name$_).setValue(value);\n"
     340             :     "$on_changed$\n",
     341             : 
     342             :      NULL,  // Lazy fields are supported only for lite-runtime.
     343             : 
     344           0 :     "return this;\n");
     345             : 
     346             :   // Field.Builder setField(Field.Builder builderForValue)
     347           0 :   WriteFieldDocComment(printer, descriptor_);
     348             :   PrintNestedBuilderFunction(printer,
     349             :     "$deprecation$public Builder set$capitalized_name$(\n"
     350             :     "    $type$.Builder builderForValue)",
     351             : 
     352             :     "if (!($has_oneof_case_message$)) {\n"
     353             :     "  $oneof_name$_ = new $lazy_type$();\n"
     354             :     "  $set_oneof_case_message$;\n"
     355             :     "}\n"
     356             :     "(($lazy_type$) $oneof_name$_).setValue(builderForValue.build());\n"
     357             :     "$on_changed$\n",
     358             : 
     359             :     NULL,
     360             : 
     361           0 :     "return this;\n");
     362             : 
     363             :   // Field.Builder mergeField(Field value)
     364           0 :   WriteFieldDocComment(printer, descriptor_);
     365             :   PrintNestedBuilderFunction(printer,
     366             :     "$deprecation$public Builder merge$capitalized_name$($type$ value)",
     367             : 
     368             :     "if ($has_oneof_case_message$ &&\n"
     369             :     "    !(($lazy_type$) $oneof_name$_).containsDefaultInstance()) {\n"
     370             :     "  (($lazy_type$) $oneof_name$_).setValue(\n"
     371             :     "    $type$.newBuilder(\n"
     372             :     "        get$capitalized_name$()).mergeFrom(value).buildPartial());\n"
     373             :     "} else {\n"
     374             :     "  if (!($has_oneof_case_message$)) {\n"
     375             :     "    $oneof_name$_ = new $lazy_type$();\n"
     376             :     "    $set_oneof_case_message$;\n"
     377             :     "  }\n"
     378             :     "  (($lazy_type$) $oneof_name$_).setValue(value);\n"
     379             :     "}\n"
     380             :     "$on_changed$\n",
     381             : 
     382             :     NULL,
     383             : 
     384           0 :     "return this;\n");
     385             : 
     386             :   // Field.Builder clearField()
     387           0 :   WriteFieldDocComment(printer, descriptor_);
     388             :   PrintNestedBuilderFunction(printer,
     389             :     "$deprecation$public Builder clear$capitalized_name$()",
     390             : 
     391             :     "if ($has_oneof_case_message$) {\n"
     392             :     "  $clear_oneof_case_message$;\n"
     393             :     "  $oneof_name$_ = null;\n"
     394             :     "  $on_changed$\n"
     395             :     "}\n",
     396             : 
     397             :     NULL,
     398             : 
     399           0 :     "return this;\n");
     400           0 : }
     401             : 
     402           0 : void ImmutableLazyMessageOneofFieldGenerator::
     403             : GenerateMergingCode(io::Printer* printer) const {
     404             :   printer->Print(variables_,
     405             :     "if (!($has_oneof_case_message$)) {\n"
     406             :     "  $oneof_name$_ = new $lazy_type$();\n"
     407             :     "}\n"
     408             :     "(($lazy_type$) $oneof_name$_).merge(\n"
     409             :     "    ($lazy_type$) other.$oneof_name$_);\n"
     410           0 :     "$set_oneof_case_message$;\n");
     411           0 : }
     412             : 
     413           0 : void ImmutableLazyMessageOneofFieldGenerator::
     414             : GenerateBuildingCode(io::Printer* printer) const {
     415             :   printer->Print(variables_,
     416           0 :                  "if ($has_oneof_case_message$) {\n");
     417           0 :   printer->Indent();
     418             : 
     419             :   printer->Print(variables_,
     420             :       "result.$oneof_name$_ = new $lazy_type$();\n"
     421             :       "(($lazy_type$) result.$oneof_name$_).set(\n"
     422           0 :       "    (($lazy_type$) $oneof_name$_));\n");
     423           0 :   printer->Outdent();
     424           0 :   printer->Print("}\n");
     425           0 : }
     426             : 
     427           0 : void ImmutableLazyMessageOneofFieldGenerator::
     428             : GenerateParsingCode(io::Printer* printer) const {
     429             :   printer->Print(variables_,
     430             :     "if (!($has_oneof_case_message$)) {\n"
     431             :     "  $oneof_name$_ = new $lazy_type$();\n"
     432             :     "}\n"
     433             :     "(($lazy_type$) $oneof_name$_).setByteString(\n"
     434             :     "    input.readBytes(), extensionRegistry);\n"
     435           0 :     "$set_oneof_case_message$;\n");
     436           0 : }
     437             : 
     438           0 : void ImmutableLazyMessageOneofFieldGenerator::
     439             : GenerateSerializationCode(io::Printer* printer) const {
     440             :   // Do not de-serialize lazy fields.
     441             :   printer->Print(variables_,
     442             :     "if ($has_oneof_case_message$) {\n"
     443             :     "  output.writeBytes(\n"
     444             :     "      $number$, (($lazy_type$) $oneof_name$_).toByteString());\n"
     445           0 :     "}\n");
     446           0 : }
     447             : 
     448           0 : void ImmutableLazyMessageOneofFieldGenerator::
     449             : GenerateSerializedSizeCode(io::Printer* printer) const {
     450             :   printer->Print(variables_,
     451             :     "if ($has_oneof_case_message$) {\n"
     452             :     "  size += com.google.protobuf.CodedOutputStream\n"
     453             :     "    .computeLazyFieldSize($number$, ($lazy_type$) $oneof_name$_);\n"
     454           0 :     "}\n");
     455           0 : }
     456             : 
     457             : // ===================================================================
     458             : 
     459           0 : RepeatedImmutableLazyMessageFieldGenerator::
     460             : RepeatedImmutableLazyMessageFieldGenerator(
     461             :     const FieldDescriptor* descriptor,
     462             :     int messageBitIndex,
     463             :     int builderBitIndex,
     464             :     Context* context)
     465             :     : RepeatedImmutableMessageFieldGenerator(
     466           0 :           descriptor, messageBitIndex, builderBitIndex, context) {
     467           0 : }
     468             : 
     469             : 
     470           0 : RepeatedImmutableLazyMessageFieldGenerator::
     471           0 : ~RepeatedImmutableLazyMessageFieldGenerator() {}
     472             : 
     473           0 : void RepeatedImmutableLazyMessageFieldGenerator::
     474             : GenerateMembers(io::Printer* printer) const {
     475             :   printer->Print(variables_,
     476           0 :     "private java.util.List<com.google.protobuf.LazyFieldLite> $name$_;\n");
     477           0 :   PrintExtraFieldInfo(variables_, printer);
     478           0 :   WriteFieldDocComment(printer, descriptor_);
     479             :   printer->Print(variables_,
     480             :     "$deprecation$public java.util.List<$type$>\n"
     481             :     "    get$capitalized_name$List() {\n"
     482             :     "  java.util.List<$type$> list =\n"
     483             :     "      new java.util.ArrayList<$type$>($name$_.size());\n"
     484             :     "  for (com.google.protobuf.LazyFieldLite lf : $name$_) {\n"
     485             :     "    list.add(($type$) lf.getValue($type$.getDefaultInstance()));\n"
     486             :     "  }\n"
     487             :     "  return list;\n"
     488           0 :     "}\n");
     489           0 :   WriteFieldDocComment(printer, descriptor_);
     490             :   printer->Print(variables_,
     491             :     "$deprecation$public java.util.List<? extends $type$OrBuilder>\n"
     492             :     "    get$capitalized_name$OrBuilderList() {\n"
     493             :     "  return get$capitalized_name$List();\n"
     494           0 :     "}\n");
     495           0 :   WriteFieldDocComment(printer, descriptor_);
     496             :   printer->Print(variables_,
     497             :     "$deprecation$public int get$capitalized_name$Count() {\n"
     498             :     "  return $name$_.size();\n"
     499           0 :     "}\n");
     500           0 :   WriteFieldDocComment(printer, descriptor_);
     501             :   printer->Print(variables_,
     502             :     "$deprecation$public $type$ get$capitalized_name$(int index) {\n"
     503             :     "  return ($type$)\n"
     504             :     "      $name$_.get(index).getValue($type$.getDefaultInstance());\n"
     505           0 :     "}\n");
     506           0 :   WriteFieldDocComment(printer, descriptor_);
     507             :   printer->Print(variables_,
     508             :     "$deprecation$public $type$OrBuilder get$capitalized_name$OrBuilder(\n"
     509             :     "    int index) {\n"
     510             :     "  return ($type$OrBuilder)\n"
     511             :     "      $name$_.get(index).getValue($type$.getDefaultInstance());\n"
     512           0 :     "}\n");
     513           0 : }
     514             : 
     515           0 : void RepeatedImmutableLazyMessageFieldGenerator::
     516             : GenerateBuilderMembers(io::Printer* printer) const {
     517             :   // When using nested-builders, the code initially works just like the
     518             :   // non-nested builder case. It only creates a nested builder lazily on
     519             :   // demand and then forever delegates to it after creation.
     520             : 
     521             :   printer->Print(variables_,
     522             :     "private java.util.List<com.google.protobuf.LazyFieldLite> $name$_ =\n"
     523             :     "  java.util.Collections.emptyList();\n"
     524             : 
     525             :     "private void ensure$capitalized_name$IsMutable() {\n"
     526             :     "  if (!$get_mutable_bit_builder$) {\n"
     527             :     "    $name$_ =\n"
     528             :     "        new java.util.ArrayList<com.google.protobuf.LazyFieldLite>(\n"
     529             :     "            $name$_);\n"
     530             :     "    $set_mutable_bit_builder$;\n"
     531             :     "   }\n"
     532             :     "}\n"
     533           0 :     "\n");
     534             : 
     535             :   printer->Print(variables_,
     536             :     // If this builder is non-null, it is used and the other fields are
     537             :     // ignored.
     538             :     "private com.google.protobuf.RepeatedFieldBuilder<\n"
     539             :     "    $type$, $type$.Builder, $type$OrBuilder> $name$Builder_;\n"
     540           0 :     "\n");
     541             : 
     542             :   // The comments above the methods below are based on a hypothetical
     543             :   // repeated field of type "Field" called "RepeatedField".
     544             : 
     545             :   // List<Field> getRepeatedFieldList()
     546           0 :   WriteFieldDocComment(printer, descriptor_);
     547             :   PrintNestedBuilderFunction(printer,
     548             :     "$deprecation$public java.util.List<$type$> get$capitalized_name$List()",
     549             : 
     550             :     "java.util.List<$type$> list =\n"
     551             :     "    new java.util.ArrayList<$type$>($name$_.size());\n"
     552             :     "for (com.google.protobuf.LazyFieldLite lf : $name$_) {\n"
     553             :     "  list.add(($type$) lf.getValue($type$.getDefaultInstance()));\n"
     554             :     "}\n"
     555             :     "return java.util.Collections.unmodifiableList(list);\n",
     556             : 
     557             :     "return $name$Builder_.getMessageList();\n",
     558             : 
     559           0 :     NULL);
     560             : 
     561             :   // int getRepeatedFieldCount()
     562           0 :   WriteFieldDocComment(printer, descriptor_);
     563             :   PrintNestedBuilderFunction(printer,
     564             :     "$deprecation$public int get$capitalized_name$Count()",
     565             : 
     566             :     "return $name$_.size();\n",
     567             :     "return $name$Builder_.getCount();\n",
     568             : 
     569           0 :     NULL);
     570             : 
     571             :   // Field getRepeatedField(int index)
     572           0 :   WriteFieldDocComment(printer, descriptor_);
     573             :   PrintNestedBuilderFunction(printer,
     574             :     "$deprecation$public $type$ get$capitalized_name$(int index)",
     575             : 
     576             :     "return ($type$) $name$_.get(index).getValue(\n"
     577             :     "    $type$.getDefaultInstance());\n",
     578             : 
     579             :     "return $name$Builder_.getMessage(index);\n",
     580             : 
     581           0 :     NULL);
     582             : 
     583             :   // Builder setRepeatedField(int index, Field value)
     584           0 :   WriteFieldDocComment(printer, descriptor_);
     585             :   PrintNestedBuilderFunction(printer,
     586             :     "$deprecation$public Builder set$capitalized_name$(\n"
     587             :     "    int index, $type$ value)",
     588             :     "if (value == null) {\n"
     589             :     "  throw new NullPointerException();\n"
     590             :     "}\n"
     591             :     "ensure$capitalized_name$IsMutable();\n"
     592             :     "$name$_.set(index, com.google.protobuf.LazyFieldLite.fromValue(value));\n"
     593             :     "$on_changed$\n",
     594             :     "$name$Builder_.setMessage(index, value);\n",
     595           0 :     "return this;\n");
     596             : 
     597             :   // Builder setRepeatedField(int index, Field.Builder builderForValue)
     598           0 :   WriteFieldDocComment(printer, descriptor_);
     599             :   PrintNestedBuilderFunction(printer,
     600             :     "$deprecation$public Builder set$capitalized_name$(\n"
     601             :     "    int index, $type$.Builder builderForValue)",
     602             : 
     603             :     "ensure$capitalized_name$IsMutable();\n"
     604             :     "$name$_.set(index, com.google.protobuf.LazyFieldLite.fromValue(\n"
     605             :     "    builderForValue.build()));\n"
     606             :     "$on_changed$\n",
     607             : 
     608             :     "$name$Builder_.setMessage(index, builderForValue.build());\n",
     609             : 
     610           0 :     "return this;\n");
     611             : 
     612             :   // Builder addRepeatedField(Field value)
     613           0 :   WriteFieldDocComment(printer, descriptor_);
     614             :   PrintNestedBuilderFunction(printer,
     615             :     "$deprecation$public Builder add$capitalized_name$($type$ value)",
     616             : 
     617             :     "if (value == null) {\n"
     618             :     "  throw new NullPointerException();\n"
     619             :     "}\n"
     620             :     "ensure$capitalized_name$IsMutable();\n"
     621             :     "$name$_.add(com.google.protobuf.LazyFieldLite.fromValue(value));\n"
     622             : 
     623             :     "$on_changed$\n",
     624             : 
     625             :     "$name$Builder_.addMessage(value);\n",
     626             : 
     627           0 :     "return this;\n");
     628             : 
     629             :   // Builder addRepeatedField(int index, Field value)
     630           0 :   WriteFieldDocComment(printer, descriptor_);
     631             :   PrintNestedBuilderFunction(printer,
     632             :     "$deprecation$public Builder add$capitalized_name$(\n"
     633             :     "    int index, $type$ value)",
     634             : 
     635             :     "if (value == null) {\n"
     636             :     "  throw new NullPointerException();\n"
     637             :     "}\n"
     638             :     "ensure$capitalized_name$IsMutable();\n"
     639             :     "$name$_.add(index, com.google.protobuf.LazyFieldLite.fromValue(value));\n"
     640             :     "$on_changed$\n",
     641             : 
     642             :     "$name$Builder_.addMessage(index, value);\n",
     643             : 
     644           0 :     "return this;\n");
     645             : 
     646             :   // Builder addRepeatedField(Field.Builder builderForValue)
     647           0 :   WriteFieldDocComment(printer, descriptor_);
     648             :   PrintNestedBuilderFunction(printer,
     649             :     "$deprecation$public Builder add$capitalized_name$(\n"
     650             :     "    $type$.Builder builderForValue)",
     651             : 
     652             :     "ensure$capitalized_name$IsMutable();\n"
     653             :     "$name$_.add(com.google.protobuf.LazyFieldLite.fromValue(\n"
     654             :     "    builderForValue.build()));\n"
     655             :     "$on_changed$\n",
     656             : 
     657             :     "$name$Builder_.addMessage(builderForValue.build());\n",
     658             : 
     659           0 :     "return this;\n");
     660             : 
     661             :   // Builder addRepeatedField(int index, Field.Builder builderForValue)
     662           0 :   WriteFieldDocComment(printer, descriptor_);
     663             :   PrintNestedBuilderFunction(printer,
     664             :     "$deprecation$public Builder add$capitalized_name$(\n"
     665             :     "    int index, $type$.Builder builderForValue)",
     666             : 
     667             :     "ensure$capitalized_name$IsMutable();\n"
     668             :     "$name$_.add(index, com.google.protobuf.LazyFieldLite.fromValue(\n"
     669             :     "    builderForValue.build()));\n"
     670             :     "$on_changed$\n",
     671             : 
     672             :     "$name$Builder_.addMessage(index, builderForValue.build());\n",
     673             : 
     674           0 :     "return this;\n");
     675             : 
     676             :   // Builder addAllRepeatedField(Iterable<Field> values)
     677           0 :   WriteFieldDocComment(printer, descriptor_);
     678             :   PrintNestedBuilderFunction(printer,
     679             :     "$deprecation$public Builder addAll$capitalized_name$(\n"
     680             :     "    java.lang.Iterable<? extends $type$> values)",
     681             : 
     682             :     "ensure$capitalized_name$IsMutable();\n"
     683             :     "for (com.google.protobuf.MessageLite v : values) {\n"
     684             :     "  $name$_.add(com.google.protobuf.LazyFieldLite.fromValue(v));\n"
     685             :     "}\n"
     686             :     "$on_changed$\n",
     687             : 
     688             :     "$name$Builder_.addAllMessages(values);\n",
     689             : 
     690           0 :     "return this;\n");
     691             : 
     692             :   // Builder clearAllRepeatedField()
     693           0 :   WriteFieldDocComment(printer, descriptor_);
     694             :   PrintNestedBuilderFunction(printer,
     695             :     "$deprecation$public Builder clear$capitalized_name$()",
     696             : 
     697             :     "$name$_ = java.util.Collections.emptyList();\n"
     698             :     "$clear_mutable_bit_builder$;\n"
     699             :     "$on_changed$\n",
     700             : 
     701             :     "$name$Builder_.clear();\n",
     702             : 
     703           0 :     "return this;\n");
     704             : 
     705             :   // Builder removeRepeatedField(int index)
     706           0 :   WriteFieldDocComment(printer, descriptor_);
     707             :   PrintNestedBuilderFunction(printer,
     708             :     "$deprecation$public Builder remove$capitalized_name$(int index)",
     709             : 
     710             :     "ensure$capitalized_name$IsMutable();\n"
     711             :     "$name$_.remove(index);\n"
     712             :     "$on_changed$\n",
     713             : 
     714             :     "$name$Builder_.remove(index);\n",
     715             : 
     716           0 :     "return this;\n");
     717             : 
     718           0 :   WriteFieldDocComment(printer, descriptor_);
     719             :   printer->Print(variables_,
     720             :     "$deprecation$public $type$.Builder get$capitalized_name$Builder(\n"
     721             :     "    int index) {\n"
     722             :     "  return get$capitalized_name$FieldBuilder().getBuilder(index);\n"
     723           0 :     "}\n");
     724             : 
     725           0 :   WriteFieldDocComment(printer, descriptor_);
     726             :       printer->Print(variables_,
     727             :     "$deprecation$public $type$OrBuilder get$capitalized_name$OrBuilder(\n"
     728             :     "    int index) {\n"
     729             :     "  if ($name$Builder_ == null) {\n"
     730             :     "    return $name$_.get(index);"
     731             :     "  } else {\n"
     732             :     "    return $name$Builder_.getMessageOrBuilder(index);\n"
     733             :     "  }\n"
     734           0 :     "}\n");
     735             : 
     736           0 :   WriteFieldDocComment(printer, descriptor_);
     737             :       printer->Print(variables_,
     738             :     "$deprecation$public java.util.List<? extends $type$OrBuilder> \n"
     739             :     "     get$capitalized_name$OrBuilderList() {\n"
     740             :     "  if ($name$Builder_ != null) {\n"
     741             :     "    return $name$Builder_.getMessageOrBuilderList();\n"
     742             :     "  } else {\n"
     743             :     "    return java.util.Collections.unmodifiableList($name$_);\n"
     744             :     "  }\n"
     745           0 :     "}\n");
     746             : 
     747           0 :   WriteFieldDocComment(printer, descriptor_);
     748             :       printer->Print(variables_,
     749             :     "$deprecation$public $type$.Builder add$capitalized_name$Builder() {\n"
     750             :     "  return get$capitalized_name$FieldBuilder().addBuilder(\n"
     751             :     "      $type$.getDefaultInstance());\n"
     752           0 :     "}\n");
     753           0 :   WriteFieldDocComment(printer, descriptor_);
     754             :       printer->Print(variables_,
     755             :     "$deprecation$public $type$.Builder add$capitalized_name$Builder(\n"
     756             :     "    int index) {\n"
     757             :     "  return get$capitalized_name$FieldBuilder().addBuilder(\n"
     758             :     "      index, $type$.getDefaultInstance());\n"
     759           0 :     "}\n");
     760           0 :   WriteFieldDocComment(printer, descriptor_);
     761             :       printer->Print(variables_,
     762             :     "$deprecation$public java.util.List<$type$.Builder> \n"
     763             :     "     get$capitalized_name$BuilderList() {\n"
     764             :     "  return get$capitalized_name$FieldBuilder().getBuilderList();\n"
     765             :     "}\n"
     766             :     "private com.google.protobuf.RepeatedFieldBuilder<\n"
     767             :     "    $type$, $type$.Builder, $type$OrBuilder> \n"
     768             :     "    get$capitalized_name$FieldBuilder() {\n"
     769             :     "  if ($name$Builder_ == null) {\n"
     770             :     "    $name$Builder_ = new com.google.protobuf.RepeatedFieldBuilder<\n"
     771             :     "        $type$, $type$.Builder, $type$OrBuilder>(\n"
     772             :     "            $name$_,\n"
     773             :     "            $get_mutable_bit_builder$,\n"
     774             :     "            getParentForChildren(),\n"
     775             :     "            isClean());\n"
     776             :     "    $name$_ = null;\n"
     777             :     "  }\n"
     778             :     "  return $name$Builder_;\n"
     779           0 :     "}\n");
     780           0 : }
     781             : 
     782           0 : void RepeatedImmutableLazyMessageFieldGenerator::
     783             : GenerateParsingCode(io::Printer* printer) const {
     784             :   printer->Print(variables_,
     785             :     "if (!$get_mutable_bit_parser$) {\n"
     786             :     "  $name$_ =\n"
     787             :     "      new java.util.ArrayList<com.google.protobuf.LazyFieldLite>();\n"
     788             :     "  $set_mutable_bit_parser$;\n"
     789             :     "}\n"
     790             :     "$name$_.add(new com.google.protobuf.LazyFieldLite(\n"
     791           0 :     "    extensionRegistry, input.readBytes()));\n");
     792           0 : }
     793             : 
     794           0 : void RepeatedImmutableLazyMessageFieldGenerator::
     795             : GenerateSerializationCode(io::Printer* printer) const {
     796             :   printer->Print(variables_,
     797             :     "for (int i = 0; i < $name$_.size(); i++) {\n"
     798             :     "  output.writeBytes($number$, $name$_.get(i).toByteString());\n"
     799           0 :     "}\n");
     800           0 : }
     801             : 
     802           0 : void RepeatedImmutableLazyMessageFieldGenerator::
     803             : GenerateSerializedSizeCode(io::Printer* printer) const {
     804             :   printer->Print(variables_,
     805             :     "for (int i = 0; i < $name$_.size(); i++) {\n"
     806             :     "  size += com.google.protobuf.CodedOutputStream\n"
     807             :     "    .computeLazyFieldSize($number$, $name$_.get(i));\n"
     808           0 :     "}\n");
     809           0 : }
     810             : 
     811             : }  // namespace java
     812             : }  // namespace compiler
     813             : }  // namespace protobuf
     814             : }  // namespace google

Generated by: LCOV version 1.10