548fdbda19
* Remove unused constants. Bug: 66996870 Test: build with WITH_TIDY=1 Change-Id: I43940e8c446bab25b8fa841ec8c17885ab5d88ed
101 lines
2.8 KiB
C++
101 lines
2.8 KiB
C++
#include "stream_proto_utils.h"
|
|
|
|
namespace android {
|
|
namespace stream_proto {
|
|
|
|
/**
|
|
* Position of the field type in a (long long) fieldId.
|
|
*/
|
|
const uint64_t FIELD_TYPE_SHIFT = 32;
|
|
|
|
//
|
|
// FieldId flags for whether the field is single, repeated or packed.
|
|
// TODO: packed is not supported yet.
|
|
//
|
|
const uint64_t FIELD_COUNT_SHIFT = 40;
|
|
const uint64_t FIELD_COUNT_SINGLE = 1ULL << FIELD_COUNT_SHIFT;
|
|
const uint64_t FIELD_COUNT_REPEATED = 2ULL << FIELD_COUNT_SHIFT;
|
|
const uint64_t FIELD_COUNT_PACKED = 5ULL << FIELD_COUNT_SHIFT;
|
|
|
|
uint64_t
|
|
get_field_id(const FieldDescriptorProto& field)
|
|
{
|
|
// Number
|
|
uint64_t result = (uint32_t)field.number();
|
|
|
|
// Type
|
|
result |= (uint64_t)field.type() << FIELD_TYPE_SHIFT;
|
|
|
|
// Count
|
|
if (field.options().packed()) {
|
|
result |= FIELD_COUNT_PACKED;
|
|
} else if (field.label() == FieldDescriptorProto::LABEL_REPEATED) {
|
|
result |= FIELD_COUNT_REPEATED;
|
|
} else {
|
|
result |= FIELD_COUNT_SINGLE;
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
string
|
|
get_proto_type(const FieldDescriptorProto& field)
|
|
{
|
|
switch (field.type()) {
|
|
case FieldDescriptorProto::TYPE_DOUBLE:
|
|
return "double";
|
|
case FieldDescriptorProto::TYPE_FLOAT:
|
|
return "float";
|
|
case FieldDescriptorProto::TYPE_INT64:
|
|
return "int64";
|
|
case FieldDescriptorProto::TYPE_UINT64:
|
|
return "uint64";
|
|
case FieldDescriptorProto::TYPE_INT32:
|
|
return "int32";
|
|
case FieldDescriptorProto::TYPE_FIXED64:
|
|
return "fixed64";
|
|
case FieldDescriptorProto::TYPE_FIXED32:
|
|
return "fixed32";
|
|
case FieldDescriptorProto::TYPE_BOOL:
|
|
return "bool";
|
|
case FieldDescriptorProto::TYPE_STRING:
|
|
return "string";
|
|
case FieldDescriptorProto::TYPE_GROUP:
|
|
return "group<unsupported!>";
|
|
case FieldDescriptorProto::TYPE_MESSAGE:
|
|
return field.type_name();
|
|
case FieldDescriptorProto::TYPE_BYTES:
|
|
return "bytes";
|
|
case FieldDescriptorProto::TYPE_UINT32:
|
|
return "uint32";
|
|
case FieldDescriptorProto::TYPE_ENUM:
|
|
return field.type_name();
|
|
case FieldDescriptorProto::TYPE_SFIXED32:
|
|
return "sfixed32";
|
|
case FieldDescriptorProto::TYPE_SFIXED64:
|
|
return "sfixed64";
|
|
case FieldDescriptorProto::TYPE_SINT32:
|
|
return "sint32";
|
|
case FieldDescriptorProto::TYPE_SINT64:
|
|
return "sint64";
|
|
default:
|
|
// won't happen
|
|
return "void";
|
|
}
|
|
}
|
|
|
|
bool
|
|
should_generate_for_file(const CodeGeneratorRequest& request, const string& file)
|
|
{
|
|
const int N = request.file_to_generate_size();
|
|
for (int i=0; i<N; i++) {
|
|
if (request.file_to_generate(i) == file) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
} // stream_proto
|
|
} // android
|