parent
88795f64e4
commit
b1c5503022
10 changed files with 0 additions and 2089 deletions
@ -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