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

Function EmitFunctionConfigs

env/env_yaml.cc:941–998  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

939}
940
941void EmitFunctionConfigs(const Config& env_config, YAML::Emitter& out) {
942 const std::vector<Config::FunctionConfig>& function_configs =
943 env_config.GetFunctionConfigs();
944 if (function_configs.empty()) {
945 return;
946 }
947
948 // Sort function_configs by name to ensure deterministic output.
949 std::vector<Config::FunctionConfig> sorted_function_configs =
950 function_configs;
951 absl::c_sort(sorted_function_configs,
952 [](const Config::FunctionConfig& a,
953 const Config::FunctionConfig& b) { return a.name < b.name; });
954
955 out << YAML::Key << "functions";
956 out << YAML::Value << YAML::BeginSeq;
957 for (const Config::FunctionConfig& function_config :
958 sorted_function_configs) {
959 out << YAML::BeginMap;
960 out << YAML::Key << "name";
961 out << YAML::Value << YAML::DoubleQuoted << function_config.name;
962 if (!function_config.description.empty()) {
963 out << YAML::Key << "description";
964 out << YAML::Value << YAML::DoubleQuoted << function_config.description;
965 }
966 if (!function_config.overload_configs.empty()) {
967 // Sort overloads for deterministic output.
968 std::vector<Config::FunctionOverloadConfig> sorted_overloads =
969 function_config.overload_configs;
970 absl::c_sort(sorted_overloads,
971 [](const Config::FunctionOverloadConfig& a,
972 const Config::FunctionOverloadConfig& b) {
973 for (size_t i = 0; i < a.parameters.size(); ++i) {
974 // Order like this: foo(a), foo(a, b)
975 if (i >= b.parameters.size()) {
976 return false;
977 }
978 if (CompareTypeInfo(a.parameters[i], b.parameters[i])) {
979 return true;
980 }
981 if (CompareTypeInfo(b.parameters[i], a.parameters[i])) {
982 return false;
983 }
984 }
985 return false;
986 });
987
988 out << YAML::Key << "overloads" << YAML::Value << YAML::BeginSeq;
989 for (const Config::FunctionOverloadConfig& overload_config :
990 sorted_overloads) {
991 EmitFunctionOverloadConfig(overload_config, out);
992 }
993 out << YAML::EndSeq;
994 }
995 out << YAML::EndMap;
996 }
997 out << YAML::EndSeq;
998}

Callers 1

EnvConfigToYamlFunction · 0.85

Calls 4

CompareTypeInfoFunction · 0.85
emptyMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected