~ubuntu-branches/debian/experimental/protobuf/experimental

« back to all changes in this revision

Viewing changes to src/google/protobuf/compiler/java/java_message_field.cc

  • Committer: Package Import Robot
  • Author(s): Robert S. Edmonds, Micah Anderson, Colin Watson, Steve Langasek, Robert S. Edmonds
  • Date: 2013-10-12 18:32:37 UTC
  • mfrom: (1.3.1) (10.1.4 sid)
  • Revision ID: package-import@ubuntu.com-20131012183237-jz6tvmj9tn68atrf
Tags: 2.5.0-1
[ Micah Anderson ]
* New upstream version. (Closes: #704731.)
* Update debian/watch.
* Refresh patches.

[ Colin Watson ]
* Use the autotools-dev dh addon to update config.guess/config.sub for
  arm64. (Closes: #725976.)

[ Steve Langasek ]
* Don't recommend protobuf-compiler from the bindings, it's not used and
  this doesn't need to be pulled in at runtime. (Closes: #703628.)
* Mark protobuf-compiler Multi-Arch: foreign; the output of this command
  is architecture-independent source, we don't need the version of the
  compiler to match the target arch.
* Bump to debhelper compat 9, so that our libs get installed to the
  multiarch locations.
* Mark the library packages Multi-Arch: same.
* Fix debian/rules to support cross-building of the python bindings.
* Build-depend on libpython-dev, not python-dev, for cross-build
  compatibility.
* (Closes: #726083.)

[ Robert S. Edmonds ]
* Upload to experimental.
* Bump ABI version from 7 to 8.
* Bump Standards-Version to 3.9.4.
* Convert from python-support to dh-python.
* Drop support for python2.6.
* python-protobuf: switch back to the pure Python implementation, as
  upstream appears to no longer be maintaining the current C++ based Python
  binding. See the following upstream issues for details:
  - https://code.google.com/p/protobuf/issues/detail?id=434
  - https://code.google.com/p/protobuf/issues/detail?id=503

Show diffs side-by-side

added added

removed removed

Lines of Context:
36
36
#include <string>
37
37
 
38
38
#include <google/protobuf/compiler/java/java_message_field.h>
 
39
#include <google/protobuf/compiler/java/java_doc_comment.h>
39
40
#include <google/protobuf/compiler/java/java_helpers.h>
40
41
#include <google/protobuf/io/printer.h>
41
42
#include <google/protobuf/wire_format.h>
73
74
 
74
75
  // For singular messages and builders, one bit is used for the hasField bit.
75
76
  (*variables)["get_has_field_bit_message"] = GenerateGetBit(messageBitIndex);
 
77
  (*variables)["set_has_field_bit_message"] = GenerateSetBit(messageBitIndex);
76
78
 
77
79
  (*variables)["get_has_field_bit_builder"] = GenerateGetBit(builderBitIndex);
78
80
  (*variables)["set_has_field_bit_builder"] = GenerateSetBit(builderBitIndex);
84
86
  (*variables)["set_mutable_bit_builder"] = GenerateSetBit(builderBitIndex);
85
87
  (*variables)["clear_mutable_bit_builder"] = GenerateClearBit(builderBitIndex);
86
88
 
 
89
  // For repeated fields, one bit is used for whether the array is immutable
 
90
  // in the parsing constructor.
 
91
  (*variables)["get_mutable_bit_parser"] =
 
92
      GenerateGetBitMutableLocal(builderBitIndex);
 
93
  (*variables)["set_mutable_bit_parser"] =
 
94
      GenerateSetBitMutableLocal(builderBitIndex);
 
95
 
87
96
  (*variables)["get_has_field_bit_from_local"] =
88
97
      GenerateGetBitFromLocal(builderBitIndex);
89
98
  (*variables)["set_has_field_bit_to_local"] =
120
129
  // interface so that builders can choose dynamically to either return a
121
130
  // message or a nested builder, so that asking for the interface doesn't
122
131
  // cause a message to ever be built.
123
 
  printer->Print(variables_,
124
 
    "$deprecation$boolean has$capitalized_name$();\n"
 
132
  WriteFieldDocComment(printer, descriptor_);
 
133
  printer->Print(variables_,
 
134
    "$deprecation$boolean has$capitalized_name$();\n");
 
135
  WriteFieldDocComment(printer, descriptor_);
 
136
  printer->Print(variables_,
125
137
    "$deprecation$$type$ get$capitalized_name$();\n");
126
138
 
127
139
  if (HasNestedBuilders(descriptor_->containing_type())) {
 
140
    WriteFieldDocComment(printer, descriptor_);
128
141
    printer->Print(variables_,
129
142
      "$deprecation$$type$OrBuilder get$capitalized_name$OrBuilder();\n");
130
143
  }
133
146
void MessageFieldGenerator::
134
147
GenerateMembers(io::Printer* printer) const {
135
148
  printer->Print(variables_,
136
 
    "private $type$ $name$_;\n"
 
149
    "private $type$ $name$_;\n");
 
150
  WriteFieldDocComment(printer, descriptor_);
 
151
  printer->Print(variables_,
137
152
    "$deprecation$public boolean has$capitalized_name$() {\n"
138
153
    "  return $get_has_field_bit_message$;\n"
139
 
    "}\n"
 
154
    "}\n");
 
155
  WriteFieldDocComment(printer, descriptor_);
 
156
  printer->Print(variables_,
140
157
    "$deprecation$public $type$ get$capitalized_name$() {\n"
141
158
    "  return $name$_;\n"
142
159
    "}\n");
143
160
 
144
161
  if (HasNestedBuilders(descriptor_->containing_type())) {
 
162
    WriteFieldDocComment(printer, descriptor_);
145
163
    printer->Print(variables_,
146
164
      "$deprecation$public $type$OrBuilder get$capitalized_name$OrBuilder() {\n"
147
165
      "  return $name$_;\n"
208
226
  // field of type "Field" called "Field".
209
227
 
210
228
  // boolean hasField()
 
229
  WriteFieldDocComment(printer, descriptor_);
211
230
  printer->Print(variables_,
212
231
    "$deprecation$public boolean has$capitalized_name$() {\n"
213
232
    "  return $get_has_field_bit_builder$;\n"
214
233
    "}\n");
215
234
 
216
235
  // Field getField()
 
236
  WriteFieldDocComment(printer, descriptor_);
217
237
  PrintNestedBuilderFunction(printer,
218
238
    "$deprecation$public $type$ get$capitalized_name$()",
219
239
 
224
244
    NULL);
225
245
 
226
246
  // Field.Builder setField(Field value)
 
247
  WriteFieldDocComment(printer, descriptor_);
227
248
  PrintNestedBuilderFunction(printer,
228
249
    "$deprecation$public Builder set$capitalized_name$($type$ value)",
229
250
 
239
260
    "return this;\n");
240
261
 
241
262
  // Field.Builder setField(Field.Builder builderForValue)
 
263
  WriteFieldDocComment(printer, descriptor_);
242
264
  PrintNestedBuilderFunction(printer,
243
265
    "$deprecation$public Builder set$capitalized_name$(\n"
244
266
    "    $type$.Builder builderForValue)",
252
274
    "return this;\n");
253
275
 
254
276
  // Field.Builder mergeField(Field value)
 
277
  WriteFieldDocComment(printer, descriptor_);
255
278
  PrintNestedBuilderFunction(printer,
256
279
    "$deprecation$public Builder merge$capitalized_name$($type$ value)",
257
280
 
270
293
    "return this;\n");
271
294
 
272
295
  // Field.Builder clearField()
 
296
  WriteFieldDocComment(printer, descriptor_);
273
297
  PrintNestedBuilderFunction(printer,
274
298
    "$deprecation$public Builder clear$capitalized_name$()",
275
299
 
282
306
    "return this;\n");
283
307
 
284
308
  if (HasNestedBuilders(descriptor_->containing_type())) {
 
309
    WriteFieldDocComment(printer, descriptor_);
285
310
    printer->Print(variables_,
286
311
      "$deprecation$public $type$.Builder get$capitalized_name$Builder() {\n"
287
312
      "  $set_has_field_bit_builder$;\n"
288
313
      "  $on_changed$\n"
289
314
      "  return get$capitalized_name$FieldBuilder().getBuilder();\n"
290
 
      "}\n"
 
315
      "}\n");
 
316
    WriteFieldDocComment(printer, descriptor_);
 
317
    printer->Print(variables_,
291
318
      "$deprecation$public $type$OrBuilder get$capitalized_name$OrBuilder() {\n"
292
319
      "  if ($name$Builder_ != null) {\n"
293
320
      "    return $name$Builder_.getMessageOrBuilder();\n"
294
321
      "  } else {\n"
295
322
      "    return $name$_;\n"
296
323
      "  }\n"
297
 
      "}\n"
 
324
      "}\n");
 
325
    WriteFieldDocComment(printer, descriptor_);
 
326
    printer->Print(variables_,
298
327
      "private com.google.protobuf.SingleFieldBuilder<\n"
299
328
      "    $type$, $type$.Builder, $type$OrBuilder> \n"
300
329
      "    get$capitalized_name$FieldBuilder() {\n"
357
386
void MessageFieldGenerator::
358
387
GenerateParsingCode(io::Printer* printer) const {
359
388
  printer->Print(variables_,
360
 
    "$type$.Builder subBuilder = $type$.newBuilder();\n"
361
 
    "if (has$capitalized_name$()) {\n"
362
 
    "  subBuilder.mergeFrom(get$capitalized_name$());\n"
 
389
    "$type$.Builder subBuilder = null;\n"
 
390
    "if ($get_has_field_bit_message$) {\n"
 
391
    "  subBuilder = $name$_.toBuilder();\n"
363
392
    "}\n");
364
393
 
365
394
  if (GetType(descriptor_) == FieldDescriptor::TYPE_GROUP) {
366
395
    printer->Print(variables_,
367
 
      "input.readGroup($number$, subBuilder, extensionRegistry);\n");
 
396
      "$name$_ = input.readGroup($number$, $type$.PARSER,\n"
 
397
      "    extensionRegistry);\n");
368
398
  } else {
369
399
    printer->Print(variables_,
370
 
      "input.readMessage(subBuilder, extensionRegistry);\n");
 
400
      "$name$_ = input.readMessage($type$.PARSER, extensionRegistry);\n");
371
401
  }
372
402
 
373
403
  printer->Print(variables_,
374
 
    "set$capitalized_name$(subBuilder.buildPartial());\n");
 
404
    "if (subBuilder != null) {\n"
 
405
    "  subBuilder.mergeFrom($name$_);\n"
 
406
    "  $name$_ = subBuilder.buildPartial();\n"
 
407
    "}\n");
 
408
  printer->Print(variables_,
 
409
    "$set_has_field_bit_message$;\n");
 
410
}
 
411
 
 
412
void MessageFieldGenerator::
 
413
GenerateParsingDoneCode(io::Printer* printer) const {
 
414
  // noop for messages.
375
415
}
376
416
 
377
417
void MessageFieldGenerator::
437
477
  // interface so that builders can choose dynamically to either return a
438
478
  // message or a nested builder, so that asking for the interface doesn't
439
479
  // cause a message to ever be built.
 
480
  WriteFieldDocComment(printer, descriptor_);
440
481
  printer->Print(variables_,
441
482
    "$deprecation$java.util.List<$type$> \n"
442
 
    "    get$capitalized_name$List();\n"
443
 
    "$deprecation$$type$ get$capitalized_name$(int index);\n"
 
483
    "    get$capitalized_name$List();\n");
 
484
  WriteFieldDocComment(printer, descriptor_);
 
485
  printer->Print(variables_,
 
486
    "$deprecation$$type$ get$capitalized_name$(int index);\n");
 
487
  WriteFieldDocComment(printer, descriptor_);
 
488
  printer->Print(variables_,
444
489
    "$deprecation$int get$capitalized_name$Count();\n");
445
490
  if (HasNestedBuilders(descriptor_->containing_type())) {
 
491
    WriteFieldDocComment(printer, descriptor_);
446
492
    printer->Print(variables_,
447
493
      "$deprecation$java.util.List<? extends $type$OrBuilder> \n"
448
 
      "    get$capitalized_name$OrBuilderList();\n"
 
494
      "    get$capitalized_name$OrBuilderList();\n");
 
495
    WriteFieldDocComment(printer, descriptor_);
 
496
    printer->Print(variables_,
449
497
      "$deprecation$$type$OrBuilder get$capitalized_name$OrBuilder(\n"
450
498
      "    int index);\n");
451
499
  }
454
502
void RepeatedMessageFieldGenerator::
455
503
GenerateMembers(io::Printer* printer) const {
456
504
  printer->Print(variables_,
457
 
    "private java.util.List<$type$> $name$_;\n"
 
505
    "private java.util.List<$type$> $name$_;\n");
 
506
  WriteFieldDocComment(printer, descriptor_);
 
507
  printer->Print(variables_,
458
508
    "$deprecation$public java.util.List<$type$> get$capitalized_name$List() {\n"
459
509
    "  return $name$_;\n"   // note:  unmodifiable list
460
 
    "}\n"
 
510
    "}\n");
 
511
  WriteFieldDocComment(printer, descriptor_);
 
512
  printer->Print(variables_,
461
513
    "$deprecation$public java.util.List<? extends $type$OrBuilder> \n"
462
514
    "    get$capitalized_name$OrBuilderList() {\n"
463
515
    "  return $name$_;\n"
464
 
    "}\n"
 
516
    "}\n");
 
517
  WriteFieldDocComment(printer, descriptor_);
 
518
  printer->Print(variables_,
465
519
    "$deprecation$public int get$capitalized_name$Count() {\n"
466
520
    "  return $name$_.size();\n"
467
 
    "}\n"
 
521
    "}\n");
 
522
  WriteFieldDocComment(printer, descriptor_);
 
523
  printer->Print(variables_,
468
524
    "$deprecation$public $type$ get$capitalized_name$(int index) {\n"
469
525
    "  return $name$_.get(index);\n"
470
 
    "}\n"
 
526
    "}\n");
 
527
  WriteFieldDocComment(printer, descriptor_);
 
528
  printer->Print(variables_,
471
529
    "$deprecation$public $type$OrBuilder get$capitalized_name$OrBuilder(\n"
472
530
    "    int index) {\n"
473
531
    "  return $name$_.get(index);\n"
552
610
  // repeated field of type "Field" called "RepeatedField".
553
611
 
554
612
  // List<Field> getRepeatedFieldList()
 
613
  WriteFieldDocComment(printer, descriptor_);
555
614
  PrintNestedBuilderFunction(printer,
556
615
    "$deprecation$public java.util.List<$type$> get$capitalized_name$List()",
557
616
 
561
620
    NULL);
562
621
 
563
622
  // int getRepeatedFieldCount()
 
623
  WriteFieldDocComment(printer, descriptor_);
564
624
  PrintNestedBuilderFunction(printer,
565
625
    "$deprecation$public int get$capitalized_name$Count()",
566
626
 
570
630
    NULL);
571
631
 
572
632
  // Field getRepeatedField(int index)
 
633
  WriteFieldDocComment(printer, descriptor_);
573
634
  PrintNestedBuilderFunction(printer,
574
635
    "$deprecation$public $type$ get$capitalized_name$(int index)",
575
636
 
580
641
    NULL);
581
642
 
582
643
  // Builder setRepeatedField(int index, Field value)
 
644
  WriteFieldDocComment(printer, descriptor_);
583
645
  PrintNestedBuilderFunction(printer,
584
646
    "$deprecation$public Builder set$capitalized_name$(\n"
585
647
    "    int index, $type$ value)",
593
655
    "return this;\n");
594
656
 
595
657
  // Builder setRepeatedField(int index, Field.Builder builderForValue)
 
658
  WriteFieldDocComment(printer, descriptor_);
596
659
  PrintNestedBuilderFunction(printer,
597
660
    "$deprecation$public Builder set$capitalized_name$(\n"
598
661
    "    int index, $type$.Builder builderForValue)",
606
669
    "return this;\n");
607
670
 
608
671
  // Builder addRepeatedField(Field value)
 
672
  WriteFieldDocComment(printer, descriptor_);
609
673
  PrintNestedBuilderFunction(printer,
610
674
    "$deprecation$public Builder add$capitalized_name$($type$ value)",
611
675
 
622
686
    "return this;\n");
623
687
 
624
688
  // Builder addRepeatedField(int index, Field value)
 
689
  WriteFieldDocComment(printer, descriptor_);
625
690
  PrintNestedBuilderFunction(printer,
626
691
    "$deprecation$public Builder add$capitalized_name$(\n"
627
692
    "    int index, $type$ value)",
638
703
    "return this;\n");
639
704
 
640
705
  // Builder addRepeatedField(Field.Builder builderForValue)
 
706
  WriteFieldDocComment(printer, descriptor_);
641
707
  PrintNestedBuilderFunction(printer,
642
708
    "$deprecation$public Builder add$capitalized_name$(\n"
643
709
    "    $type$.Builder builderForValue)",
651
717
    "return this;\n");
652
718
 
653
719
  // Builder addRepeatedField(int index, Field.Builder builderForValue)
 
720
  WriteFieldDocComment(printer, descriptor_);
654
721
  PrintNestedBuilderFunction(printer,
655
722
    "$deprecation$public Builder add$capitalized_name$(\n"
656
723
    "    int index, $type$.Builder builderForValue)",
664
731
    "return this;\n");
665
732
 
666
733
  // Builder addAllRepeatedField(Iterable<Field> values)
 
734
  WriteFieldDocComment(printer, descriptor_);
667
735
  PrintNestedBuilderFunction(printer,
668
736
    "$deprecation$public Builder addAll$capitalized_name$(\n"
669
737
    "    java.lang.Iterable<? extends $type$> values)",
677
745
    "return this;\n");
678
746
 
679
747
  // Builder clearAllRepeatedField()
 
748
  WriteFieldDocComment(printer, descriptor_);
680
749
  PrintNestedBuilderFunction(printer,
681
750
    "$deprecation$public Builder clear$capitalized_name$()",
682
751
 
689
758
    "return this;\n");
690
759
 
691
760
  // Builder removeRepeatedField(int index)
 
761
  WriteFieldDocComment(printer, descriptor_);
692
762
  PrintNestedBuilderFunction(printer,
693
763
    "$deprecation$public Builder remove$capitalized_name$(int index)",
694
764
 
701
771
    "return this;\n");
702
772
 
703
773
  if (HasNestedBuilders(descriptor_->containing_type())) {
 
774
    WriteFieldDocComment(printer, descriptor_);
704
775
    printer->Print(variables_,
705
776
      "$deprecation$public $type$.Builder get$capitalized_name$Builder(\n"
706
777
      "    int index) {\n"
707
778
      "  return get$capitalized_name$FieldBuilder().getBuilder(index);\n"
708
 
      "}\n"
 
779
      "}\n");
709
780
 
 
781
    WriteFieldDocComment(printer, descriptor_);
 
782
        printer->Print(variables_,
710
783
      "$deprecation$public $type$OrBuilder get$capitalized_name$OrBuilder(\n"
711
784
      "    int index) {\n"
712
785
      "  if ($name$Builder_ == null) {\n"
714
787
      "  } else {\n"
715
788
      "    return $name$Builder_.getMessageOrBuilder(index);\n"
716
789
      "  }\n"
717
 
      "}\n"
 
790
      "}\n");
718
791
 
 
792
    WriteFieldDocComment(printer, descriptor_);
 
793
        printer->Print(variables_,
719
794
      "$deprecation$public java.util.List<? extends $type$OrBuilder> \n"
720
795
      "     get$capitalized_name$OrBuilderList() {\n"
721
796
      "  if ($name$Builder_ != null) {\n"
723
798
      "  } else {\n"
724
799
      "    return java.util.Collections.unmodifiableList($name$_);\n"
725
800
      "  }\n"
726
 
      "}\n"
 
801
      "}\n");
727
802
 
 
803
    WriteFieldDocComment(printer, descriptor_);
 
804
        printer->Print(variables_,
728
805
      "$deprecation$public $type$.Builder add$capitalized_name$Builder() {\n"
729
806
      "  return get$capitalized_name$FieldBuilder().addBuilder(\n"
730
807
      "      $type$.getDefaultInstance());\n"
731
 
      "}\n"
 
808
      "}\n");
 
809
    WriteFieldDocComment(printer, descriptor_);
 
810
        printer->Print(variables_,
732
811
      "$deprecation$public $type$.Builder add$capitalized_name$Builder(\n"
733
812
      "    int index) {\n"
734
813
      "  return get$capitalized_name$FieldBuilder().addBuilder(\n"
735
814
      "      index, $type$.getDefaultInstance());\n"
736
 
      "}\n"
 
815
      "}\n");
 
816
    WriteFieldDocComment(printer, descriptor_);
 
817
        printer->Print(variables_,
737
818
      "$deprecation$public java.util.List<$type$.Builder> \n"
738
819
      "     get$capitalized_name$BuilderList() {\n"
739
820
      "  return get$capitalized_name$FieldBuilder().getBuilderList();\n"
827
908
void RepeatedMessageFieldGenerator::
828
909
GenerateParsingCode(io::Printer* printer) const {
829
910
  printer->Print(variables_,
830
 
    "$type$.Builder subBuilder = $type$.newBuilder();\n");
 
911
    "if (!$get_mutable_bit_parser$) {\n"
 
912
    "  $name$_ = new java.util.ArrayList<$type$>();\n"
 
913
    "  $set_mutable_bit_parser$;\n"
 
914
    "}\n");
831
915
 
832
916
  if (GetType(descriptor_) == FieldDescriptor::TYPE_GROUP) {
833
917
    printer->Print(variables_,
834
 
      "input.readGroup($number$, subBuilder, extensionRegistry);\n");
 
918
      "$name$_.add(input.readGroup($number$, $type$.PARSER,\n"
 
919
      "    extensionRegistry));\n");
835
920
  } else {
836
921
    printer->Print(variables_,
837
 
      "input.readMessage(subBuilder, extensionRegistry);\n");
 
922
      "$name$_.add(input.readMessage($type$.PARSER, extensionRegistry));\n");
838
923
  }
 
924
}
839
925
 
 
926
void RepeatedMessageFieldGenerator::
 
927
GenerateParsingDoneCode(io::Printer* printer) const {
840
928
  printer->Print(variables_,
841
 
    "add$capitalized_name$(subBuilder.buildPartial());\n");
 
929
    "if ($get_mutable_bit_parser$) {\n"
 
930
    "  $name$_ = java.util.Collections.unmodifiableList($name$_);\n"
 
931
    "}\n");
842
932
}
843
933
 
844
934
void RepeatedMessageFieldGenerator::