| 185 | : Predicate(id), operands_(std::move(operands)) {} |
| 186 | |
| 187 | string ToString() const override { |
| 188 | if (operands().empty()) { |
| 189 | return "#false"; |
| 190 | } |
| 191 | |
| 192 | std::vector<string> operands_str; |
| 193 | std::transform(operands().begin(), operands().end(), |
| 194 | std::back_inserter(operands_str), |
| 195 | [](Predicate* pred) { return pred->ToString(); }); |
| 196 | |
| 197 | return absl::StrCat("(", absl::StrJoin(operands_str, " | "), ")"); |
| 198 | } |
| 199 | |
| 200 | Kind kind() const override { return Kind::kOr; } |
| 201 | absl::Span<Predicate* const> GetOperands() const override { |