Допустим, у меня есть файл .proto с:
message Foo {
optional int32 x = 1;
enum y {
MOBILE = 0;
HOME = 1;
}
optional string z = 3;
}
Тогда у меня есть код C ++, который печатает все типы:
const Reflection *refl = Foo.GetReflection();
const Descriptor *desc = Foo.GetDescriptor();
int fieldCount = desc->field_count();
for(int i=0;i<fieldCount;i++){
const FieldDescriptor *field = desc->field(i);
cout << field->name().c_str() << " the type is "
<<field->type_name()<< ": Type Number "<< field->type() <<endl;
if(field->type()==FieldDescriptor::TYPE_ENUM){
//do something
}
Тогда вывод:
x the type is int32: Type Number 5
z the type is string: Type Number 9
Как видно из выходных данных, перечисление пропущено, как мне заставить дескриптор поля также анализировать перечисление?