MCPcopy Create free account
hub / github.com/cel-expr/cel-cpp / RegisterProtobufEnum

Function RegisterProtobufEnum

extensions/protobuf/enum_adapter.cc:27–46  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

25namespace cel::extensions {
26
27absl::Status RegisterProtobufEnum(
28 TypeRegistry& registry, const google::protobuf::EnumDescriptor* enum_descriptor) {
29 if (registry.resolveable_enums().contains(enum_descriptor->full_name())) {
30 return absl::AlreadyExistsError(
31 absl::StrCat(enum_descriptor->full_name(), " already registered."));
32 }
33
34 // TODO(uncreated-issue/42): the registry enum implementation runs linear lookups for
35 // constants since this isn't expected to happen at runtime. Consider updating
36 // if / when strong enum typing is implemented.
37 std::vector<TypeRegistry::Enumerator> enumerators;
38 enumerators.reserve(enum_descriptor->value_count());
39 for (int i = 0; i < enum_descriptor->value_count(); i++) {
40 enumerators.push_back({std::string(enum_descriptor->value(i)->name()),
41 enum_descriptor->value(i)->number()});
42 }
43 registry.RegisterEnum(enum_descriptor->full_name(), std::move(enumerators));
44
45 return absl::OkStatus();
46}
47
48} // namespace cel::extensions

Callers 1

SetupMethod · 0.85

Calls 4

numberMethod · 0.80
nameMethod · 0.45
valueMethod · 0.45
RegisterEnumMethod · 0.45

Tested by

no test coverage detected