blob: ddd7252e6c5c4b677e9f6f512fb0f41673731fa6 [file] [log] [blame]
#include "google/protobuf/compiler/rust/rust_field_type.h"
#include "absl/log/absl_log.h"
#include "google/protobuf/descriptor.h"
namespace google {
namespace protobuf {
namespace compiler {
namespace rust {
RustFieldType GetRustFieldType(const FieldDescriptor& field) {
return GetRustFieldType(field.type());
}
RustFieldType GetRustFieldType(FieldDescriptor::Type type) {
switch (type) {
case FieldDescriptor::TYPE_BOOL:
return RustFieldType::BOOL;
case FieldDescriptor::TYPE_INT32:
case FieldDescriptor::TYPE_SINT32:
case FieldDescriptor::TYPE_SFIXED32:
return RustFieldType::INT32;
case FieldDescriptor::TYPE_INT64:
case FieldDescriptor::TYPE_SINT64:
case FieldDescriptor::TYPE_SFIXED64:
return RustFieldType::INT64;
case FieldDescriptor::TYPE_FIXED32:
case FieldDescriptor::TYPE_UINT32:
return RustFieldType::UINT32;
case FieldDescriptor::TYPE_FIXED64:
case FieldDescriptor::TYPE_UINT64:
return RustFieldType::UINT64;
case FieldDescriptor::TYPE_FLOAT:
return RustFieldType::FLOAT;
case FieldDescriptor::TYPE_DOUBLE:
return RustFieldType::DOUBLE;
case FieldDescriptor::TYPE_BYTES:
return RustFieldType::BYTES;
case FieldDescriptor::TYPE_STRING:
return RustFieldType::STRING;
case FieldDescriptor::TYPE_MESSAGE:
case FieldDescriptor::TYPE_GROUP:
return RustFieldType::MESSAGE;
case FieldDescriptor::TYPE_ENUM:
return RustFieldType::ENUM;
}
ABSL_LOG(FATAL) << "Unknown field type: " << type;
}
} // namespace rust
} // namespace compiler
} // namespace protobuf
} // namespace google