parent
88795f64e4
commit
b1c5503022
2
BUILD
2
BUILD
@ -322,8 +322,6 @@ cc_library(
|
||||
"src/google/protobuf/compiler/java/java_generator.cc",
|
||||
"src/google/protobuf/compiler/java/java_generator_factory.cc",
|
||||
"src/google/protobuf/compiler/java/java_helpers.cc",
|
||||
"src/google/protobuf/compiler/java/java_lazy_message_field.cc",
|
||||
"src/google/protobuf/compiler/java/java_lazy_message_field_lite.cc",
|
||||
"src/google/protobuf/compiler/java/java_map_field.cc",
|
||||
"src/google/protobuf/compiler/java/java_map_field_lite.cc",
|
||||
"src/google/protobuf/compiler/java/java_message.cc",
|
||||
|
@ -44,8 +44,6 @@ set(libprotoc_files
|
||||
${protobuf_source_dir}/src/google/protobuf/compiler/java/java_generator.cc
|
||||
${protobuf_source_dir}/src/google/protobuf/compiler/java/java_generator_factory.cc
|
||||
${protobuf_source_dir}/src/google/protobuf/compiler/java/java_helpers.cc
|
||||
${protobuf_source_dir}/src/google/protobuf/compiler/java/java_lazy_message_field.cc
|
||||
${protobuf_source_dir}/src/google/protobuf/compiler/java/java_lazy_message_field_lite.cc
|
||||
${protobuf_source_dir}/src/google/protobuf/compiler/java/java_map_field.cc
|
||||
${protobuf_source_dir}/src/google/protobuf/compiler/java/java_map_field_lite.cc
|
||||
${protobuf_source_dir}/src/google/protobuf/compiler/java/java_message.cc
|
||||
@ -128,8 +126,6 @@ set(libprotoc_headers
|
||||
${protobuf_source_dir}/src/google/protobuf/compiler/java/java_file.h
|
||||
${protobuf_source_dir}/src/google/protobuf/compiler/java/java_generator_factory.h
|
||||
${protobuf_source_dir}/src/google/protobuf/compiler/java/java_helpers.h
|
||||
${protobuf_source_dir}/src/google/protobuf/compiler/java/java_lazy_message_field.h
|
||||
${protobuf_source_dir}/src/google/protobuf/compiler/java/java_lazy_message_field_lite.h
|
||||
${protobuf_source_dir}/src/google/protobuf/compiler/java/java_map_field.h
|
||||
${protobuf_source_dir}/src/google/protobuf/compiler/java/java_map_field_lite.h
|
||||
${protobuf_source_dir}/src/google/protobuf/compiler/java/java_message.h
|
||||
|
@ -367,10 +367,6 @@ libprotoc_la_SOURCES = \
|
||||
google/protobuf/compiler/java/java_generator_factory.h \
|
||||
google/protobuf/compiler/java/java_helpers.cc \
|
||||
google/protobuf/compiler/java/java_helpers.h \
|
||||
google/protobuf/compiler/java/java_lazy_message_field.cc \
|
||||
google/protobuf/compiler/java/java_lazy_message_field.h \
|
||||
google/protobuf/compiler/java/java_lazy_message_field_lite.cc\
|
||||
google/protobuf/compiler/java/java_lazy_message_field_lite.h \
|
||||
google/protobuf/compiler/java/java_map_field.cc \
|
||||
google/protobuf/compiler/java/java_map_field.h \
|
||||
google/protobuf/compiler/java/java_map_field_lite.cc \
|
||||
|
@ -1,811 +0,0 @@
|
||||
// Protocol Buffers - Google's data interchange format
|
||||
// Copyright 2008 Google Inc. All rights reserved.
|
||||
// https://developers.google.com/protocol-buffers/
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions are
|
||||
// met:
|
||||
//
|
||||
// * Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// * Redistributions in binary form must reproduce the above
|
||||
// copyright notice, this list of conditions and the following disclaimer
|
||||
// in the documentation and/or other materials provided with the
|
||||
// distribution.
|
||||
// * Neither the name of Google Inc. nor the names of its
|
||||
// contributors may be used to endorse or promote products derived from
|
||||
// this software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
// Author: niwasaki@google.com (Naoki Iwasaki)
|
||||
// Based on original Protocol Buffers design by
|
||||
// Sanjay Ghemawat, Jeff Dean, and others.
|
||||
|
||||
#include <google/protobuf/compiler/java/java_context.h>
|
||||
#include <google/protobuf/compiler/java/java_lazy_message_field.h>
|
||||
#include <google/protobuf/compiler/java/java_doc_comment.h>
|
||||
#include <google/protobuf/compiler/java/java_helpers.h>
|
||||
#include <google/protobuf/io/printer.h>
|
||||
|
||||
namespace google {
|
||||
namespace protobuf {
|
||||
namespace compiler {
|
||||
namespace java {
|
||||
|
||||
ImmutableLazyMessageFieldGenerator::
|
||||
ImmutableLazyMessageFieldGenerator(
|
||||
const FieldDescriptor* descriptor,
|
||||
int messageBitIndex,
|
||||
int builderBitIndex,
|
||||
Context* context)
|
||||
: ImmutableMessageFieldGenerator(
|
||||
descriptor, messageBitIndex, builderBitIndex, context) {
|
||||
}
|
||||
|
||||
ImmutableLazyMessageFieldGenerator::~ImmutableLazyMessageFieldGenerator() {}
|
||||
|
||||
void ImmutableLazyMessageFieldGenerator::
|
||||
GenerateMembers(io::Printer* printer) const {
|
||||
printer->Print(variables_,
|
||||
"private com.google.protobuf.LazyFieldLite $name$_ =\n"
|
||||
" new com.google.protobuf.LazyFieldLite();\n");
|
||||
|
||||
PrintExtraFieldInfo(variables_, printer);
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public boolean has$capitalized_name$() {\n"
|
||||
" return $get_has_field_bit_message$;\n"
|
||||
"}\n");
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public $type$ get$capitalized_name$() {\n"
|
||||
" return ($type$) $name$_.getValue($type$.getDefaultInstance());\n"
|
||||
"}\n");
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public $type$OrBuilder get$capitalized_name$OrBuilder() {\n"
|
||||
" return $name$_;\n"
|
||||
"}\n");
|
||||
}
|
||||
|
||||
void ImmutableLazyMessageFieldGenerator::
|
||||
GenerateBuilderMembers(io::Printer* printer) const {
|
||||
// When using nested-builders, the code initially works just like the
|
||||
// non-nested builder case. It only creates a nested builder lazily on
|
||||
// demand and then forever delegates to it after creation.
|
||||
|
||||
printer->Print(variables_,
|
||||
"private com.google.protobuf.LazyFieldLite $name$_ =\n"
|
||||
" new com.google.protobuf.LazyFieldLite();\n");
|
||||
|
||||
printer->Print(variables_,
|
||||
// If this builder is non-null, it is used and the other fields are
|
||||
// ignored.
|
||||
"private com.google.protobuf.SingleFieldBuilder$ver$<\n"
|
||||
" $type$, $type$.Builder, $type$OrBuilder> $name$Builder_;"
|
||||
"\n");
|
||||
|
||||
// The comments above the methods below are based on a hypothetical
|
||||
// field of type "Field" called "Field".
|
||||
|
||||
// boolean hasField()
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public boolean has$capitalized_name$() {\n"
|
||||
" return $get_has_field_bit_builder$;\n"
|
||||
"}\n");
|
||||
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public $type$ get$capitalized_name$() {\n"
|
||||
" return ($type$) $name$_.getValue($type$.getDefaultInstance());\n"
|
||||
"}\n");
|
||||
|
||||
// Field.Builder setField(Field value)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
PrintNestedBuilderFunction(printer,
|
||||
"$deprecation$public Builder set$capitalized_name$($type$ value)",
|
||||
|
||||
"if (value == null) {\n"
|
||||
" throw new NullPointerException();\n"
|
||||
"}\n"
|
||||
"$name$_.setValue(value);\n"
|
||||
"$on_changed$\n",
|
||||
|
||||
NULL, // Lazy fields are supported only for lite-runtime.
|
||||
|
||||
"$set_has_field_bit_builder$;\n"
|
||||
"return this;\n");
|
||||
|
||||
// Field.Builder setField(Field.Builder builderForValue)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
PrintNestedBuilderFunction(printer,
|
||||
"$deprecation$public Builder set$capitalized_name$(\n"
|
||||
" $type$.Builder builderForValue)",
|
||||
|
||||
"$name$_.setValue(builderForValue.build());\n"
|
||||
"$on_changed$\n",
|
||||
|
||||
NULL,
|
||||
|
||||
"$set_has_field_bit_builder$;\n"
|
||||
"return this;\n");
|
||||
|
||||
// Field.Builder mergeField(Field value)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
PrintNestedBuilderFunction(printer,
|
||||
"$deprecation$public Builder merge$capitalized_name$($type$ value)",
|
||||
|
||||
"if ($get_has_field_bit_builder$ &&\n"
|
||||
" !$name$_.containsDefaultInstance()) {\n"
|
||||
" $name$_.setValue(\n"
|
||||
" $type$.newBuilder(\n"
|
||||
" get$capitalized_name$()).mergeFrom(value).buildPartial());\n"
|
||||
"} else {\n"
|
||||
" $name$_.setValue(value);\n"
|
||||
"}\n"
|
||||
"$on_changed$\n",
|
||||
|
||||
NULL,
|
||||
|
||||
"$set_has_field_bit_builder$;\n"
|
||||
"return this;\n");
|
||||
|
||||
// Field.Builder clearField()
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
PrintNestedBuilderFunction(printer,
|
||||
"$deprecation$public Builder clear$capitalized_name$()",
|
||||
|
||||
"$name$_.clear();\n"
|
||||
"$on_changed$\n",
|
||||
|
||||
NULL,
|
||||
|
||||
"$clear_has_field_bit_builder$;\n"
|
||||
"return this;\n");
|
||||
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public $type$.Builder get$capitalized_name$Builder() {\n"
|
||||
" $set_has_field_bit_builder$;\n"
|
||||
" $on_changed$\n"
|
||||
" return get$capitalized_name$FieldBuilder().getBuilder();\n"
|
||||
"}\n");
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public $type$OrBuilder get$capitalized_name$OrBuilder() {\n"
|
||||
" if ($name$Builder_ != null) {\n"
|
||||
" return $name$Builder_.getMessageOrBuilder();\n"
|
||||
" } else {\n"
|
||||
" return $name$_;\n"
|
||||
" }\n"
|
||||
"}\n");
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"private com.google.protobuf.SingleFieldBuilder$ver$<\n"
|
||||
" $type$, $type$.Builder, $type$OrBuilder> \n"
|
||||
" get$capitalized_name$FieldBuilder() {\n"
|
||||
" if ($name$Builder_ == null) {\n"
|
||||
" $name$Builder_ = new com.google.protobuf.SingleFieldBuilder$ver$<\n"
|
||||
" $type$, $type$.Builder, $type$OrBuilder>(\n"
|
||||
" $name$_,\n"
|
||||
" getParentForChildren(),\n"
|
||||
" isClean());\n"
|
||||
" $name$_ = null;\n"
|
||||
" }\n"
|
||||
" return $name$Builder_;\n"
|
||||
"}\n");
|
||||
}
|
||||
|
||||
|
||||
void ImmutableLazyMessageFieldGenerator::
|
||||
GenerateInitializationCode(io::Printer* printer) const {
|
||||
printer->Print(variables_, "$name$_.clear();\n");
|
||||
}
|
||||
|
||||
void ImmutableLazyMessageFieldGenerator::
|
||||
GenerateBuilderClearCode(io::Printer* printer) const {
|
||||
printer->Print(variables_, "$name$_.clear();\n");
|
||||
printer->Print(variables_, "$clear_has_field_bit_builder$;\n");
|
||||
}
|
||||
|
||||
void ImmutableLazyMessageFieldGenerator::
|
||||
GenerateMergingCode(io::Printer* printer) const {
|
||||
printer->Print(variables_,
|
||||
"if (other.has$capitalized_name$()) {\n"
|
||||
" $name$_.merge(other.$name$_);\n"
|
||||
" $set_has_field_bit_builder$;\n"
|
||||
"}\n");
|
||||
}
|
||||
|
||||
void ImmutableLazyMessageFieldGenerator::
|
||||
GenerateBuildingCode(io::Printer* printer) const {
|
||||
printer->Print(variables_,
|
||||
"if ($get_has_field_bit_from_local$) {\n"
|
||||
" result.$name$_.set($name$_);\n"
|
||||
" $set_has_field_bit_to_local$;\n"
|
||||
"}\n");
|
||||
}
|
||||
|
||||
void ImmutableLazyMessageFieldGenerator::
|
||||
GenerateParsingCode(io::Printer* printer) const {
|
||||
printer->Print(variables_,
|
||||
"$name$_.setByteString(input.readBytes(), extensionRegistry);\n");
|
||||
printer->Print(variables_,
|
||||
"$set_has_field_bit_message$;\n");
|
||||
}
|
||||
|
||||
void ImmutableLazyMessageFieldGenerator::
|
||||
GenerateSerializationCode(io::Printer* printer) const {
|
||||
// Do not de-serialize lazy fields.
|
||||
printer->Print(variables_,
|
||||
"if ($get_has_field_bit_message$) {\n"
|
||||
" output.writeBytes($number$, $name$_.toByteString());\n"
|
||||
"}\n");
|
||||
}
|
||||
|
||||
void ImmutableLazyMessageFieldGenerator::
|
||||
GenerateSerializedSizeCode(io::Printer* printer) const {
|
||||
printer->Print(variables_,
|
||||
"if ($get_has_field_bit_message$) {\n"
|
||||
" size += com.google.protobuf.CodedOutputStream\n"
|
||||
" .computeLazyFieldSize($number$, $name$_);\n"
|
||||
"}\n");
|
||||
}
|
||||
|
||||
// ===================================================================
|
||||
|
||||
ImmutableLazyMessageOneofFieldGenerator::
|
||||
ImmutableLazyMessageOneofFieldGenerator(const FieldDescriptor* descriptor,
|
||||
int messageBitIndex,
|
||||
int builderBitIndex,
|
||||
Context* context)
|
||||
: ImmutableLazyMessageFieldGenerator(
|
||||
descriptor, messageBitIndex, builderBitIndex, context) {
|
||||
const OneofGeneratorInfo* info =
|
||||
context->GetOneofGeneratorInfo(descriptor->containing_oneof());
|
||||
SetCommonOneofVariables(descriptor, info, &variables_);
|
||||
variables_["lazy_type"] = "com.google.protobuf.LazyFieldLite";
|
||||
}
|
||||
|
||||
ImmutableLazyMessageOneofFieldGenerator::
|
||||
~ImmutableLazyMessageOneofFieldGenerator() {}
|
||||
|
||||
void ImmutableLazyMessageOneofFieldGenerator::
|
||||
GenerateMembers(io::Printer* printer) const {
|
||||
PrintExtraFieldInfo(variables_, printer);
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public boolean has$capitalized_name$() {\n"
|
||||
" return $has_oneof_case_message$;\n"
|
||||
"}\n");
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public $type$ get$capitalized_name$() {\n"
|
||||
" if ($has_oneof_case_message$) {\n"
|
||||
" return ($type$) (($lazy_type$) $oneof_name$_).getValue(\n"
|
||||
" $type$.getDefaultInstance());\n"
|
||||
" }\n"
|
||||
" return $type$.getDefaultInstance();\n"
|
||||
"}\n");
|
||||
}
|
||||
|
||||
void ImmutableLazyMessageOneofFieldGenerator::
|
||||
GenerateBuilderMembers(io::Printer* printer) const {
|
||||
// boolean hasField()
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public boolean has$capitalized_name$() {\n"
|
||||
" return $has_oneof_case_message$;\n"
|
||||
"}\n");
|
||||
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public $type$ get$capitalized_name$() {\n"
|
||||
" if ($has_oneof_case_message$) {\n"
|
||||
" return ($type$) (($lazy_type$) $oneof_name$_).getValue(\n"
|
||||
" $type$.getDefaultInstance());\n"
|
||||
" }\n"
|
||||
" return $type$.getDefaultInstance();\n"
|
||||
"}\n");
|
||||
|
||||
// Field.Builder setField(Field value)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
PrintNestedBuilderFunction(printer,
|
||||
"$deprecation$public Builder set$capitalized_name$($type$ value)",
|
||||
|
||||
"if (value == null) {\n"
|
||||
" throw new NullPointerException();\n"
|
||||
"}\n"
|
||||
"if (!($has_oneof_case_message$)) {\n"
|
||||
" $oneof_name$_ = new $lazy_type$();\n"
|
||||
" $set_oneof_case_message$;\n"
|
||||
"}\n"
|
||||
"(($lazy_type$) $oneof_name$_).setValue(value);\n"
|
||||
"$on_changed$\n",
|
||||
|
||||
NULL, // Lazy fields are supported only for lite-runtime.
|
||||
|
||||
"return this;\n");
|
||||
|
||||
// Field.Builder setField(Field.Builder builderForValue)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
PrintNestedBuilderFunction(printer,
|
||||
"$deprecation$public Builder set$capitalized_name$(\n"
|
||||
" $type$.Builder builderForValue)",
|
||||
|
||||
"if (!($has_oneof_case_message$)) {\n"
|
||||
" $oneof_name$_ = new $lazy_type$();\n"
|
||||
" $set_oneof_case_message$;\n"
|
||||
"}\n"
|
||||
"(($lazy_type$) $oneof_name$_).setValue(builderForValue.build());\n"
|
||||
"$on_changed$\n",
|
||||
|
||||
NULL,
|
||||
|
||||
"return this;\n");
|
||||
|
||||
// Field.Builder mergeField(Field value)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
PrintNestedBuilderFunction(printer,
|
||||
"$deprecation$public Builder merge$capitalized_name$($type$ value)",
|
||||
|
||||
"if ($has_oneof_case_message$ &&\n"
|
||||
" !(($lazy_type$) $oneof_name$_).containsDefaultInstance()) {\n"
|
||||
" (($lazy_type$) $oneof_name$_).setValue(\n"
|
||||
" $type$.newBuilder(\n"
|
||||
" get$capitalized_name$()).mergeFrom(value).buildPartial());\n"
|
||||
"} else {\n"
|
||||
" if (!($has_oneof_case_message$)) {\n"
|
||||
" $oneof_name$_ = new $lazy_type$();\n"
|
||||
" $set_oneof_case_message$;\n"
|
||||
" }\n"
|
||||
" (($lazy_type$) $oneof_name$_).setValue(value);\n"
|
||||
"}\n"
|
||||
"$on_changed$\n",
|
||||
|
||||
NULL,
|
||||
|
||||
"return this;\n");
|
||||
|
||||
// Field.Builder clearField()
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
PrintNestedBuilderFunction(printer,
|
||||
"$deprecation$public Builder clear$capitalized_name$()",
|
||||
|
||||
"if ($has_oneof_case_message$) {\n"
|
||||
" $clear_oneof_case_message$;\n"
|
||||
" $oneof_name$_ = null;\n"
|
||||
" $on_changed$\n"
|
||||
"}\n",
|
||||
|
||||
NULL,
|
||||
|
||||
"return this;\n");
|
||||
}
|
||||
|
||||
void ImmutableLazyMessageOneofFieldGenerator::
|
||||
GenerateMergingCode(io::Printer* printer) const {
|
||||
printer->Print(variables_,
|
||||
"if (!($has_oneof_case_message$)) {\n"
|
||||
" $oneof_name$_ = new $lazy_type$();\n"
|
||||
"}\n"
|
||||
"(($lazy_type$) $oneof_name$_).merge(\n"
|
||||
" ($lazy_type$) other.$oneof_name$_);\n"
|
||||
"$set_oneof_case_message$;\n");
|
||||
}
|
||||
|
||||
void ImmutableLazyMessageOneofFieldGenerator::
|
||||
GenerateBuildingCode(io::Printer* printer) const {
|
||||
printer->Print(variables_,
|
||||
"if ($has_oneof_case_message$) {\n");
|
||||
printer->Indent();
|
||||
|
||||
printer->Print(variables_,
|
||||
"result.$oneof_name$_ = new $lazy_type$();\n"
|
||||
"(($lazy_type$) result.$oneof_name$_).set(\n"
|
||||
" (($lazy_type$) $oneof_name$_));\n");
|
||||
printer->Outdent();
|
||||
printer->Print("}\n");
|
||||
}
|
||||
|
||||
void ImmutableLazyMessageOneofFieldGenerator::
|
||||
GenerateParsingCode(io::Printer* printer) const {
|
||||
printer->Print(variables_,
|
||||
"if (!($has_oneof_case_message$)) {\n"
|
||||
" $oneof_name$_ = new $lazy_type$();\n"
|
||||
"}\n"
|
||||
"(($lazy_type$) $oneof_name$_).setByteString(\n"
|
||||
" input.readBytes(), extensionRegistry);\n"
|
||||
"$set_oneof_case_message$;\n");
|
||||
}
|
||||
|
||||
void ImmutableLazyMessageOneofFieldGenerator::
|
||||
GenerateSerializationCode(io::Printer* printer) const {
|
||||
// Do not de-serialize lazy fields.
|
||||
printer->Print(variables_,
|
||||
"if ($has_oneof_case_message$) {\n"
|
||||
" output.writeBytes(\n"
|
||||
" $number$, (($lazy_type$) $oneof_name$_).toByteString());\n"
|
||||
"}\n");
|
||||
}
|
||||
|
||||
void ImmutableLazyMessageOneofFieldGenerator::
|
||||
GenerateSerializedSizeCode(io::Printer* printer) const {
|
||||
printer->Print(variables_,
|
||||
"if ($has_oneof_case_message$) {\n"
|
||||
" size += com.google.protobuf.CodedOutputStream\n"
|
||||
" .computeLazyFieldSize($number$, ($lazy_type$) $oneof_name$_);\n"
|
||||
"}\n");
|
||||
}
|
||||
|
||||
// ===================================================================
|
||||
|
||||
RepeatedImmutableLazyMessageFieldGenerator::
|
||||
RepeatedImmutableLazyMessageFieldGenerator(
|
||||
const FieldDescriptor* descriptor,
|
||||
int messageBitIndex,
|
||||
int builderBitIndex,
|
||||
Context* context)
|
||||
: RepeatedImmutableMessageFieldGenerator(
|
||||
descriptor, messageBitIndex, builderBitIndex, context) {
|
||||
}
|
||||
|
||||
|
||||
RepeatedImmutableLazyMessageFieldGenerator::
|
||||
~RepeatedImmutableLazyMessageFieldGenerator() {}
|
||||
|
||||
void RepeatedImmutableLazyMessageFieldGenerator::
|
||||
GenerateMembers(io::Printer* printer) const {
|
||||
printer->Print(variables_,
|
||||
"private java.util.List<com.google.protobuf.LazyFieldLite> $name$_;\n");
|
||||
PrintExtraFieldInfo(variables_, printer);
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public java.util.List<$type$>\n"
|
||||
" get$capitalized_name$List() {\n"
|
||||
" java.util.List<$type$> list =\n"
|
||||
" new java.util.ArrayList<$type$>($name$_.size());\n"
|
||||
" for (com.google.protobuf.LazyFieldLite lf : $name$_) {\n"
|
||||
" list.add(($type$) lf.getValue($type$.getDefaultInstance()));\n"
|
||||
" }\n"
|
||||
" return list;\n"
|
||||
"}\n");
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public java.util.List<? extends $type$OrBuilder>\n"
|
||||
" get$capitalized_name$OrBuilderList() {\n"
|
||||
" return get$capitalized_name$List();\n"
|
||||
"}\n");
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public int get$capitalized_name$Count() {\n"
|
||||
" return $name$_.size();\n"
|
||||
"}\n");
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public $type$ get$capitalized_name$(int index) {\n"
|
||||
" return ($type$)\n"
|
||||
" $name$_.get(index).getValue($type$.getDefaultInstance());\n"
|
||||
"}\n");
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public $type$OrBuilder get$capitalized_name$OrBuilder(\n"
|
||||
" int index) {\n"
|
||||
" return ($type$OrBuilder)\n"
|
||||
" $name$_.get(index).getValue($type$.getDefaultInstance());\n"
|
||||
"}\n");
|
||||
}
|
||||
|
||||
void RepeatedImmutableLazyMessageFieldGenerator::
|
||||
GenerateBuilderMembers(io::Printer* printer) const {
|
||||
// When using nested-builders, the code initially works just like the
|
||||
// non-nested builder case. It only creates a nested builder lazily on
|
||||
// demand and then forever delegates to it after creation.
|
||||
|
||||
printer->Print(variables_,
|
||||
"private java.util.List<com.google.protobuf.LazyFieldLite> $name$_ =\n"
|
||||
" java.util.Collections.emptyList();\n"
|
||||
|
||||
"private void ensure$capitalized_name$IsMutable() {\n"
|
||||
" if (!$get_mutable_bit_builder$) {\n"
|
||||
" $name$_ =\n"
|
||||
" new java.util.ArrayList<com.google.protobuf.LazyFieldLite>(\n"
|
||||
" $name$_);\n"
|
||||
" $set_mutable_bit_builder$;\n"
|
||||
" }\n"
|
||||
"}\n"
|
||||
"\n");
|
||||
|
||||
printer->Print(variables_,
|
||||
// If this builder is non-null, it is used and the other fields are
|
||||
// ignored.
|
||||
"private com.google.protobuf.RepeatedFieldBuilder$ver$<\n"
|
||||
" $type$, $type$.Builder, $type$OrBuilder> $name$Builder_;\n"
|
||||
"\n");
|
||||
|
||||
// The comments above the methods below are based on a hypothetical
|
||||
// repeated field of type "Field" called "RepeatedField".
|
||||
|
||||
// List<Field> getRepeatedFieldList()
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
PrintNestedBuilderFunction(printer,
|
||||
"$deprecation$public java.util.List<$type$> get$capitalized_name$List()",
|
||||
|
||||
"java.util.List<$type$> list =\n"
|
||||
" new java.util.ArrayList<$type$>($name$_.size());\n"
|
||||
"for (com.google.protobuf.LazyFieldLite lf : $name$_) {\n"
|
||||
" list.add(($type$) lf.getValue($type$.getDefaultInstance()));\n"
|
||||
"}\n"
|
||||
"return java.util.Collections.unmodifiableList(list);\n",
|
||||
|
||||
"return $name$Builder_.getMessageList();\n",
|
||||
|
||||
NULL);
|
||||
|
||||
// int getRepeatedFieldCount()
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
PrintNestedBuilderFunction(printer,
|
||||
"$deprecation$public int get$capitalized_name$Count()",
|
||||
|
||||
"return $name$_.size();\n",
|
||||
"return $name$Builder_.getCount();\n",
|
||||
|
||||
NULL);
|
||||
|
||||
// Field getRepeatedField(int index)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
PrintNestedBuilderFunction(printer,
|
||||
"$deprecation$public $type$ get$capitalized_name$(int index)",
|
||||
|
||||
"return ($type$) $name$_.get(index).getValue(\n"
|
||||
" $type$.getDefaultInstance());\n",
|
||||
|
||||
"return $name$Builder_.getMessage(index);\n",
|
||||
|
||||
NULL);
|
||||
|
||||
// Builder setRepeatedField(int index, Field value)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
PrintNestedBuilderFunction(printer,
|
||||
"$deprecation$public Builder set$capitalized_name$(\n"
|
||||
" int index, $type$ value)",
|
||||
"if (value == null) {\n"
|
||||
" throw new NullPointerException();\n"
|
||||
"}\n"
|
||||
"ensure$capitalized_name$IsMutable();\n"
|
||||
"$name$_.set(index, com.google.protobuf.LazyFieldLite.fromValue(value));\n"
|
||||
"$on_changed$\n",
|
||||
"$name$Builder_.setMessage(index, value);\n",
|
||||
"return this;\n");
|
||||
|
||||
// Builder setRepeatedField(int index, Field.Builder builderForValue)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
PrintNestedBuilderFunction(printer,
|
||||
"$deprecation$public Builder set$capitalized_name$(\n"
|
||||
" int index, $type$.Builder builderForValue)",
|
||||
|
||||
"ensure$capitalized_name$IsMutable();\n"
|
||||
"$name$_.set(index, com.google.protobuf.LazyFieldLite.fromValue(\n"
|
||||
" builderForValue.build()));\n"
|
||||
"$on_changed$\n",
|
||||
|
||||
"$name$Builder_.setMessage(index, builderForValue.build());\n",
|
||||
|
||||
"return this;\n");
|
||||
|
||||
// Builder addRepeatedField(Field value)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
PrintNestedBuilderFunction(printer,
|
||||
"$deprecation$public Builder add$capitalized_name$($type$ value)",
|
||||
|
||||
"if (value == null) {\n"
|
||||
" throw new NullPointerException();\n"
|
||||
"}\n"
|
||||
"ensure$capitalized_name$IsMutable();\n"
|
||||
"$name$_.add(com.google.protobuf.LazyFieldLite.fromValue(value));\n"
|
||||
|
||||
"$on_changed$\n",
|
||||
|
||||
"$name$Builder_.addMessage(value);\n",
|
||||
|
||||
"return this;\n");
|
||||
|
||||
// Builder addRepeatedField(int index, Field value)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
PrintNestedBuilderFunction(printer,
|
||||
"$deprecation$public Builder add$capitalized_name$(\n"
|
||||
" int index, $type$ value)",
|
||||
|
||||
"if (value == null) {\n"
|
||||
" throw new NullPointerException();\n"
|
||||
"}\n"
|
||||
"ensure$capitalized_name$IsMutable();\n"
|
||||
"$name$_.add(index, com.google.protobuf.LazyFieldLite.fromValue(value));\n"
|
||||
"$on_changed$\n",
|
||||
|
||||
"$name$Builder_.addMessage(index, value);\n",
|
||||
|
||||
"return this;\n");
|
||||
|
||||
// Builder addRepeatedField(Field.Builder builderForValue)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
PrintNestedBuilderFunction(printer,
|
||||
"$deprecation$public Builder add$capitalized_name$(\n"
|
||||
" $type$.Builder builderForValue)",
|
||||
|
||||
"ensure$capitalized_name$IsMutable();\n"
|
||||
"$name$_.add(com.google.protobuf.LazyFieldLite.fromValue(\n"
|
||||
" builderForValue.build()));\n"
|
||||
"$on_changed$\n",
|
||||
|
||||
"$name$Builder_.addMessage(builderForValue.build());\n",
|
||||
|
||||
"return this;\n");
|
||||
|
||||
// Builder addRepeatedField(int index, Field.Builder builderForValue)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
PrintNestedBuilderFunction(printer,
|
||||
"$deprecation$public Builder add$capitalized_name$(\n"
|
||||
" int index, $type$.Builder builderForValue)",
|
||||
|
||||
"ensure$capitalized_name$IsMutable();\n"
|
||||
"$name$_.add(index, com.google.protobuf.LazyFieldLite.fromValue(\n"
|
||||
" builderForValue.build()));\n"
|
||||
"$on_changed$\n",
|
||||
|
||||
"$name$Builder_.addMessage(index, builderForValue.build());\n",
|
||||
|
||||
"return this;\n");
|
||||
|
||||
// Builder addAllRepeatedField(Iterable<Field> values)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
PrintNestedBuilderFunction(printer,
|
||||
"$deprecation$public Builder addAll$capitalized_name$(\n"
|
||||
" java.lang.Iterable<? extends $type$> values)",
|
||||
|
||||
"ensure$capitalized_name$IsMutable();\n"
|
||||
"for (com.google.protobuf.MessageLite v : values) {\n"
|
||||
" $name$_.add(com.google.protobuf.LazyFieldLite.fromValue(v));\n"
|
||||
"}\n"
|
||||
"$on_changed$\n",
|
||||
|
||||
"$name$Builder_.addAllMessages(values);\n",
|
||||
|
||||
"return this;\n");
|
||||
|
||||
// Builder clearAllRepeatedField()
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
PrintNestedBuilderFunction(printer,
|
||||
"$deprecation$public Builder clear$capitalized_name$()",
|
||||
|
||||
"$name$_ = java.util.Collections.emptyList();\n"
|
||||
"$clear_mutable_bit_builder$;\n"
|
||||
"$on_changed$\n",
|
||||
|
||||
"$name$Builder_.clear();\n",
|
||||
|
||||
"return this;\n");
|
||||
|
||||
// Builder removeRepeatedField(int index)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
PrintNestedBuilderFunction(printer,
|
||||
"$deprecation$public Builder remove$capitalized_name$(int index)",
|
||||
|
||||
"ensure$capitalized_name$IsMutable();\n"
|
||||
"$name$_.remove(index);\n"
|
||||
"$on_changed$\n",
|
||||
|
||||
"$name$Builder_.remove(index);\n",
|
||||
|
||||
"return this;\n");
|
||||
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public $type$.Builder get$capitalized_name$Builder(\n"
|
||||
" int index) {\n"
|
||||
" return get$capitalized_name$FieldBuilder().getBuilder(index);\n"
|
||||
"}\n");
|
||||
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public $type$OrBuilder get$capitalized_name$OrBuilder(\n"
|
||||
" int index) {\n"
|
||||
" if ($name$Builder_ == null) {\n"
|
||||
" return $name$_.get(index);"
|
||||
" } else {\n"
|
||||
" return $name$Builder_.getMessageOrBuilder(index);\n"
|
||||
" }\n"
|
||||
"}\n");
|
||||
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public java.util.List<? extends $type$OrBuilder> \n"
|
||||
" get$capitalized_name$OrBuilderList() {\n"
|
||||
" if ($name$Builder_ != null) {\n"
|
||||
" return $name$Builder_.getMessageOrBuilderList();\n"
|
||||
" } else {\n"
|
||||
" return java.util.Collections.unmodifiableList($name$_);\n"
|
||||
" }\n"
|
||||
"}\n");
|
||||
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public $type$.Builder add$capitalized_name$Builder() {\n"
|
||||
" return get$capitalized_name$FieldBuilder().addBuilder(\n"
|
||||
" $type$.getDefaultInstance());\n"
|
||||
"}\n");
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public $type$.Builder add$capitalized_name$Builder(\n"
|
||||
" int index) {\n"
|
||||
" return get$capitalized_name$FieldBuilder().addBuilder(\n"
|
||||
" index, $type$.getDefaultInstance());\n"
|
||||
"}\n");
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public java.util.List<$type$.Builder> \n"
|
||||
" get$capitalized_name$BuilderList() {\n"
|
||||
" return get$capitalized_name$FieldBuilder().getBuilderList();\n"
|
||||
"}\n"
|
||||
"private com.google.protobuf.RepeatedFieldBuilder$ver$<\n"
|
||||
" $type$, $type$.Builder, $type$OrBuilder> \n"
|
||||
" get$capitalized_name$FieldBuilder() {\n"
|
||||
" if ($name$Builder_ == null) {\n"
|
||||
" $name$Builder_ = new com.google.protobuf.RepeatedFieldBuilder$ver$<\n"
|
||||
" $type$, $type$.Builder, $type$OrBuilder>(\n"
|
||||
" $name$_,\n"
|
||||
" $get_mutable_bit_builder$,\n"
|
||||
" getParentForChildren(),\n"
|
||||
" isClean());\n"
|
||||
" $name$_ = null;\n"
|
||||
" }\n"
|
||||
" return $name$Builder_;\n"
|
||||
"}\n");
|
||||
}
|
||||
|
||||
void RepeatedImmutableLazyMessageFieldGenerator::
|
||||
GenerateParsingCode(io::Printer* printer) const {
|
||||
printer->Print(variables_,
|
||||
"if (!$get_mutable_bit_parser$) {\n"
|
||||
" $name$_ =\n"
|
||||
" new java.util.ArrayList<com.google.protobuf.LazyFieldLite>();\n"
|
||||
" $set_mutable_bit_parser$;\n"
|
||||
"}\n"
|
||||
"$name$_.add(new com.google.protobuf.LazyFieldLite(\n"
|
||||
" extensionRegistry, input.readBytes()));\n");
|
||||
}
|
||||
|
||||
void RepeatedImmutableLazyMessageFieldGenerator::
|
||||
GenerateSerializationCode(io::Printer* printer) const {
|
||||
printer->Print(variables_,
|
||||
"for (int i = 0; i < $name$_.size(); i++) {\n"
|
||||
" output.writeBytes($number$, $name$_.get(i).toByteString());\n"
|
||||
"}\n");
|
||||
}
|
||||
|
||||
void RepeatedImmutableLazyMessageFieldGenerator::
|
||||
GenerateSerializedSizeCode(io::Printer* printer) const {
|
||||
printer->Print(variables_,
|
||||
"for (int i = 0; i < $name$_.size(); i++) {\n"
|
||||
" size += com.google.protobuf.CodedOutputStream\n"
|
||||
" .computeLazyFieldSize($number$, $name$_.get(i));\n"
|
||||
"}\n");
|
||||
}
|
||||
|
||||
} // namespace java
|
||||
} // namespace compiler
|
||||
} // namespace protobuf
|
||||
} // namespace google
|
@ -1,121 +0,0 @@
|
||||
// Protocol Buffers - Google's data interchange format
|
||||
// Copyright 2008 Google Inc. All rights reserved.
|
||||
// https://developers.google.com/protocol-buffers/
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions are
|
||||
// met:
|
||||
//
|
||||
// * Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// * Redistributions in binary form must reproduce the above
|
||||
// copyright notice, this list of conditions and the following disclaimer
|
||||
// in the documentation and/or other materials provided with the
|
||||
// distribution.
|
||||
// * Neither the name of Google Inc. nor the names of its
|
||||
// contributors may be used to endorse or promote products derived from
|
||||
// this software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
// Author: niwasaki@google.com (Naoki Iwasaki)
|
||||
// Based on original Protocol Buffers design by
|
||||
// Sanjay Ghemawat, Jeff Dean, and others.
|
||||
|
||||
#ifndef GOOGLE_PROTOBUF_COMPILER_JAVA_LAZY_MESSAGE_FIELD_H__
|
||||
#define GOOGLE_PROTOBUF_COMPILER_JAVA_LAZY_MESSAGE_FIELD_H__
|
||||
|
||||
#include <google/protobuf/compiler/java/java_field.h>
|
||||
#include <google/protobuf/compiler/java/java_message_field.h>
|
||||
|
||||
namespace google {
|
||||
namespace protobuf {
|
||||
namespace compiler {
|
||||
namespace java {
|
||||
class Context; // context.h
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
namespace protobuf {
|
||||
namespace compiler {
|
||||
namespace java {
|
||||
|
||||
class ImmutableLazyMessageFieldGenerator
|
||||
: public ImmutableMessageFieldGenerator {
|
||||
public:
|
||||
explicit ImmutableLazyMessageFieldGenerator(
|
||||
const FieldDescriptor* descriptor, int messageBitIndex,
|
||||
int builderBitIndex, Context* context);
|
||||
~ImmutableLazyMessageFieldGenerator();
|
||||
|
||||
// overroads ImmutableMessageFieldGenerator ---------------------------------
|
||||
void GenerateMembers(io::Printer* printer) const;
|
||||
void GenerateBuilderMembers(io::Printer* printer) const;
|
||||
void GenerateInitializationCode(io::Printer* printer) const;
|
||||
void GenerateBuilderClearCode(io::Printer* printer) const;
|
||||
void GenerateMergingCode(io::Printer* printer) const;
|
||||
void GenerateBuildingCode(io::Printer* printer) const;
|
||||
void GenerateParsingCode(io::Printer* printer) const;
|
||||
void GenerateSerializationCode(io::Printer* printer) const;
|
||||
void GenerateSerializedSizeCode(io::Printer* printer) const;
|
||||
|
||||
private:
|
||||
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ImmutableLazyMessageFieldGenerator);
|
||||
};
|
||||
|
||||
class ImmutableLazyMessageOneofFieldGenerator
|
||||
: public ImmutableLazyMessageFieldGenerator {
|
||||
public:
|
||||
ImmutableLazyMessageOneofFieldGenerator(
|
||||
const FieldDescriptor* descriptor, int messageBitIndex,
|
||||
int builderBitIndex, Context* context);
|
||||
~ImmutableLazyMessageOneofFieldGenerator();
|
||||
|
||||
void GenerateMembers(io::Printer* printer) const;
|
||||
void GenerateBuilderMembers(io::Printer* printer) const;
|
||||
void GenerateMergingCode(io::Printer* printer) const;
|
||||
void GenerateBuildingCode(io::Printer* printer) const;
|
||||
void GenerateParsingCode(io::Printer* printer) const;
|
||||
void GenerateSerializationCode(io::Printer* printer) const;
|
||||
void GenerateSerializedSizeCode(io::Printer* printer) const;
|
||||
|
||||
private:
|
||||
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ImmutableLazyMessageOneofFieldGenerator);
|
||||
};
|
||||
|
||||
class RepeatedImmutableLazyMessageFieldGenerator
|
||||
: public RepeatedImmutableMessageFieldGenerator {
|
||||
public:
|
||||
explicit RepeatedImmutableLazyMessageFieldGenerator(
|
||||
const FieldDescriptor* descriptor, int messageBitIndex,
|
||||
int builderBitIndex, Context* context);
|
||||
~RepeatedImmutableLazyMessageFieldGenerator();
|
||||
|
||||
// overroads RepeatedImmutableMessageFieldGenerator -------------------------
|
||||
void GenerateMembers(io::Printer* printer) const;
|
||||
void GenerateBuilderMembers(io::Printer* printer) const;
|
||||
void GenerateParsingCode(io::Printer* printer) const;
|
||||
void GenerateSerializationCode(io::Printer* printer) const;
|
||||
void GenerateSerializedSizeCode(io::Printer* printer) const;
|
||||
|
||||
private:
|
||||
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(RepeatedImmutableLazyMessageFieldGenerator);
|
||||
};
|
||||
|
||||
} // namespace java
|
||||
} // namespace compiler
|
||||
} // namespace protobuf
|
||||
|
||||
} // namespace google
|
||||
#endif // GOOGLE_PROTOBUF_COMPILER_JAVA_LAZY_MESSAGE_FIELD_H__
|
@ -1,725 +0,0 @@
|
||||
// Protocol Buffers - Google's data interchange format
|
||||
// Copyright 2008 Google Inc. All rights reserved.
|
||||
// https://developers.google.com/protocol-buffers/
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions are
|
||||
// met:
|
||||
//
|
||||
// * Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// * Redistributions in binary form must reproduce the above
|
||||
// copyright notice, this list of conditions and the following disclaimer
|
||||
// in the documentation and/or other materials provided with the
|
||||
// distribution.
|
||||
// * Neither the name of Google Inc. nor the names of its
|
||||
// contributors may be used to endorse or promote products derived from
|
||||
// this software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
// Author: niwasaki@google.com (Naoki Iwasaki)
|
||||
// Based on original Protocol Buffers design by
|
||||
// Sanjay Ghemawat, Jeff Dean, and others.
|
||||
|
||||
#include <google/protobuf/compiler/java/java_context.h>
|
||||
#include <google/protobuf/compiler/java/java_lazy_message_field_lite.h>
|
||||
#include <google/protobuf/compiler/java/java_doc_comment.h>
|
||||
#include <google/protobuf/compiler/java/java_helpers.h>
|
||||
#include <google/protobuf/io/printer.h>
|
||||
|
||||
namespace google {
|
||||
namespace protobuf {
|
||||
namespace compiler {
|
||||
namespace java {
|
||||
|
||||
ImmutableLazyMessageFieldLiteGenerator::
|
||||
ImmutableLazyMessageFieldLiteGenerator(
|
||||
const FieldDescriptor* descriptor,
|
||||
int messageBitIndex,
|
||||
int builderBitIndex,
|
||||
Context* context)
|
||||
: ImmutableMessageFieldLiteGenerator(
|
||||
descriptor, messageBitIndex, builderBitIndex, context) {
|
||||
}
|
||||
|
||||
ImmutableLazyMessageFieldLiteGenerator::
|
||||
~ImmutableLazyMessageFieldLiteGenerator() {}
|
||||
|
||||
void ImmutableLazyMessageFieldLiteGenerator::
|
||||
GenerateMembers(io::Printer* printer) const {
|
||||
printer->Print(variables_,
|
||||
"private com.google.protobuf.LazyFieldLite $name$_;");
|
||||
|
||||
PrintExtraFieldInfo(variables_, printer);
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
if (SupportFieldPresence(descriptor_->file())) {
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public boolean has$capitalized_name$() {\n"
|
||||
" return $get_has_field_bit_message$;\n"
|
||||
"}\n");
|
||||
} else {
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public boolean has$capitalized_name$() {\n"
|
||||
" return $name$_ != null;\n"
|
||||
"}\n");
|
||||
}
|
||||
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public $type$ get$capitalized_name$() {\n"
|
||||
" if ($name$_ == null) {\n"
|
||||
" return $type$.getDefaultInstance();\n"
|
||||
" }\n"
|
||||
" return ($type$) $name$_.getValue($type$.getDefaultInstance());\n"
|
||||
"}\n");
|
||||
|
||||
// Field.Builder setField(Field value)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"private void set$capitalized_name$($type$ value) {\n"
|
||||
" if (value == null) {\n"
|
||||
" throw new NullPointerException();\n"
|
||||
" }\n"
|
||||
" if ($name$_ == null) {\n"
|
||||
" $name$_ = new com.google.protobuf.LazyFieldLite();\n"
|
||||
" }\n"
|
||||
" $name$_.setValue(value);\n"
|
||||
" $set_has_field_bit_message$\n"
|
||||
"}\n");
|
||||
|
||||
// Field.Builder setField(Field.Builder builderForValue)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"private void set$capitalized_name$(\n"
|
||||
" $type$.Builder builderForValue) {\n"
|
||||
" if ($name$_ == null) {\n"
|
||||
" $name$_ = new com.google.protobuf.LazyFieldLite();\n"
|
||||
" }\n"
|
||||
" $name$_.setValue(builderForValue.build());\n"
|
||||
" $set_has_field_bit_message$\n"
|
||||
"}\n");
|
||||
|
||||
// Field.Builder mergeField(Field value)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"private void merge$capitalized_name$($type$ value) {\n"
|
||||
" if (has$capitalized_name$() &&\n"
|
||||
" !$name$_.containsDefaultInstance()) {\n"
|
||||
" $name$_.setValue(\n"
|
||||
" $type$.newBuilder(\n"
|
||||
" get$capitalized_name$()).mergeFrom(value).buildPartial());\n"
|
||||
" } else {\n"
|
||||
" if ($name$_ == null) {\n"
|
||||
" $name$_ = new com.google.protobuf.LazyFieldLite();\n"
|
||||
" }\n"
|
||||
" $name$_.setValue(value);\n"
|
||||
" $set_has_field_bit_message$\n"
|
||||
" }\n"
|
||||
"}\n");
|
||||
|
||||
// Field.Builder clearField()
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"private void clear$capitalized_name$() {\n"
|
||||
" $name$_ = null;\n"
|
||||
" $clear_has_field_bit_message$;\n"
|
||||
"}\n");
|
||||
}
|
||||
|
||||
void ImmutableLazyMessageFieldLiteGenerator::
|
||||
GenerateBuilderMembers(io::Printer* printer) const {
|
||||
// The comments above the methods below are based on a hypothetical
|
||||
// field of type "Field" called "Field".
|
||||
|
||||
// boolean hasField()
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public boolean has$capitalized_name$() {\n"
|
||||
" return instance.has$capitalized_name$();\n"
|
||||
"}\n");
|
||||
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public $type$ get$capitalized_name$() {\n"
|
||||
" return instance.get$capitalized_name$();\n"
|
||||
"}\n");
|
||||
|
||||
// Field.Builder setField(Field value)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public Builder set$capitalized_name$($type$ value) {\n"
|
||||
" copyOnWrite();\n"
|
||||
" instance.set$capitalized_name$(value);\n"
|
||||
" return this;\n"
|
||||
"}\n");
|
||||
|
||||
// Field.Builder setField(Field.Builder builderForValue)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public Builder set$capitalized_name$(\n"
|
||||
" $type$.Builder builderForValue) {\n"
|
||||
" copyOnWrite();\n"
|
||||
" instance.set$capitalized_name$(builderForValue);\n"
|
||||
" return this;\n"
|
||||
"}\n");
|
||||
|
||||
// Field.Builder mergeField(Field value)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public Builder merge$capitalized_name$($type$ value) {\n"
|
||||
" copyOnWrite();\n"
|
||||
" instance.merge$capitalized_name$(value);\n"
|
||||
" return this;\n"
|
||||
"}\n");
|
||||
|
||||
// Field.Builder clearField()
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public Builder clear$capitalized_name$() {\n"
|
||||
" copyOnWrite();\n"
|
||||
" instance.clear$capitalized_name$();\n"
|
||||
" return this;\n"
|
||||
"}\n");
|
||||
}
|
||||
|
||||
|
||||
void ImmutableLazyMessageFieldLiteGenerator::
|
||||
GenerateInitializationCode(io::Printer* printer) const {}
|
||||
|
||||
void ImmutableLazyMessageFieldLiteGenerator::
|
||||
GenerateVisitCode(io::Printer* printer) const {
|
||||
printer->Print(variables_,
|
||||
"$name$_ = visitor.visitLazyMessage($name$_, other.$name$_);\n");
|
||||
}
|
||||
|
||||
void ImmutableLazyMessageFieldLiteGenerator::
|
||||
GenerateParsingCode(io::Printer* printer) const {
|
||||
printer->Print(variables_,
|
||||
"if ($name$_ == null) {\n"
|
||||
" $name$_ = new com.google.protobuf.LazyFieldLite();\n"
|
||||
"}\n"
|
||||
"$name$_.mergeFrom(input, extensionRegistry);\n");
|
||||
printer->Print(variables_,
|
||||
"$set_has_field_bit_message$\n");
|
||||
}
|
||||
|
||||
void ImmutableLazyMessageFieldLiteGenerator::
|
||||
GenerateSerializationCode(io::Printer* printer) const {
|
||||
// Do not de-serialize lazy fields.
|
||||
printer->Print(variables_,
|
||||
"if (has$capitalized_name$()) {\n"
|
||||
" output.writeBytes($number$, $name$_.toByteString());\n"
|
||||
"}\n");
|
||||
}
|
||||
|
||||
void ImmutableLazyMessageFieldLiteGenerator::
|
||||
GenerateSerializedSizeCode(io::Printer* printer) const {
|
||||
printer->Print(variables_,
|
||||
"if (has$capitalized_name$()) {\n"
|
||||
" size += com.google.protobuf.CodedOutputStream\n"
|
||||
" .computeLazyFieldSize($number$, $name$_);\n"
|
||||
"}\n");
|
||||
}
|
||||
|
||||
|
||||
// ===================================================================
|
||||
|
||||
ImmutableLazyMessageOneofFieldLiteGenerator::
|
||||
ImmutableLazyMessageOneofFieldLiteGenerator(const FieldDescriptor* descriptor,
|
||||
int messageBitIndex,
|
||||
int builderBitIndex,
|
||||
Context* context)
|
||||
: ImmutableLazyMessageFieldLiteGenerator(
|
||||
descriptor, messageBitIndex, builderBitIndex, context) {
|
||||
const OneofGeneratorInfo* info =
|
||||
context->GetOneofGeneratorInfo(descriptor->containing_oneof());
|
||||
SetCommonOneofVariables(descriptor, info, &variables_);
|
||||
variables_["lazy_type"] = "com.google.protobuf.LazyFieldLite";
|
||||
}
|
||||
|
||||
ImmutableLazyMessageOneofFieldLiteGenerator::
|
||||
~ImmutableLazyMessageOneofFieldLiteGenerator() {}
|
||||
|
||||
void ImmutableLazyMessageOneofFieldLiteGenerator::
|
||||
GenerateMembers(io::Printer* printer) const {
|
||||
PrintExtraFieldInfo(variables_, printer);
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public boolean has$capitalized_name$() {\n"
|
||||
" return $has_oneof_case_message$;\n"
|
||||
"}\n");
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public $type$ get$capitalized_name$() {\n"
|
||||
" if ($has_oneof_case_message$) {\n"
|
||||
" return ($type$) (($lazy_type$) $oneof_name$_).getValue(\n"
|
||||
" $type$.getDefaultInstance());\n"
|
||||
" }\n"
|
||||
" return $type$.getDefaultInstance();\n"
|
||||
"}\n");
|
||||
|
||||
// Field.Builder setField(Field value)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"private void set$capitalized_name$($type$ value) {\n"
|
||||
" if (value == null) {\n"
|
||||
" throw new NullPointerException();\n"
|
||||
" }\n"
|
||||
" if (!($has_oneof_case_message$)) {\n"
|
||||
" $oneof_name$_ = new $lazy_type$();\n"
|
||||
" $set_oneof_case_message$;\n"
|
||||
" }\n"
|
||||
" (($lazy_type$) $oneof_name$_).setValue(value);\n"
|
||||
"}\n");
|
||||
|
||||
// Field.Builder setField(Field.Builder builderForValue)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"private void set$capitalized_name$(\n"
|
||||
" $type$.Builder builderForValue) {\n"
|
||||
" if (!($has_oneof_case_message$)) {\n"
|
||||
" $oneof_name$_ = new $lazy_type$();\n"
|
||||
" $set_oneof_case_message$;\n"
|
||||
" }\n"
|
||||
" (($lazy_type$) $oneof_name$_).setValue(builderForValue.build());\n"
|
||||
"}\n");
|
||||
|
||||
// Field.Builder mergeField(Field value)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"private void merge$capitalized_name$($type$ value) {\n"
|
||||
" if ($has_oneof_case_message$ &&\n"
|
||||
" !(($lazy_type$) $oneof_name$_).containsDefaultInstance()) {\n"
|
||||
" (($lazy_type$) $oneof_name$_).setValue(\n"
|
||||
" $type$.newBuilder(\n"
|
||||
" get$capitalized_name$()).mergeFrom(value).buildPartial());\n"
|
||||
" } else {\n"
|
||||
" if (!($has_oneof_case_message$)) {\n"
|
||||
" $oneof_name$_ = new $lazy_type$();\n"
|
||||
" $set_oneof_case_message$;\n"
|
||||
" }\n"
|
||||
" (($lazy_type$) $oneof_name$_).setValue(value);\n"
|
||||
" }\n"
|
||||
"}\n");
|
||||
|
||||
// Field.Builder clearField()
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"private void clear$capitalized_name$() {\n"
|
||||
" if ($has_oneof_case_message$) {\n"
|
||||
" $clear_oneof_case_message$;\n"
|
||||
" $oneof_name$_ = null;\n"
|
||||
" }\n"
|
||||
"}\n");
|
||||
}
|
||||
|
||||
void ImmutableLazyMessageOneofFieldLiteGenerator::
|
||||
GenerateBuilderMembers(io::Printer* printer) const {
|
||||
// boolean hasField()
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public boolean has$capitalized_name$() {\n"
|
||||
" return instance.has$capitalized_name$();\n"
|
||||
"}\n");
|
||||
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public $type$ get$capitalized_name$() {\n"
|
||||
" return instance.get$capitalized_name$();\n"
|
||||
"}\n");
|
||||
|
||||
// Field.Builder setField(Field value)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public Builder set$capitalized_name$($type$ value) {\n"
|
||||
" copyOnWrite();\n"
|
||||
" instance.set$capitalized_name$(value);\n"
|
||||
" return this;\n"
|
||||
"}\n");
|
||||
|
||||
// Field.Builder setField(Field.Builder builderForValue)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public Builder set$capitalized_name$(\n"
|
||||
" $type$.Builder builderForValue) {\n"
|
||||
" copyOnWrite();\n"
|
||||
" instance.set$capitalized_name$(builderForValue);\n"
|
||||
" return this;\n"
|
||||
"}\n");
|
||||
|
||||
// Field.Builder mergeField(Field value)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public Builder merge$capitalized_name$($type$ value) {\n"
|
||||
" copyOnWrite();\n"
|
||||
" instance.merge$capitalized_name$(value);\n"
|
||||
" return this;\n"
|
||||
"}\n");
|
||||
|
||||
// Field.Builder clearField()
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public Builder clear$capitalized_name$() {\n"
|
||||
" copyOnWrite();\n"
|
||||
" instance.clear$capitalized_name$();\n"
|
||||
" return this;\n"
|
||||
"}\n");
|
||||
}
|
||||
|
||||
void ImmutableLazyMessageOneofFieldLiteGenerator::
|
||||
GenerateVisitCode(io::Printer* printer) const {
|
||||
printer->Print(variables_,
|
||||
"$oneof_name$_ = visitor.visitOneofLazyMessage(\n"
|
||||
" $has_oneof_case_message$,\n"
|
||||
" ($lazy_type$) $oneof_name$_,\n"
|
||||
" ($lazy_type$) other.$oneof_name$_);\n");
|
||||
}
|
||||
|
||||
void ImmutableLazyMessageOneofFieldLiteGenerator::
|
||||
GenerateParsingCode(io::Printer* printer) const {
|
||||
printer->Print(variables_,
|
||||
"if (!($has_oneof_case_message$)) {\n"
|
||||
" $oneof_name$_ = new $lazy_type$();\n"
|
||||
"}\n"
|
||||
"(($lazy_type$) $oneof_name$_).mergeFrom(input, extensionRegistry);\n"
|
||||
"$set_oneof_case_message$;\n");
|
||||
}
|
||||
|
||||
void ImmutableLazyMessageOneofFieldLiteGenerator::
|
||||
GenerateSerializationCode(io::Printer* printer) const {
|
||||
// Do not de-serialize lazy fields.
|
||||
printer->Print(variables_,
|
||||
"if ($has_oneof_case_message$) {\n"
|
||||
" output.writeBytes(\n"
|
||||
" $number$, (($lazy_type$) $oneof_name$_).toByteString());\n"
|
||||
"}\n");
|
||||
}
|
||||
|
||||
void ImmutableLazyMessageOneofFieldLiteGenerator::
|
||||
GenerateSerializedSizeCode(io::Printer* printer) const {
|
||||
printer->Print(variables_,
|
||||
"if ($has_oneof_case_message$) {\n"
|
||||
" size += com.google.protobuf.CodedOutputStream\n"
|
||||
" .computeLazyFieldSize($number$, ($lazy_type$) $oneof_name$_);\n"
|
||||
"}\n");
|
||||
}
|
||||
|
||||
|
||||
// ===================================================================
|
||||
|
||||
RepeatedImmutableLazyMessageFieldLiteGenerator::
|
||||
RepeatedImmutableLazyMessageFieldLiteGenerator(
|
||||
const FieldDescriptor* descriptor,
|
||||
int messageBitIndex,
|
||||
int builderBitIndex,
|
||||
Context* context)
|
||||
: RepeatedImmutableMessageFieldLiteGenerator(
|
||||
descriptor, messageBitIndex, builderBitIndex, context) {
|
||||
}
|
||||
|
||||
|
||||
RepeatedImmutableLazyMessageFieldLiteGenerator::
|
||||
~RepeatedImmutableLazyMessageFieldLiteGenerator() {}
|
||||
|
||||
void RepeatedImmutableLazyMessageFieldLiteGenerator::
|
||||
GenerateMembers(io::Printer* printer) const {
|
||||
printer->Print(variables_,
|
||||
"private com.google.protobuf.Internal.ProtobufList<\n"
|
||||
" com.google.protobuf.LazyFieldLite> $name$_;\n");
|
||||
PrintExtraFieldInfo(variables_, printer);
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public java.util.List<$type$>\n"
|
||||
" get$capitalized_name$List() {\n"
|
||||
" java.util.List<$type$> list =\n"
|
||||
" new java.util.ArrayList<$type$>($name$_.size());\n"
|
||||
" for (com.google.protobuf.LazyFieldLite lf : $name$_) {\n"
|
||||
" list.add(($type$) lf.getValue($type$.getDefaultInstance()));\n"
|
||||
" }\n"
|
||||
" return java.util.Collections.unmodifiableList(list);\n"
|
||||
"}\n");
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public java.util.List<? extends $type$OrBuilder>\n"
|
||||
" get$capitalized_name$OrBuilderList() {\n"
|
||||
" return get$capitalized_name$List();\n"
|
||||
"}\n");
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public int get$capitalized_name$Count() {\n"
|
||||
" return $name$_.size();\n"
|
||||
"}\n");
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public $type$ get$capitalized_name$(int index) {\n"
|
||||
" return ($type$)\n"
|
||||
" $name$_.get(index).getValue($type$.getDefaultInstance());\n"
|
||||
"}\n");
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public $type$OrBuilder get$capitalized_name$OrBuilder(\n"
|
||||
" int index) {\n"
|
||||
" return ($type$OrBuilder)\n"
|
||||
" $name$_.get(index).getValue($type$.getDefaultInstance());\n"
|
||||
"}\n");
|
||||
|
||||
printer->Print(variables_,
|
||||
"private void ensure$capitalized_name$IsMutable() {\n"
|
||||
" if (!$is_mutable$) {\n"
|
||||
" $name$_ =\n"
|
||||
" com.google.protobuf.GeneratedMessageLite.mutableCopy($name$_);\n"
|
||||
" }\n"
|
||||
"}\n"
|
||||
"\n");
|
||||
|
||||
// Builder setRepeatedField(int index, Field value)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"private void set$capitalized_name$(\n"
|
||||
" int index, $type$ value) {\n"
|
||||
" if (value == null) {\n"
|
||||
" throw new NullPointerException();\n"
|
||||
" }\n"
|
||||
" ensure$capitalized_name$IsMutable();\n"
|
||||
" $name$_.set(\n"
|
||||
" index, com.google.protobuf.LazyFieldLite.fromValue(value));\n"
|
||||
"}\n");
|
||||
|
||||
// Builder setRepeatedField(int index, Field.Builder builderForValue)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"private void set$capitalized_name$(\n"
|
||||
" int index, $type$.Builder builderForValue) {\n"
|
||||
" ensure$capitalized_name$IsMutable();\n"
|
||||
" $name$_.set(index, com.google.protobuf.LazyFieldLite.fromValue(\n"
|
||||
" builderForValue.build()));\n"
|
||||
"}\n");
|
||||
|
||||
// Builder addRepeatedField(Field value)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"private void add$capitalized_name$($type$ value) {\n"
|
||||
" if (value == null) {\n"
|
||||
" throw new NullPointerException();\n"
|
||||
" }\n"
|
||||
" ensure$capitalized_name$IsMutable();\n"
|
||||
" $name$_.add(com.google.protobuf.LazyFieldLite.fromValue(value));\n"
|
||||
"}\n");
|
||||
|
||||
// Builder addRepeatedField(int index, Field value)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"private void add$capitalized_name$(\n"
|
||||
" int index, $type$ value) {\n"
|
||||
" if (value == null) {\n"
|
||||
" throw new NullPointerException();\n"
|
||||
" }\n"
|
||||
" ensure$capitalized_name$IsMutable();\n"
|
||||
" $name$_.add(\n"
|
||||
" index, com.google.protobuf.LazyFieldLite.fromValue(value));\n"
|
||||
"}\n");
|
||||
|
||||
// Builder addRepeatedField(Field.Builder builderForValue)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"private void add$capitalized_name$(\n"
|
||||
" $type$.Builder builderForValue) {\n"
|
||||
" ensure$capitalized_name$IsMutable();\n"
|
||||
" $name$_.add(com.google.protobuf.LazyFieldLite.fromValue(\n"
|
||||
" builderForValue.build()));\n"
|
||||
"}\n");
|
||||
|
||||
// Builder addRepeatedField(int index, Field.Builder builderForValue)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"private void add$capitalized_name$(\n"
|
||||
" int index, $type$.Builder builderForValue) {\n"
|
||||
" ensure$capitalized_name$IsMutable();\n"
|
||||
" $name$_.add(index, com.google.protobuf.LazyFieldLite.fromValue(\n"
|
||||
" builderForValue.build()));\n"
|
||||
"}\n");
|
||||
|
||||
// Builder addAllRepeatedField(Iterable<Field> values)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"private void addAll$capitalized_name$(\n"
|
||||
" java.lang.Iterable<? extends $type$> values) {\n"
|
||||
" ensure$capitalized_name$IsMutable();\n"
|
||||
" for (com.google.protobuf.MessageLite v : values) {\n"
|
||||
" $name$_.add(com.google.protobuf.LazyFieldLite.fromValue(v));\n"
|
||||
" }\n"
|
||||
"}\n");
|
||||
|
||||
// Builder clearAllRepeatedField()
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"private void clear$capitalized_name$() {\n"
|
||||
" $name$_ = emptyProtobufList();\n"
|
||||
"}\n");
|
||||
|
||||
// Builder removeRepeatedField(int index)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"private void remove$capitalized_name$(int index) {\n"
|
||||
" ensure$capitalized_name$IsMutable();\n"
|
||||
" $name$_.remove(index);\n"
|
||||
"}\n");
|
||||
}
|
||||
|
||||
void RepeatedImmutableLazyMessageFieldLiteGenerator::
|
||||
GenerateBuilderMembers(io::Printer* printer) const {
|
||||
// List<Field> getRepeatedFieldList()
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public java.util.List<$type$> get$capitalized_name$List() {\n"
|
||||
" return java.util.Collections.unmodifiableList(\n"
|
||||
" instance.get$capitalized_name$List());\n"
|
||||
"}\n");
|
||||
|
||||
// int getRepeatedFieldCount()
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public int get$capitalized_name$Count() {\n"
|
||||
" return instance.get$capitalized_name$Count();\n"
|
||||
"}\n");
|
||||
|
||||
// Field getRepeatedField(int index)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public $type$ get$capitalized_name$(int index) {\n"
|
||||
" return instance.get$capitalized_name$(index);\n"
|
||||
"}\n");
|
||||
|
||||
// Builder setRepeatedField(int index, Field value)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public Builder set$capitalized_name$(\n"
|
||||
" int index, $type$ value) {\n"
|
||||
" copyOnWrite();\n"
|
||||
" instance.set$capitalized_name$(index, value);\n"
|
||||
" return this;\n"
|
||||
"}\n");
|
||||
|
||||
// Builder setRepeatedField(int index, Field.Builder builderForValue)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public Builder set$capitalized_name$(\n"
|
||||
" int index, $type$.Builder builderForValue) {\n"
|
||||
" copyOnWrite();\n"
|
||||
" instance.set$capitalized_name$(index, builderForValue);\n"
|
||||
" return this;\n"
|
||||
"}\n");
|
||||
|
||||
// Builder addRepeatedField(Field value)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public Builder add$capitalized_name$($type$ value) {\n"
|
||||
" copyOnWrite();\n"
|
||||
" instance.add$capitalized_name$(value);\n"
|
||||
" return this;\n"
|
||||
"}\n");
|
||||
|
||||
// Builder addRepeatedField(int index, Field value)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public Builder add$capitalized_name$(\n"
|
||||
" int index, $type$ value) {\n"
|
||||
" copyOnWrite();\n"
|
||||
" instance.add$capitalized_name$(index, value);\n"
|
||||
" return this;\n"
|
||||
"}\n");
|
||||
|
||||
// Builder addRepeatedField(Field.Builder builderForValue)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public Builder add$capitalized_name$(\n"
|
||||
" $type$.Builder builderForValue) {\n"
|
||||
" copyOnWrite();\n"
|
||||
" instance.add$capitalized_name$(builderForValue);\n"
|
||||
" return this;\n"
|
||||
"}\n");
|
||||
|
||||
// Builder addRepeatedField(int index, Field.Builder builderForValue)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public Builder add$capitalized_name$(\n"
|
||||
" int index, $type$.Builder builderForValue) {\n"
|
||||
" copyOnWrite();\n"
|
||||
" instance.add$capitalized_name$(index, builderForValue);\n"
|
||||
" return this;\n"
|
||||
"}\n");
|
||||
|
||||
// Builder addAllRepeatedField(Iterable<Field> values)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public Builder addAll$capitalized_name$(\n"
|
||||
" java.lang.Iterable<? extends $type$> values) {\n"
|
||||
" copyOnWrite();\n"
|
||||
" instance.addAll$capitalized_name$(values);\n"
|
||||
" return this;\n"
|
||||
"}\n");
|
||||
|
||||
// Builder clearAllRepeatedField()
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public Builder clear$capitalized_name$() {\n"
|
||||
" copyOnWrite();\n"
|
||||
" instance.clear$capitalized_name$();\n"
|
||||
" return this;\n"
|
||||
"}\n");
|
||||
|
||||
// Builder removeRepeatedField(int index)
|
||||
WriteFieldDocComment(printer, descriptor_);
|
||||
printer->Print(variables_,
|
||||
"$deprecation$public Builder remove$capitalized_name$(int index) {\n"
|
||||
" copyOnWrite();\n"
|
||||
" instance.remove$capitalized_name$(index);\n"
|
||||
" return this;\n"
|
||||
"}\n");
|
||||
}
|
||||
|
||||
void RepeatedImmutableLazyMessageFieldLiteGenerator::
|
||||
GenerateParsingCode(io::Printer* printer) const {
|
||||
printer->Print(variables_,
|
||||
"if (!$is_mutable$) {\n"
|
||||
" $name$_ =\n"
|
||||
" com.google.protobuf.GeneratedMessageLite.mutableCopy($name$_);\n"
|
||||
"}\n"
|
||||
"$name$_.add(new com.google.protobuf.LazyFieldLite(\n"
|
||||
" extensionRegistry, input.readBytes()));\n");
|
||||
}
|
||||
|
||||
void RepeatedImmutableLazyMessageFieldLiteGenerator::
|
||||
GenerateSerializationCode(io::Printer* printer) const {
|
||||
printer->Print(variables_,
|
||||
"for (int i = 0; i < $name$_.size(); i++) {\n"
|
||||
" output.writeBytes($number$, $name$_.get(i).toByteString());\n"
|
||||
"}\n");
|
||||
}
|
||||
|
||||
void RepeatedImmutableLazyMessageFieldLiteGenerator::
|
||||
GenerateSerializedSizeCode(io::Printer* printer) const {
|
||||
printer->Print(variables_,
|
||||
"for (int i = 0; i < $name$_.size(); i++) {\n"
|
||||
" size += com.google.protobuf.CodedOutputStream\n"
|
||||
" .computeLazyFieldSize($number$, $name$_.get(i));\n"
|
||||
"}\n");
|
||||
}
|
||||
|
||||
|
||||
} // namespace java
|
||||
} // namespace compiler
|
||||
} // namespace protobuf
|
||||
} // namespace google
|
@ -1,121 +0,0 @@
|
||||
// Protocol Buffers - Google's data interchange format
|
||||
// Copyright 2008 Google Inc. All rights reserved.
|
||||
// https://developers.google.com/protocol-buffers/
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions are
|
||||
// met:
|
||||
//
|
||||
// * Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// * Redistributions in binary form must reproduce the above
|
||||
// copyright notice, this list of conditions and the following disclaimer
|
||||
// in the documentation and/or other materials provided with the
|
||||
// distribution.
|
||||
// * Neither the name of Google Inc. nor the names of its
|
||||
// contributors may be used to endorse or promote products derived from
|
||||
// this software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
// Author: niwasaki@google.com (Naoki Iwasaki)
|
||||
// Based on original Protocol Buffers design by
|
||||
// Sanjay Ghemawat, Jeff Dean, and others.
|
||||
|
||||
#ifndef GOOGLE_PROTOBUF_COMPILER_JAVA_LAZY_MESSAGE_FIELD_LITE_H__
|
||||
#define GOOGLE_PROTOBUF_COMPILER_JAVA_LAZY_MESSAGE_FIELD_LITE_H__
|
||||
|
||||
#include <google/protobuf/compiler/java/java_field.h>
|
||||
#include <google/protobuf/compiler/java/java_message_field_lite.h>
|
||||
|
||||
namespace google {
|
||||
namespace protobuf {
|
||||
namespace compiler {
|
||||
namespace java {
|
||||
class Context; // context.h
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
namespace protobuf {
|
||||
namespace compiler {
|
||||
namespace java {
|
||||
|
||||
class ImmutableLazyMessageFieldLiteGenerator
|
||||
: public ImmutableMessageFieldLiteGenerator {
|
||||
public:
|
||||
explicit ImmutableLazyMessageFieldLiteGenerator(
|
||||
const FieldDescriptor* descriptor, int messageBitIndex,
|
||||
int builderBitIndex, Context* context);
|
||||
~ImmutableLazyMessageFieldLiteGenerator();
|
||||
|
||||
// overroads ImmutableMessageFieldLiteGenerator ------------------------------
|
||||
void GenerateMembers(io::Printer* printer) const;
|
||||
void GenerateBuilderMembers(io::Printer* printer) const;
|
||||
void GenerateInitializationCode(io::Printer* printer) const;
|
||||
void GenerateVisitCode(io::Printer* printer) const;
|
||||
void GenerateParsingCode(io::Printer* printer) const;
|
||||
void GenerateSerializationCode(io::Printer* printer) const;
|
||||
void GenerateSerializedSizeCode(io::Printer* printer) const;
|
||||
|
||||
|
||||
private:
|
||||
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ImmutableLazyMessageFieldLiteGenerator);
|
||||
};
|
||||
|
||||
class ImmutableLazyMessageOneofFieldLiteGenerator
|
||||
: public ImmutableLazyMessageFieldLiteGenerator {
|
||||
public:
|
||||
ImmutableLazyMessageOneofFieldLiteGenerator(
|
||||
const FieldDescriptor* descriptor, int messageBitIndex,
|
||||
int builderBitIndex, Context* context);
|
||||
~ImmutableLazyMessageOneofFieldLiteGenerator();
|
||||
|
||||
void GenerateMembers(io::Printer* printer) const;
|
||||
void GenerateBuilderMembers(io::Printer* printer) const;
|
||||
void GenerateVisitCode(io::Printer* printer) const;
|
||||
void GenerateParsingCode(io::Printer* printer) const;
|
||||
void GenerateSerializationCode(io::Printer* printer) const;
|
||||
void GenerateSerializedSizeCode(io::Printer* printer) const;
|
||||
|
||||
|
||||
private:
|
||||
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ImmutableLazyMessageOneofFieldLiteGenerator);
|
||||
};
|
||||
|
||||
class RepeatedImmutableLazyMessageFieldLiteGenerator
|
||||
: public RepeatedImmutableMessageFieldLiteGenerator {
|
||||
public:
|
||||
explicit RepeatedImmutableLazyMessageFieldLiteGenerator(
|
||||
const FieldDescriptor* descriptor, int messageBitIndex,
|
||||
int builderBitIndex, Context* context);
|
||||
~RepeatedImmutableLazyMessageFieldLiteGenerator();
|
||||
|
||||
// overroads RepeatedImmutableMessageFieldLiteGenerator ----------------------
|
||||
void GenerateMembers(io::Printer* printer) const;
|
||||
void GenerateBuilderMembers(io::Printer* printer) const;
|
||||
void GenerateParsingCode(io::Printer* printer) const;
|
||||
void GenerateSerializationCode(io::Printer* printer) const;
|
||||
void GenerateSerializedSizeCode(io::Printer* printer) const;
|
||||
|
||||
|
||||
private:
|
||||
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(RepeatedImmutableLazyMessageFieldLiteGenerator);
|
||||
};
|
||||
|
||||
} // namespace java
|
||||
} // namespace compiler
|
||||
} // namespace protobuf
|
||||
|
||||
} // namespace google
|
||||
#endif // GOOGLE_PROTOBUF_COMPILER_JAVA_LAZY_MESSAGE_FIELD_LITE_H__
|
@ -1,80 +0,0 @@
|
||||
// Protocol Buffers - Google's data interchange format
|
||||
// Copyright 2008 Google Inc. All rights reserved.
|
||||
// https://developers.google.com/protocol-buffers/
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions are
|
||||
// met:
|
||||
//
|
||||
// * Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// * Redistributions in binary form must reproduce the above
|
||||
// copyright notice, this list of conditions and the following disclaimer
|
||||
// in the documentation and/or other materials provided with the
|
||||
// distribution.
|
||||
// * Neither the name of Google Inc. nor the names of its
|
||||
// contributors may be used to endorse or promote products derived from
|
||||
// this software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
/* This code will be inserted into generated code for
|
||||
* google/protobuf/any.proto. */
|
||||
|
||||
/**
|
||||
* Returns the type name contained in this instance, if any.
|
||||
* @return {string|undefined}
|
||||
*/
|
||||
proto.google.protobuf.Any.prototype.getTypeName = function() {
|
||||
return this.getTypeUrl().split('/').pop();
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Packs the given message instance into this Any.
|
||||
* @param {!Uint8Array} serialized The serialized data to pack.
|
||||
* @param {string} name The type name of this message object.
|
||||
* @param {string=} opt_typeUrlPrefix the type URL prefix.
|
||||
*/
|
||||
proto.google.protobuf.Any.prototype.pack = function(serialized, name,
|
||||
opt_typeUrlPrefix) {
|
||||
if (!opt_typeUrlPrefix) {
|
||||
opt_typeUrlPrefix = 'type.googleapis.com/';
|
||||
}
|
||||
|
||||
if (opt_typeUrlPrefix.substr(-1) != '/') {
|
||||
this.setTypeUrl(opt_typeUrlPrefix + '/' + name);
|
||||
} else {
|
||||
this.setTypeUrl(opt_typeUrlPrefix + name);
|
||||
}
|
||||
|
||||
this.setValue(serialized);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @template T
|
||||
* Unpacks this Any into the given message object.
|
||||
* @param {function(Uint8Array):T} deserialize Function that will deserialize
|
||||
* the binary data properly.
|
||||
* @param {string} name The expected type name of this message object.
|
||||
* @return {?T} If the name matched the expected name, returns the deserialized
|
||||
* object, otherwise returns null.
|
||||
*/
|
||||
proto.google.protobuf.Any.prototype.unpack = function(deserialize, name) {
|
||||
if (this.getTypeName() == name) {
|
||||
return deserialize(this.getValue_asU8());
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
};
|
@ -1,168 +0,0 @@
|
||||
// Protocol Buffers - Google's data interchange format
|
||||
// Copyright 2008 Google Inc. All rights reserved.
|
||||
// https://developers.google.com/protocol-buffers/
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions are
|
||||
// met:
|
||||
//
|
||||
// * Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// * Redistributions in binary form must reproduce the above
|
||||
// copyright notice, this list of conditions and the following disclaimer
|
||||
// in the documentation and/or other materials provided with the
|
||||
// distribution.
|
||||
// * Neither the name of Google Inc. nor the names of its
|
||||
// contributors may be used to endorse or promote products derived from
|
||||
// this software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
/* This code will be inserted into generated code for
|
||||
* google/protobuf/struct.proto. */
|
||||
|
||||
/**
|
||||
* Typedef representing plain JavaScript values that can go into a
|
||||
* Struct.
|
||||
* @typedef {null|number|string|boolean|Array|Object}
|
||||
*/
|
||||
proto.google.protobuf.JavaScriptValue;
|
||||
|
||||
|
||||
/**
|
||||
* Converts this Value object to a plain JavaScript value.
|
||||
* @return {?proto.google.protobuf.JavaScriptValue} a plain JavaScript
|
||||
* value representing this Struct.
|
||||
*/
|
||||
proto.google.protobuf.Value.prototype.toJavaScript = function() {
|
||||
var kindCase = proto.google.protobuf.Value.KindCase;
|
||||
switch (this.getKindCase()) {
|
||||
case kindCase.NULL_VALUE:
|
||||
return null;
|
||||
case kindCase.NUMBER_VALUE:
|
||||
return this.getNumberValue();
|
||||
case kindCase.STRING_VALUE:
|
||||
return this.getStringValue();
|
||||
case kindCase.BOOL_VALUE:
|
||||
return this.getBoolValue();
|
||||
case kindCase.STRUCT_VALUE:
|
||||
return this.getStructValue().toJavaScript();
|
||||
case kindCase.LIST_VALUE:
|
||||
return this.getListValue().toJavaScript();
|
||||
default:
|
||||
throw new Error('Unexpected struct type');
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Converts this JavaScript value to a new Value proto.
|
||||
* @param {!proto.google.protobuf.JavaScriptValue} value The value to
|
||||
* convert.
|
||||
* @return {!proto.google.protobuf.Value} The newly constructed value.
|
||||
*/
|
||||
proto.google.protobuf.Value.fromJavaScript = function(value) {
|
||||
var ret = new proto.google.protobuf.Value();
|
||||
switch (goog.typeOf(value)) {
|
||||
case 'string':
|
||||
ret.setStringValue(/** @type {string} */ (value));
|
||||
break;
|
||||
case 'number':
|
||||
ret.setNumberValue(/** @type {number} */ (value));
|
||||
break;
|
||||
case 'boolean':
|
||||
ret.setBoolValue(/** @type {boolean} */ (value));
|
||||
break;
|
||||
case 'null':
|
||||
ret.setNullValue(proto.google.protobuf.NullValue.NULL_VALUE);
|
||||
break;
|
||||
case 'array':
|
||||
ret.setListValue(proto.google.protobuf.ListValue.fromJavaScript(
|
||||
/** @type{!Array} */ (value)));
|
||||
break;
|
||||
case 'object':
|
||||
ret.setStructValue(proto.google.protobuf.Struct.fromJavaScript(
|
||||
/** @type{!Object} */ (value)));
|
||||
break;
|
||||
default:
|
||||
throw new Error('Unexpected struct type.');
|
||||
}
|
||||
|
||||
return ret;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Converts this ListValue object to a plain JavaScript array.
|
||||
* @return {!Array} a plain JavaScript array representing this List.
|
||||
*/
|
||||
proto.google.protobuf.ListValue.prototype.toJavaScript = function() {
|
||||
var ret = [];
|
||||
var values = this.getValuesList();
|
||||
|
||||
for (var i = 0; i < values.length; i++) {
|
||||
ret[i] = values[i].toJavaScript();
|
||||
}
|
||||
|
||||
return ret;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Constructs a ListValue protobuf from this plain JavaScript array.
|
||||
* @param {!Array} array a plain JavaScript array
|
||||
* @return {proto.google.protobuf.ListValue} a new ListValue object
|
||||
*/
|
||||
proto.google.protobuf.ListValue.fromJavaScript = function(array) {
|
||||
var ret = new proto.google.protobuf.ListValue();
|
||||
|
||||
for (var i = 0; i < array.length; i++) {
|
||||
ret.addValues(proto.google.protobuf.Value.fromJavaScript(array[i]));
|
||||
}
|
||||
|
||||
return ret;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Converts this Struct object to a plain JavaScript object.
|
||||
* @return {!Object<string, !proto.google.protobuf.JavaScriptValue>} a plain
|
||||
* JavaScript object representing this Struct.
|
||||
*/
|
||||
proto.google.protobuf.Struct.prototype.toJavaScript = function() {
|
||||
var ret = {};
|
||||
|
||||
this.getFieldsMap().forEach(function(value, key) {
|
||||
ret[key] = value.toJavaScript();
|
||||
});
|
||||
|
||||
return ret;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Constructs a Struct protobuf from this plain JavaScript object.
|
||||
* @param {!Object} obj a plain JavaScript object
|
||||
* @return {proto.google.protobuf.Struct} a new Struct object
|
||||
*/
|
||||
proto.google.protobuf.Struct.fromJavaScript = function(obj) {
|
||||
var ret = new proto.google.protobuf.Struct();
|
||||
var map = ret.getFieldsMap();
|
||||
|
||||
for (var property in obj) {
|
||||
var val = obj[property];
|
||||
map.set(property, proto.google.protobuf.Value.fromJavaScript(val));
|
||||
}
|
||||
|
||||
return ret;
|
||||
};
|
@ -1,53 +0,0 @@
|
||||
// Protocol Buffers - Google's data interchange format
|
||||
// Copyright 2008 Google Inc. All rights reserved.
|
||||
// https://developers.google.com/protocol-buffers/
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions are
|
||||
// met:
|
||||
//
|
||||
// * Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// * Redistributions in binary form must reproduce the above
|
||||
// copyright notice, this list of conditions and the following disclaimer
|
||||
// in the documentation and/or other materials provided with the
|
||||
// distribution.
|
||||
// * Neither the name of Google Inc. nor the names of its
|
||||
// contributors may be used to endorse or promote products derived from
|
||||
// this software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
/* This code will be inserted into generated code for
|
||||
* google/protobuf/timestamp.proto. */
|
||||
|
||||
/**
|
||||
* Returns a JavaScript 'Date' object corresponding to this Timestamp.
|
||||
* @return {!Date}
|
||||
*/
|
||||
proto.google.protobuf.Timestamp.prototype.toDate = function() {
|
||||
var seconds = this.getSeconds();
|
||||
var nanos = this.getNanos();
|
||||
|
||||
return new Date((seconds * 1000) + (nanos / 1000000));
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Sets the value of this Timestamp object to be the given Date.
|
||||
* @param {!Date} value The value to set.
|
||||
*/
|
||||
proto.google.protobuf.Timestamp.prototype.fromDate = function(value) {
|
||||
this.setSeconds(Math.floor(value.getTime() / 1000));
|
||||
this.setNanos(value.getMilliseconds() * 1000000);
|
||||
};
|
Loading…
Reference in New Issue
Block a user