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 #ifndef GOOGLE_PROTOBUF_COMPILER_JAVA_MAP_FIELD_LITE_H__ 9 #define GOOGLE_PROTOBUF_COMPILER_JAVA_MAP_FIELD_LITE_H__ 10 11 #include <cstdint> 12 #include <string> 13 #include <vector> 14 15 #include "absl/container/flat_hash_map.h" 16 #include "absl/strings/string_view.h" 17 #include "google/protobuf/compiler/java/context.h" 18 #include "google/protobuf/compiler/java/lite/field_generator.h" 19 #include "google/protobuf/descriptor.h" 20 21 namespace google { 22 namespace protobuf { 23 namespace compiler { 24 namespace java { 25 26 class ImmutableMapFieldLiteGenerator : public ImmutableFieldLiteGenerator { 27 public: 28 explicit ImmutableMapFieldLiteGenerator(const FieldDescriptor* descriptor, 29 int messageBitIndex, 30 Context* context); 31 ~ImmutableMapFieldLiteGenerator() override; 32 33 // implements ImmutableFieldLiteGenerator ------------------------------------ 34 int GetNumBitsForMessage() const override; 35 void GenerateInterfaceMembers(io::Printer* printer) const override; 36 void GenerateMembers(io::Printer* printer) const override; 37 void GenerateBuilderMembers(io::Printer* printer) const override; 38 void GenerateInitializationCode(io::Printer* printer) const override; 39 void GenerateFieldInfo(io::Printer* printer, 40 std::vector<uint16_t>* output) const override; 41 void GenerateKotlinDslMembers(io::Printer* printer) const override; 42 43 std::string GetBoxedType() const override; 44 45 private: 46 const FieldDescriptor* descriptor_; 47 absl::flat_hash_map<absl::string_view, std::string> variables_; 48 Context* context_; 49 ClassNameResolver* name_resolver_; 50 }; 51 52 } // namespace java 53 } // namespace compiler 54 } // namespace protobuf 55 } // namespace google 56 57 #endif // GOOGLE_PROTOBUF_COMPILER_JAVA_MAP_FIELD_LITE_H__ 58