File tree Expand file tree Collapse file tree 2 files changed +20
-1
lines changed Expand file tree Collapse file tree 2 files changed +20
-1
lines changed Original file line number Diff line number Diff line change 2525#include " absl/base/nullability.h"
2626#include " absl/log/absl_check.h"
2727#include " absl/status/status.h"
28- #include " absl/strings/cord .h"
28+ #include " absl/status/statusor .h"
2929#include " absl/strings/string_view.h"
3030#include " absl/time/time.h"
3131#include " absl/utility/utility.h"
@@ -44,6 +44,7 @@ class Value;
4444class DurationValue ;
4545
4646DurationValue UnsafeDurationValue (absl::Duration value);
47+ absl::StatusOr<DurationValue> SafeDurationValue (absl::Duration value);
4748
4849// `DurationValue` represents values of the primitive `duration` type.
4950class DurationValue final : private common_internal::ValueMixin<DurationValue> {
@@ -125,6 +126,14 @@ inline DurationValue UnsafeDurationValue(absl::Duration value) {
125126 return DurationValue (absl::in_place, value);
126127}
127128
129+ inline absl::StatusOr<DurationValue> SafeDurationValue (absl::Duration value) {
130+ absl::Status status = internal::ValidateDuration (value);
131+ if (!status.ok ()) {
132+ return status;
133+ }
134+ return UnsafeDurationValue (value);
135+ }
136+
128137inline bool operator !=(DurationValue lhs, DurationValue rhs) {
129138 return !operator ==(lhs, rhs);
130139}
Original file line number Diff line number Diff line change 2525#include " absl/base/nullability.h"
2626#include " absl/log/absl_check.h"
2727#include " absl/status/status.h"
28+ #include " absl/status/statusor.h"
2829#include " absl/strings/string_view.h"
2930#include " absl/time/time.h"
3031#include " absl/utility/utility.h"
@@ -43,6 +44,7 @@ class Value;
4344class TimestampValue ;
4445
4546TimestampValue UnsafeTimestampValue (absl::Time value);
47+ absl::StatusOr<TimestampValue> SafeTimestampValue (absl::Time value);
4648
4749// `TimestampValue` represents values of the primitive `timestamp` type.
4850class TimestampValue final
@@ -123,6 +125,14 @@ inline TimestampValue UnsafeTimestampValue(absl::Time value) {
123125 return TimestampValue (absl::in_place, value);
124126}
125127
128+ inline absl::StatusOr<TimestampValue> SafeTimestampValue (absl::Time value) {
129+ absl::Status status = internal::ValidateTimestamp (value);
130+ if (!status.ok ()) {
131+ return status;
132+ }
133+ return UnsafeTimestampValue (value);
134+ }
135+
126136inline bool operator !=(TimestampValue lhs, TimestampValue rhs) {
127137 return !operator ==(lhs, rhs);
128138}
You can’t perform that action at this time.
0 commit comments