|
|
|
@ -624,15 +624,17 @@ void GenerateField(const FieldDescriptor* field, io::Printer* printer, |
|
|
|
|
printer->Print( |
|
|
|
|
"private $^name^;\n", |
|
|
|
|
"name", field->name()); |
|
|
|
|
} else if (field->containing_oneof()) { |
|
|
|
|
} else if (field->real_containing_oneof()) { |
|
|
|
|
// Oneof fields are handled by GenerateOneofField.
|
|
|
|
|
return; |
|
|
|
|
} else { |
|
|
|
|
std::string initial_value = |
|
|
|
|
field->has_presence() ? "null" : DefaultForField(field); |
|
|
|
|
GenerateFieldDocComment(printer, field, is_descriptor, kFieldProperty); |
|
|
|
|
printer->Print( |
|
|
|
|
"protected $^name^ = ^default^;\n", |
|
|
|
|
"protected $^name^ = ^initial_value^;\n", |
|
|
|
|
"name", field->name(), |
|
|
|
|
"default", DefaultForField(field)); |
|
|
|
|
"initial_value", initial_value); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (is_descriptor) { |
|
|
|
@ -652,20 +654,41 @@ void GenerateOneofField(const OneofDescriptor* oneof, io::Printer* printer) { |
|
|
|
|
|
|
|
|
|
void GenerateFieldAccessor(const FieldDescriptor* field, bool is_descriptor, |
|
|
|
|
io::Printer* printer) { |
|
|
|
|
const OneofDescriptor* oneof = field->containing_oneof(); |
|
|
|
|
const OneofDescriptor* oneof = field->real_containing_oneof(); |
|
|
|
|
|
|
|
|
|
// Generate getter.
|
|
|
|
|
GenerateFieldDocComment(printer, field, is_descriptor, kFieldGetter); |
|
|
|
|
|
|
|
|
|
if (oneof != NULL) { |
|
|
|
|
GenerateFieldDocComment(printer, field, is_descriptor, kFieldGetter); |
|
|
|
|
printer->Print( |
|
|
|
|
"public function get^camel_name^()\n" |
|
|
|
|
"{\n" |
|
|
|
|
" return $this->readOneof(^number^);\n" |
|
|
|
|
"}\n\n" |
|
|
|
|
"public function has^camel_name^()\n" |
|
|
|
|
"{\n" |
|
|
|
|
" return $this->hasOneof(^number^);\n" |
|
|
|
|
"}\n\n", |
|
|
|
|
"camel_name", UnderscoresToCamelCase(field->name(), true), |
|
|
|
|
"number", IntToString(field->number())); |
|
|
|
|
} else if (field->has_presence()) { |
|
|
|
|
printer->Print( |
|
|
|
|
"public function get^camel_name^()\n" |
|
|
|
|
"{\n" |
|
|
|
|
" return isset($this->^name^) ? $this->^name^ : ^default_value^;\n" |
|
|
|
|
"}\n\n" |
|
|
|
|
"public function has^camel_name^()\n" |
|
|
|
|
"{\n" |
|
|
|
|
" return isset($this->^name^);\n" |
|
|
|
|
"}\n\n" |
|
|
|
|
"public function clear^camel_name^()\n" |
|
|
|
|
"{\n" |
|
|
|
|
" unset($this->^name^);\n" |
|
|
|
|
"}\n\n", |
|
|
|
|
"camel_name", UnderscoresToCamelCase(field->name(), true), |
|
|
|
|
"name", field->name(), |
|
|
|
|
"default_value", DefaultForField(field)); |
|
|
|
|
} else { |
|
|
|
|
GenerateFieldDocComment(printer, field, is_descriptor, kFieldGetter); |
|
|
|
|
printer->Print( |
|
|
|
|
"public function get^camel_name^()\n" |
|
|
|
|
"{\n" |
|
|
|
@ -878,7 +901,7 @@ void GenerateMessageToPool(const string& name_prefix, const Descriptor* message, |
|
|
|
|
"value", ToUpper(val->type_name()), |
|
|
|
|
"number", StrCat(field->number()), |
|
|
|
|
"other", EnumOrMessageSuffix(val, true)); |
|
|
|
|
} else if (!field->containing_oneof()) { |
|
|
|
|
} else if (!field->real_containing_oneof()) { |
|
|
|
|
printer->Print( |
|
|
|
|
"->^label^('^field^', " |
|
|
|
|
"\\Google\\Protobuf\\Internal\\GPBType::^type^, ^number^^other^)\n", |
|
|
|
@ -891,7 +914,7 @@ void GenerateMessageToPool(const string& name_prefix, const Descriptor* message, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// oneofs.
|
|
|
|
|
for (int i = 0; i < message->oneof_decl_count(); i++) { |
|
|
|
|
for (int i = 0; i < message->real_oneof_decl_count(); i++) { |
|
|
|
|
const OneofDescriptor* oneof = message->oneof_decl(i); |
|
|
|
|
printer->Print("->oneof(^name^)\n", |
|
|
|
|
"name", oneof->name()); |
|
|
|
@ -1414,7 +1437,7 @@ void GenerateMessageFile(const FileDescriptor* file, const Descriptor* message, |
|
|
|
|
const FieldDescriptor* field = message->field(i); |
|
|
|
|
GenerateField(field, &printer, is_descriptor); |
|
|
|
|
} |
|
|
|
|
for (int i = 0; i < message->oneof_decl_count(); i++) { |
|
|
|
|
for (int i = 0; i < message->real_oneof_decl_count(); i++) { |
|
|
|
|
const OneofDescriptor* oneof = message->oneof_decl(i); |
|
|
|
|
GenerateOneofField(oneof, &printer); |
|
|
|
|
} |
|
|
|
@ -1443,7 +1466,7 @@ void GenerateMessageFile(const FileDescriptor* file, const Descriptor* message, |
|
|
|
|
const FieldDescriptor* field = message->field(i); |
|
|
|
|
GenerateFieldAccessor(field, is_descriptor, &printer); |
|
|
|
|
} |
|
|
|
|
for (int i = 0; i < message->oneof_decl_count(); i++) { |
|
|
|
|
for (int i = 0; i < message->real_oneof_decl_count(); i++) { |
|
|
|
|
const OneofDescriptor* oneof = message->oneof_decl(i); |
|
|
|
|
printer.Print( |
|
|
|
|
"/**\n" |
|
|
|
|