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

Function FlattenExpressionTable

eval/compiler/flat_expr_builder.cc:2494–2514  ·  view source on GitHub ↗

Flattens the expression table into the end of the mainline expression vector and returns an index to the individual sub expressions.

Source from the content-addressed store, hash-verified

2492// Flattens the expression table into the end of the mainline expression vector
2493// and returns an index to the individual sub expressions.
2494std::vector<ExecutionPathView> FlattenExpressionTable(
2495 ProgramBuilder& program_builder, ExecutionPath& main) {
2496 std::vector<std::pair<size_t, size_t>> ranges;
2497 main = program_builder.FlattenMain();
2498 ranges.push_back(std::make_pair(0, main.size()));
2499
2500 std::vector<ExecutionPath> subexpressions =
2501 program_builder.FlattenSubexpressions();
2502 for (auto& subexpression : subexpressions) {
2503 ranges.push_back(std::make_pair(main.size(), subexpression.size()));
2504 absl::c_move(subexpression, std::back_inserter(main));
2505 }
2506
2507 std::vector<ExecutionPathView> subexpression_indexes;
2508 subexpression_indexes.reserve(ranges.size());
2509 for (const auto& range : ranges) {
2510 subexpression_indexes.push_back(
2511 absl::MakeSpan(main).subspan(range.first, range.second));
2512 }
2513 return subexpression_indexes;
2514}
2515
2516absl::Status CheckAstExtensions(
2517 const std::vector<cel::ExtensionSpec>& extensions) {

Callers 1

CreateExpressionImplMethod · 0.85

Calls 3

FlattenMainMethod · 0.80
FlattenSubexpressionsMethod · 0.80
sizeMethod · 0.45

Tested by

no test coverage detected