diff options
author | Jisi Liu <jisi.liu@gmail.com> | 2015-02-17 21:15:20 -0800 |
---|---|---|
committer | Jisi Liu <jisi.liu@gmail.com> | 2015-02-19 16:43:07 -0800 |
commit | c72d3d51ff70944d7f9f5f8b1173920ca246d5b3 (patch) | |
tree | 5ff42e4eb7df0dc0316fdd0b0d946c90a0b8f0e3 /src/google/protobuf/compiler/javanano/javanano_message_field.cc | |
parent | 7794a98ff43776491d4f3434ea3ec32c8146970a (diff) | |
download | protobuf-c72d3d51ff70944d7f9f5f8b1173920ca246d5b3.tar.gz protobuf-c72d3d51ff70944d7f9f5f8b1173920ca246d5b3.tar.bz2 protobuf-c72d3d51ff70944d7f9f5f8b1173920ca246d5b3.zip |
Oneof message level elements (consts, case getter/clear) and messsage type field oneof support.
Diffstat (limited to 'src/google/protobuf/compiler/javanano/javanano_message_field.cc')
-rw-r--r-- | src/google/protobuf/compiler/javanano/javanano_message_field.cc | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/src/google/protobuf/compiler/javanano/javanano_message_field.cc b/src/google/protobuf/compiler/javanano/javanano_message_field.cc index 425f7ae3..63bc7195 100644 --- a/src/google/protobuf/compiler/javanano/javanano_message_field.cc +++ b/src/google/protobuf/compiler/javanano/javanano_message_field.cc @@ -157,6 +157,69 @@ MessageOneofFieldGenerator::MessageOneofFieldGenerator( MessageOneofFieldGenerator::~MessageOneofFieldGenerator() {} +void MessageOneofFieldGenerator:: +GenerateMembers(io::Printer* printer, bool /* unused lazy_init */) const { + printer->Print(variables_, + "public boolean has$capitalized_name$() {\n" + " return $has_oneof_case$;\n" + "}\n" + "public $type$ get$capitalized_name$() {\n" + " if ($has_oneof_case$) {\n" + " return ($type$) this.$oneof_name$_;\n" + " }\n" + " return null;\n" + "}\n" + "public $message_name$ set$capitalized_name$($type$ value) {\n" + " if (value == null) { throw new java.lang.NullPointerException(); }\n" + " $set_oneof_case$;\n" + " this.$oneof_name$_ = value;\n" + " return this;\n" + "}\n"); +} + +void MessageOneofFieldGenerator:: +GenerateClearCode(io::Printer* printer) const { + // No clear method for oneof fields. +} + +void MessageOneofFieldGenerator:: +GenerateMergingCode(io::Printer* printer) const { + printer->Print(variables_, + "if (!($has_oneof_case$)) {\n" + " this.$oneof_name$_ = new $type$();\n" + "}\n" + "input.readMessage(\n" + " (com.google.protobuf.nano.MessageNano) this.$oneof_name$_);\n" + "$set_oneof_case$;\n"); +} + +void MessageOneofFieldGenerator:: +GenerateSerializationCode(io::Printer* printer) const { + printer->Print(variables_, + "if ($has_oneof_case$) {\n" + " output.writeMessage($number$,\n" + " (com.google.protobuf.nano.MessageNano) this.$oneof_name$_);\n" + "}\n"); +} + +void MessageOneofFieldGenerator:: +GenerateSerializedSizeCode(io::Printer* printer) const { + printer->Print(variables_, + "if ($has_oneof_case$) {\n" + " size += com.google.protobuf.nano.CodedOutputByteBufferNano\n" + " .computeMessageSize($number$,\n" + " (com.google.protobuf.nano.MessageNano) this.$oneof_name$_);\n" + "}\n"); +} + +void MessageOneofFieldGenerator:: +GenerateEqualsCode(io::Printer* printer) const { +} + +void MessageOneofFieldGenerator:: +GenerateHashCodeCode(io::Printer* printer) const { +} + // =================================================================== RepeatedMessageFieldGenerator::RepeatedMessageFieldGenerator( |