File indexing completed on 2025-01-31 10:11:55
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #ifndef GOOGLE_PROTOBUF_COMPILER_CPP_ENUM_H__
0013 #define GOOGLE_PROTOBUF_COMPILER_CPP_ENUM_H__
0014
0015 #include <string>
0016
0017 #include "google/protobuf/compiler/cpp/options.h"
0018 #include "google/protobuf/descriptor.h"
0019 #include "google/protobuf/io/printer.h"
0020
0021 namespace google {
0022 namespace protobuf {
0023 namespace compiler {
0024 namespace cpp {
0025 class EnumGenerator {
0026 public:
0027 EnumGenerator(const EnumDescriptor* descriptor, const Options& options);
0028
0029 EnumGenerator(const EnumGenerator&) = delete;
0030 EnumGenerator& operator=(const EnumGenerator&) = delete;
0031
0032 ~EnumGenerator() = default;
0033
0034
0035
0036
0037 void GenerateDefinition(io::Printer* p);
0038
0039
0040
0041 void GenerateGetEnumDescriptorSpecializations(io::Printer* p);
0042
0043
0044
0045
0046
0047
0048 void GenerateSymbolImports(io::Printer* p) const;
0049
0050
0051
0052
0053
0054
0055 void GenerateMethods(int idx, io::Printer* p);
0056
0057 private:
0058 friend class FileGenerator;
0059
0060 struct ValueLimits {
0061 const EnumValueDescriptor* min;
0062 const EnumValueDescriptor* max;
0063
0064 static ValueLimits FromEnum(const EnumDescriptor* descriptor);
0065 };
0066
0067 const EnumDescriptor* enum_;
0068 Options options_;
0069
0070 bool generate_array_size_;
0071 bool should_cache_;
0072 bool has_reflection_;
0073 ValueLimits limits_;
0074 };
0075
0076 }
0077 }
0078 }
0079 }
0080
0081 #endif