|
@@ -0,0 +1,85 @@
|
|
|
|
|
+// Protocol Buffers - Google's data interchange format
|
|
|
|
|
+// Copyright 2008 Google Inc. All rights reserved.
|
|
|
|
|
+// http://code.google.com/p/protobuf/
|
|
|
|
|
+//
|
|
|
|
|
+// 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.
|
|
|
|
|
+
|
|
|
|
|
+#include <google/protobuf/compiler/javanano/javanano_map_field.h>
|
|
|
|
|
+#include <google/protobuf/compiler/javanano/javanano_helpers.h>
|
|
|
|
|
+#include <google/protobuf/stubs/common.h>
|
|
|
|
|
+#include <google/protobuf/io/printer.h>
|
|
|
|
|
+#include <google/protobuf/wire_format.h>
|
|
|
|
|
+#include <google/protobuf/stubs/strutil.h>
|
|
|
|
|
+
|
|
|
|
|
+namespace google {
|
|
|
|
|
+namespace protobuf {
|
|
|
|
|
+namespace compiler {
|
|
|
|
|
+namespace javanano {
|
|
|
|
|
+
|
|
|
|
|
+namespace {
|
|
|
|
|
+
|
|
|
|
|
+void SetMapVariables(const Params& params,
|
|
|
|
|
+ const FieldDescriptor* descriptor, map<string, string>* variables) {
|
|
|
|
|
+ (*variables)["name"] =
|
|
|
|
|
+ RenameJavaKeywords(UnderscoresToCamelCase(descriptor));
|
|
|
|
|
+ (*variables)["capitalized_name"] =
|
|
|
|
|
+ RenameJavaKeywords(UnderscoresToCapitalizedCamelCase(descriptor));
|
|
|
|
|
+ (*variables)["number"] = SimpleItoa(descriptor->number());
|
|
|
|
|
+ (*variables)["type"] = "java.lang.Integer";
|
|
|
|
|
+ (*variables)["default"] = "null";
|
|
|
|
|
+ (*variables)["tag"] = SimpleItoa(internal::WireFormat::MakeTag(descriptor));
|
|
|
|
|
+ (*variables)["tag_size"] = SimpleItoa(
|
|
|
|
|
+ internal::WireFormat::TagSize(descriptor->number(), descriptor->type()));
|
|
|
|
|
+ (*variables)["message_name"] = descriptor->containing_type()->name();
|
|
|
|
|
+}
|
|
|
|
|
+} // namespace
|
|
|
|
|
+
|
|
|
|
|
+// ===================================================================
|
|
|
|
|
+MapFieldGenerator::MapFieldGenerator(const FieldDescriptor* descriptor,
|
|
|
|
|
+ const Params& params)
|
|
|
|
|
+ : FieldGenerator(params), descriptor_(descriptor) {
|
|
|
|
|
+ SetMapVariables(params, descriptor, &variables_);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+MapFieldGenerator::~MapFieldGenerator() {}
|
|
|
|
|
+
|
|
|
|
|
+void MapFieldGenerator::
|
|
|
|
|
+GenerateMembers(io::Printer* printer, bool /* unused lazy_init */) const {
|
|
|
|
|
+ printer->Print(variables_,
|
|
|
|
|
+ "public $type$ $name$;\n");
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+void MapFieldGenerator::
|
|
|
|
|
+GenerateClearCode(io::Printer* printer) const {
|
|
|
|
|
+ printer->Print(variables_,
|
|
|
|
|
+ "$name$ = null;\n");
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+} // namespace javanano
|
|
|
|
|
+} // namespace compiler
|
|
|
|
|
+} // namespace protobuf
|
|
|
|
|
+} // namespace google
|