File indexing completed on 2025-01-31 10:11:57
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #ifndef GOOGLE_PROTOBUF_COMPILER_JAVA_ENUM_H__
0013 #define GOOGLE_PROTOBUF_COMPILER_JAVA_ENUM_H__
0014
0015 #include <string>
0016 #include <vector>
0017
0018 #include "google/protobuf/compiler/java/generator_factory.h"
0019 #include "google/protobuf/descriptor.h"
0020
0021 namespace google {
0022 namespace protobuf {
0023 namespace compiler {
0024 namespace java {
0025 class Context;
0026 class ClassNameResolver;
0027 }
0028 }
0029 namespace io {
0030 class Printer;
0031 }
0032 }
0033 }
0034
0035 namespace google {
0036 namespace protobuf {
0037 namespace compiler {
0038 namespace java {
0039
0040
0041
0042
0043 class EnumNonLiteGenerator : public EnumGenerator {
0044 public:
0045 EnumNonLiteGenerator(const EnumDescriptor* descriptor, bool immutable_api,
0046 Context* context);
0047 EnumNonLiteGenerator(const EnumNonLiteGenerator&) = delete;
0048 EnumNonLiteGenerator& operator=(const EnumNonLiteGenerator&) = delete;
0049
0050 void Generate(io::Printer* printer) override;
0051
0052 private:
0053 const EnumDescriptor* descriptor_;
0054
0055
0056
0057
0058
0059
0060 std::vector<const EnumValueDescriptor*> canonical_values_;
0061
0062 struct Alias {
0063 const EnumValueDescriptor* value;
0064 const EnumValueDescriptor* canonical_value;
0065 };
0066 std::vector<Alias> aliases_;
0067
0068 bool immutable_api_;
0069
0070 Context* context_;
0071 ClassNameResolver* name_resolver_;
0072
0073 bool CanUseEnumValues();
0074
0075 };
0076
0077 }
0078 }
0079 }
0080 }
0081
0082 #endif