Returns a qualifier instruction derived from a unoptimized ast.
| 191 | |
| 192 | // Returns a qualifier instruction derived from a unoptimized ast. |
| 193 | absl::StatusOr<QualifierInstruction> SelectInstructionFromConstant( |
| 194 | const Constant& constant) { |
| 195 | if (constant.has_int_value()) { |
| 196 | return QualifierInstruction(constant.int_value()); |
| 197 | } else if (constant.has_uint_value()) { |
| 198 | return QualifierInstruction(constant.uint_value()); |
| 199 | } else if (constant.has_bool_value()) { |
| 200 | return QualifierInstruction(constant.bool_value()); |
| 201 | } else if (constant.has_string_value()) { |
| 202 | return QualifierInstruction(constant.string_value()); |
| 203 | } else if (constant.has_double_value()) { |
| 204 | cel::internal::Number number(constant.double_value()); |
| 205 | if (number.LosslessConvertibleToInt()) { |
| 206 | return QualifierInstruction(number.AsInt()); |
| 207 | } else if (number.LosslessConvertibleToUint()) { |
| 208 | return QualifierInstruction(number.AsUint()); |
| 209 | } |
| 210 | } |
| 211 | |
| 212 | return absl::InvalidArgumentError("invalid index constant for cel.attribute"); |
| 213 | } |
| 214 | |
| 215 | absl::StatusOr<SelectQualifier> SelectQualifierFromConstant( |
| 216 | const Constant& constant) { |
no test coverage detected