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: kenton@google.com (Kenton Varda) 9 // Based on original Protocol Buffers design by 10 // Sanjay Ghemawat, Jeff Dean, and others. 11 12 #ifndef GOOGLE_PROTOBUF_COMPILER_JAVA_EXTENSION_H__ 13 #define GOOGLE_PROTOBUF_COMPILER_JAVA_EXTENSION_H__ 14 15 #include <string> 16 17 #include "absl/container/flat_hash_map.h" 18 #include "google/protobuf/compiler/java/generator_factory.h" 19 #include "google/protobuf/port.h" 20 21 namespace google { 22 namespace protobuf { 23 class FieldDescriptor; // descriptor.h 24 namespace compiler { 25 namespace java { 26 class Context; // context.h 27 class ClassNameResolver; // name_resolver.h 28 } // namespace java 29 } // namespace compiler 30 namespace io { 31 class Printer; // printer.h 32 } 33 } // namespace protobuf 34 } // namespace google 35 36 namespace google { 37 namespace protobuf { 38 namespace compiler { 39 namespace java { 40 41 class ImmutableExtensionGenerator : public ExtensionGenerator { 42 public: 43 explicit ImmutableExtensionGenerator(const FieldDescriptor* descriptor, 44 Context* context); 45 ImmutableExtensionGenerator(const ImmutableExtensionGenerator&) = delete; 46 ImmutableExtensionGenerator& operator=(const ImmutableExtensionGenerator&) = 47 delete; 48 ~ImmutableExtensionGenerator() override; 49 50 void Generate(io::Printer* printer) override; 51 int GenerateNonNestedInitializationCode(io::Printer* printer) override; 52 int GenerateRegistrationCode(io::Printer* printer) override; 53 54 protected: 55 const FieldDescriptor* descriptor_; 56 ClassNameResolver* name_resolver_; 57 std::string scope_; 58 Context* context_; 59 }; 60 61 } // namespace java 62 } // namespace compiler 63 } // namespace protobuf 64 } // namespace google 65 66 #endif // GOOGLE_PROTOBUF_COMPILER_JAVA_EXTENSION_H__ 67