Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion common/values/duration_value.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
#include "absl/base/nullability.h"
#include "absl/log/absl_check.h"
#include "absl/status/status.h"
#include "absl/strings/cord.h"
#include "absl/status/statusor.h"
#include "absl/strings/string_view.h"
#include "absl/time/time.h"
#include "absl/utility/utility.h"
Expand All @@ -44,6 +44,7 @@ class Value;
class DurationValue;

DurationValue UnsafeDurationValue(absl::Duration value);
absl::StatusOr<DurationValue> SafeDurationValue(absl::Duration value);

// `DurationValue` represents values of the primitive `duration` type.
class DurationValue final : private common_internal::ValueMixin<DurationValue> {
Expand Down Expand Up @@ -125,6 +126,14 @@ inline DurationValue UnsafeDurationValue(absl::Duration value) {
return DurationValue(absl::in_place, value);
}

inline absl::StatusOr<DurationValue> SafeDurationValue(absl::Duration value) {
absl::Status status = internal::ValidateDuration(value);
if (!status.ok()) {
return status;
}
return UnsafeDurationValue(value);
}

inline bool operator!=(DurationValue lhs, DurationValue rhs) {
return !operator==(lhs, rhs);
}
Expand Down
10 changes: 10 additions & 0 deletions common/values/timestamp_value.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
#include "absl/base/nullability.h"
#include "absl/log/absl_check.h"
#include "absl/status/status.h"
#include "absl/status/statusor.h"
#include "absl/strings/string_view.h"
#include "absl/time/time.h"
#include "absl/utility/utility.h"
Expand All @@ -43,6 +44,7 @@ class Value;
class TimestampValue;

TimestampValue UnsafeTimestampValue(absl::Time value);
absl::StatusOr<TimestampValue> SafeTimestampValue(absl::Time value);

// `TimestampValue` represents values of the primitive `timestamp` type.
class TimestampValue final
Expand Down Expand Up @@ -123,6 +125,14 @@ inline TimestampValue UnsafeTimestampValue(absl::Time value) {
return TimestampValue(absl::in_place, value);
}

inline absl::StatusOr<TimestampValue> SafeTimestampValue(absl::Time value) {
absl::Status status = internal::ValidateTimestamp(value);
if (!status.ok()) {
return status;
}
return UnsafeTimestampValue(value);
}

inline bool operator!=(TimestampValue lhs, TimestampValue rhs) {
return !operator==(lhs, rhs);
}
Expand Down