• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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