31 #include <google/protobuf/generated_enum_util.h>
35 #include <google/protobuf/generated_message_util.h>
42 bool EnumCompareByName(
const EnumEntry& a,
const EnumEntry&
b) {
43 return StringPiece(
a.name) < StringPiece(
b.name);
49 int GetValue(
const EnumEntry* enums,
int i,
int target) {
53 return enums[
i].value;
62 auto it = std::lower_bound(enums, enums +
size,
target, EnumCompareByName);
70 int LookUpEnumName(
const EnumEntry* enums,
const int* sorted_indices,
72 auto comparator = [enums,
value](
int a,
int b) {
73 return GetValue(enums, a,
value) < GetValue(enums,
b,
value);
76 std::lower_bound(sorted_indices, sorted_indices +
size, -1, comparator);
78 return it - sorted_indices;
84 const EnumEntry* enums,
const int* sorted_indices,
size_t size,
85 internal::ExplicitlyConstructed<std::string>* enum_strings) {
86 for (
size_t i = 0;
i <
size; ++
i) {
87 enum_strings[
i].Construct(enums[sorted_indices[i]].
name);