|
|
|
@ -2848,44 +2848,50 @@ void Generator::GenerateClassField(const GeneratorOptions& options, |
|
|
|
|
// fields with presence.
|
|
|
|
|
if (field->is_map()) { |
|
|
|
|
printer->Print( |
|
|
|
|
"/** Clears values from the map. The map will be non-null. */\n" |
|
|
|
|
"$class$.prototype.$clearername$ = function() {\n" |
|
|
|
|
" this.$gettername$().clear();$returnvalue$\n" |
|
|
|
|
"};\n" |
|
|
|
|
"\n" |
|
|
|
|
"\n", |
|
|
|
|
"class", GetMessagePath(options, field->containing_type()), |
|
|
|
|
"clearername", "clear" + JSGetterName(options, field), |
|
|
|
|
"gettername", "get" + JSGetterName(options, field), |
|
|
|
|
"returnvalue", JSReturnClause(field)); |
|
|
|
|
"clearername", "clear" + JSGetterName(options, field), "gettername", |
|
|
|
|
"get" + JSGetterName(options, field), "returnvalue", |
|
|
|
|
JSReturnClause(field)); |
|
|
|
|
printer->Annotate("clearername", field); |
|
|
|
|
} else if (field->is_repeated() || |
|
|
|
|
(field->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE && |
|
|
|
|
!field->is_required())) { |
|
|
|
|
// Fields where we can delegate to the regular setter.
|
|
|
|
|
printer->Print( |
|
|
|
|
"/** $jsdoc$ */\n" |
|
|
|
|
"$class$.prototype.$clearername$ = function() {\n" |
|
|
|
|
" this.$settername$($clearedvalue$);$returnvalue$\n" |
|
|
|
|
"};\n" |
|
|
|
|
"\n" |
|
|
|
|
"\n", |
|
|
|
|
"jsdoc", |
|
|
|
|
field->is_repeated() ? "Clears the list making it empty but non-null." |
|
|
|
|
: "Clears the message field making it undefined.", |
|
|
|
|
"class", GetMessagePath(options, field->containing_type()), |
|
|
|
|
"clearername", "clear" + JSGetterName(options, field), |
|
|
|
|
"settername", "set" + JSGetterName(options, field), |
|
|
|
|
"clearedvalue", (field->is_repeated() ? "[]" : "undefined"), |
|
|
|
|
"returnvalue", JSReturnClause(field)); |
|
|
|
|
"clearername", "clear" + JSGetterName(options, field), "settername", |
|
|
|
|
"set" + JSGetterName(options, field), "clearedvalue", |
|
|
|
|
(field->is_repeated() ? "[]" : "undefined"), "returnvalue", |
|
|
|
|
JSReturnClause(field)); |
|
|
|
|
printer->Annotate("clearername", field); |
|
|
|
|
} else if (HasFieldPresence(options, field)) { |
|
|
|
|
// Fields where we can't delegate to the regular setter because it doesn't
|
|
|
|
|
// accept "undefined" as an argument.
|
|
|
|
|
printer->Print( |
|
|
|
|
"/** Clears the field making it undefined. */\n" |
|
|
|
|
"$class$.prototype.$clearername$ = function() {\n" |
|
|
|
|
" jspb.Message.set$maybeoneof$Field(this, " |
|
|
|
|
"$index$$maybeoneofgroup$, ", |
|
|
|
|
"class", GetMessagePath(options, field->containing_type()), |
|
|
|
|
"clearername", "clear" + JSGetterName(options, field), |
|
|
|
|
"maybeoneof", (field->containing_oneof() ? "Oneof" : ""), |
|
|
|
|
"maybeoneofgroup", (field->containing_oneof() ? |
|
|
|
|
(", " + JSOneofArray(options, field)) : ""), |
|
|
|
|
"clearername", "clear" + JSGetterName(options, field), "maybeoneof", |
|
|
|
|
(field->containing_oneof() ? "Oneof" : ""), "maybeoneofgroup", |
|
|
|
|
(field->containing_oneof() ? (", " + JSOneofArray(options, field)) |
|
|
|
|
: ""), |
|
|
|
|
"index", JSFieldIndex(field)); |
|
|
|
|
printer->Annotate("clearername", field); |
|
|
|
|
printer->Print( |
|
|
|
@ -2963,14 +2969,15 @@ void Generator::GenerateRepeatedMessageHelperMethods( |
|
|
|
|
" * @param {number=} opt_index\n" |
|
|
|
|
" * @return {!$optionaltype$}\n" |
|
|
|
|
" */\n" |
|
|
|
|
"$class$.prototype.add$name$ = function(opt_value, opt_index) {\n" |
|
|
|
|
"$class$.prototype.$addername$ = function(opt_value, opt_index) {\n" |
|
|
|
|
" return jspb.Message.addTo$repeatedtag$WrapperField(", |
|
|
|
|
"optionaltype", JSTypeName(options, field, BYTES_DEFAULT), |
|
|
|
|
"class", GetMessagePath(options, field->containing_type()), |
|
|
|
|
"name", JSGetterName(options, field, BYTES_DEFAULT, |
|
|
|
|
/* drop_list = */ true), |
|
|
|
|
"optionaltype", JSTypeName(options, field, BYTES_DEFAULT), "class", |
|
|
|
|
GetMessagePath(options, field->containing_type()), "addername", |
|
|
|
|
"add" + JSGetterName(options, field, BYTES_DEFAULT, |
|
|
|
|
/* drop_list = */ true), |
|
|
|
|
"repeatedtag", (field->is_repeated() ? "Repeated" : "")); |
|
|
|
|
|
|
|
|
|
printer->Annotate("addername", field); |
|
|
|
|
printer->Print( |
|
|
|
|
"this, $index$$oneofgroup$, opt_value, $ctor$, opt_index);\n" |
|
|
|
|
"};\n" |
|
|
|
|