| // Protocol Buffers - Google's data interchange format | |
| // Copyright 2008 Google Inc. All rights reserved. | |
| // | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file or at | |
| // https://developers.google.com/open-source/licenses/bsd | |
| // | |
| // This file contains definitions for the descriptors, so they can be used | |
| // without importing descriptor.h inside the lite runtime. | |
| // Users should include the public APIs in `descriptor.h`. | |
| #ifndef GOOGLE_PROTOBUF_DESCRIPTOR_LITE_H__ | |
| #define GOOGLE_PROTOBUF_DESCRIPTOR_LITE_H__ | |
| #include <cstdint> | |
| namespace google { | |
| namespace protobuf { | |
| namespace internal { | |
| class FieldDescriptorLite { | |
| public: | |
| // Identifies a field type. 0 is reserved for errors. | |
| // The order is weird for historical reasons. | |
| // Types 12 and up are new in proto2. | |
| enum Type { | |
| TYPE_DOUBLE = 1, // double, exactly eight bytes on the wire. | |
| TYPE_FLOAT = 2, // float, exactly four bytes on the wire. | |
| TYPE_INT64 = 3, // int64, varint on the wire. Negative numbers | |
| // take 10 bytes. Use TYPE_SINT64 if negative | |
| // values are likely. | |
| TYPE_UINT64 = 4, // uint64, varint on the wire. | |
| TYPE_INT32 = 5, // int32, varint on the wire. Negative numbers | |
| // take 10 bytes. Use TYPE_SINT32 if negative | |
| // values are likely. | |
| TYPE_FIXED64 = 6, // uint64, exactly eight bytes on the wire. | |
| TYPE_FIXED32 = 7, // uint32, exactly four bytes on the wire. | |
| TYPE_BOOL = 8, // bool, varint on the wire. | |
| TYPE_STRING = 9, // UTF-8 text. | |
| TYPE_GROUP = 10, // Tag-delimited message. Deprecated. | |
| TYPE_MESSAGE = 11, // Length-delimited message. | |
| TYPE_BYTES = 12, // Arbitrary byte array. | |
| TYPE_UINT32 = 13, // uint32, varint on the wire | |
| TYPE_ENUM = 14, // Enum, varint on the wire | |
| TYPE_SFIXED32 = 15, // int32, exactly four bytes on the wire | |
| TYPE_SFIXED64 = 16, // int64, exactly eight bytes on the wire | |
| TYPE_SINT32 = 17, // int32, ZigZag-encoded varint on the wire | |
| TYPE_SINT64 = 18, // int64, ZigZag-encoded varint on the wire | |
| MAX_TYPE = 18, // Constant useful for defining lookup tables | |
| // indexed by Type. | |
| }; | |
| // Specifies the C++ data type used to represent the field. There is a | |
| // fixed mapping from Type to CppType where each Type maps to exactly one | |
| // CppType. 0 is reserved for errors. | |
| enum CppType { | |
| CPPTYPE_INT32 = 1, // TYPE_INT32, TYPE_SINT32, TYPE_SFIXED32 | |
| CPPTYPE_INT64 = 2, // TYPE_INT64, TYPE_SINT64, TYPE_SFIXED64 | |
| CPPTYPE_UINT32 = 3, // TYPE_UINT32, TYPE_FIXED32 | |
| CPPTYPE_UINT64 = 4, // TYPE_UINT64, TYPE_FIXED64 | |
| CPPTYPE_DOUBLE = 5, // TYPE_DOUBLE | |
| CPPTYPE_FLOAT = 6, // TYPE_FLOAT | |
| CPPTYPE_BOOL = 7, // TYPE_BOOL | |
| CPPTYPE_ENUM = 8, // TYPE_ENUM | |
| CPPTYPE_STRING = 9, // TYPE_STRING, TYPE_BYTES | |
| CPPTYPE_MESSAGE = 10, // TYPE_MESSAGE, TYPE_GROUP | |
| MAX_CPPTYPE = 10, // Constant useful for defining lookup tables | |
| // indexed by CppType. | |
| }; | |
| // Identifies whether the field is optional, required, or repeated. 0 is | |
| // reserved for errors. | |
| enum Label { | |
| LABEL_OPTIONAL = 1, // optional | |
| LABEL_REQUIRED = 2, // required | |
| LABEL_REPEATED = 3, // repeated | |
| MAX_LABEL = 3, // Constant useful for defining lookup tables | |
| // indexed by Label. | |
| }; | |
| // Identifies the storage type of a C++ string field. This corresponds to | |
| // pb.CppFeatures.StringType, but is compatible with ctype prior to Edition | |
| // 2024. 0 is reserved for errors. | |
| #ifndef SWIG | |
| enum class CppStringType { | |
| kView = 1, | |
| kCord = 2, | |
| kString = 3, | |
| }; | |
| #endif | |
| // Identifies which repeated field API to use for a C++ repeated field. This | |
| // corresponds to pb.CppFeatures.RepeatedType. 0 is reserved for errors. | |
| #ifndef SWIG | |
| enum class CppRepeatedType : uint8_t { | |
| kRepeated = 1, | |
| kProxy = 2, | |
| }; | |
| #endif | |
| }; | |
| } // namespace internal | |
| } // namespace protobuf | |
| } // namespace google | |
| #endif // GOOGLE_PROTOBUF_DESCRIPTOR_LITE_H__ |