1 // Protocol Buffers - Google's data interchange format 2 // Copyright 2008 Google Inc. All rights reserved. 3 // 4 // Use of this source code is governed by a BSD-style 5 // license that can be found in the LICENSE file or at 6 // https://developers.google.com/open-source/licenses/bsd 7 8 // Author: dweis@google.com (Daniel Weis) 9 // Based on original Protocol Buffers design by 10 // Sanjay Ghemawat, Jeff Dean, and others. 11 12 #ifndef GOOGLE_PROTOBUF_COMPILER_JAVA_MESSAGE_LITE_H__ 13 #define GOOGLE_PROTOBUF_COMPILER_JAVA_MESSAGE_LITE_H__ 14 15 #include <memory> 16 #include <vector> 17 18 #include "google/protobuf/compiler/java/context.h" 19 #include "google/protobuf/compiler/java/generator_common.h" 20 #include "google/protobuf/compiler/java/generator_factory.h" 21 #include "google/protobuf/compiler/java/lite/field_generator.h" 22 #include "google/protobuf/compiler/java/name_resolver.h" 23 #include "google/protobuf/descriptor.h" 24 #include "google/protobuf/io/printer.h" 25 26 namespace google { 27 namespace protobuf { 28 namespace compiler { 29 namespace java { 30 31 class ImmutableMessageLiteGenerator : public MessageGenerator { 32 public: 33 ImmutableMessageLiteGenerator(const Descriptor* descriptor, Context* context); 34 ImmutableMessageLiteGenerator(const ImmutableMessageLiteGenerator&) = delete; 35 ImmutableMessageLiteGenerator& operator=( 36 const ImmutableMessageLiteGenerator&) = delete; 37 ~ImmutableMessageLiteGenerator() override; 38 39 void Generate(io::Printer* printer) override; 40 void GenerateInterface(io::Printer* printer) override; 41 void GenerateExtensionRegistrationCode(io::Printer* printer) override; 42 void GenerateStaticVariables(io::Printer* printer, 43 int* bytecode_estimate) override; 44 int GenerateStaticVariableInitializers(io::Printer* printer) override; 45 46 private: 47 void GenerateParseFromMethods(io::Printer* printer); 48 49 void GenerateBuilder(io::Printer* printer); 50 void GenerateDynamicMethodNewBuilder(io::Printer* printer); 51 void GenerateInitializers(io::Printer* printer); 52 void GenerateParser(io::Printer* printer); 53 void GenerateConstructor(io::Printer* printer); 54 void GenerateDynamicMethodNewBuildMessageInfo(io::Printer* printer); 55 56 Context* context_; 57 ClassNameResolver* name_resolver_; 58 FieldGeneratorMap<ImmutableFieldLiteGenerator> field_generators_; 59 }; 60 61 } // namespace java 62 } // namespace compiler 63 } // namespace protobuf 64 } // namespace google 65 66 #endif // GOOGLE_PROTOBUF_COMPILER_JAVA_MESSAGE_LITE_H__ 67