|
39 | 39 | #include "common/native_type.h"
|
40 | 40 | #include "common/optional_ref.h"
|
41 | 41 | #include "common/type.h"
|
| 42 | +#include "common/typeinfo.h" |
42 | 43 | #include "common/value_kind.h"
|
43 | 44 | #include "common/values/bool_value.h" // IWYU pragma: export
|
44 | 45 | #include "common/values/bytes_value.h" // IWYU pragma: export
|
@@ -2537,6 +2538,75 @@ ErrorValueAssign::operator()(absl::Status status) const {
|
2537 | 2538 | return common_internal::ImplicitlyConvertibleStatus();
|
2538 | 2539 | }
|
2539 | 2540 |
|
| 2541 | +inline absl::StatusOr<Value> StringValue::Join( |
| 2542 | + const ListValue& list, |
| 2543 | + const google::protobuf::DescriptorPool* absl_nonnull descriptor_pool, |
| 2544 | + google::protobuf::MessageFactory* absl_nonnull message_factory, |
| 2545 | + google::protobuf::Arena* absl_nonnull arena) const { |
| 2546 | + ABSL_DCHECK(descriptor_pool != nullptr); |
| 2547 | + ABSL_DCHECK(message_factory != nullptr); |
| 2548 | + ABSL_DCHECK(arena != nullptr); |
| 2549 | + |
| 2550 | + Value result; |
| 2551 | + CEL_RETURN_IF_ERROR( |
| 2552 | + Join(list, descriptor_pool, message_factory, arena, &result)); |
| 2553 | + return result; |
| 2554 | +} |
| 2555 | + |
| 2556 | +inline absl::StatusOr<Value> StringValue::Split( |
| 2557 | + const StringValue& delimiter, int64_t limit, |
| 2558 | + google::protobuf::Arena* absl_nonnull arena) const { |
| 2559 | + ABSL_DCHECK(arena != nullptr); |
| 2560 | + |
| 2561 | + Value result; |
| 2562 | + CEL_RETURN_IF_ERROR(Split(delimiter, limit, arena, &result)); |
| 2563 | + return result; |
| 2564 | +} |
| 2565 | + |
| 2566 | +inline absl::Status StringValue::Split(const StringValue& delimiter, |
| 2567 | + google::protobuf::Arena* absl_nonnull arena, |
| 2568 | + Value* absl_nonnull result) const { |
| 2569 | + ABSL_DCHECK(arena != nullptr); |
| 2570 | + ABSL_DCHECK(result != nullptr); |
| 2571 | + |
| 2572 | + return Split(delimiter, /*limit=*/-1, arena, result); |
| 2573 | +} |
| 2574 | + |
| 2575 | +inline absl::StatusOr<Value> StringValue::Split( |
| 2576 | + const StringValue& delimiter, google::protobuf::Arena* absl_nonnull arena) const { |
| 2577 | + ABSL_DCHECK(arena != nullptr); |
| 2578 | + |
| 2579 | + return Split(delimiter, /*limit=*/-1, arena); |
| 2580 | +} |
| 2581 | + |
| 2582 | +inline absl::StatusOr<Value> StringValue::Replace( |
| 2583 | + const StringValue& needle, const StringValue& replacement, int64_t limit, |
| 2584 | + google::protobuf::Arena* absl_nonnull arena) const { |
| 2585 | + ABSL_DCHECK(arena != nullptr); |
| 2586 | + |
| 2587 | + Value result; |
| 2588 | + CEL_RETURN_IF_ERROR(Replace(needle, replacement, limit, arena, &result)); |
| 2589 | + return result; |
| 2590 | +} |
| 2591 | + |
| 2592 | +inline absl::Status StringValue::Replace(const StringValue& needle, |
| 2593 | + const StringValue& replacement, |
| 2594 | + google::protobuf::Arena* absl_nonnull arena, |
| 2595 | + Value* absl_nonnull result) const { |
| 2596 | + ABSL_DCHECK(arena != nullptr); |
| 2597 | + ABSL_DCHECK(result != nullptr); |
| 2598 | + |
| 2599 | + return Replace(needle, replacement, /*limit=*/-1, arena, result); |
| 2600 | +} |
| 2601 | + |
| 2602 | +inline absl::StatusOr<Value> StringValue::Replace( |
| 2603 | + const StringValue& needle, const StringValue& replacement, |
| 2604 | + google::protobuf::Arena* absl_nonnull arena) const { |
| 2605 | + ABSL_DCHECK(arena != nullptr); |
| 2606 | + |
| 2607 | + return Replace(needle, replacement, /*limit=*/-1, arena); |
| 2608 | +} |
| 2609 | + |
2540 | 2610 | namespace common_internal {
|
2541 | 2611 |
|
2542 | 2612 | template <typename Base>
|
|
0 commit comments