| 126 | key_list_(values) {} |
| 127 | |
| 128 | absl::StatusOr<bool> Has(const CelValue& key) const override { |
| 129 | CelValue::StringHolder str_key; |
| 130 | if (!key.GetValue(&str_key)) { |
| 131 | // Not a string key. |
| 132 | return absl::InvalidArgumentError(absl::StrCat( |
| 133 | "Invalid map key type: '", CelValue::TypeName(key.type()), "'")); |
| 134 | } |
| 135 | |
| 136 | return values_->fields().contains(std::string(str_key.value())); |
| 137 | } |
| 138 | |
| 139 | absl::optional<CelValue> operator[](CelValue key) const override; |
| 140 |