Skip to content

Commit c2bc094

Browse files
jckingcopybara-github
authored andcommitted
Mark cel::Value and ValueMixin with trivial ABI attributes
PiperOrigin-RevId: 979936059
1 parent 689dba4 commit c2bc094

6 files changed

Lines changed: 14 additions & 10 deletions

File tree

base/internal/unknown_set.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ const FunctionResultSet& EmptyFunctionResultSet();
5151

5252
struct UnknownSetAccess;
5353

54-
class UnknownSet final {
54+
class ABSL_ATTRIBUTE_TRIVIAL_ABI UnknownSet final {
5555
private:
5656
using Rep = UnknownSetRep;
5757

common/value.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,8 @@ namespace cel {
9696
// a known but invalid state. Any attempt to use it from then on, without
9797
// assigning another type, is undefined behavior. In debug builds, we do our
9898
// best to fail.
99-
class Value final : private common_internal::ValueMixin<Value> {
99+
class CEL_COMMON_INTERNAL_VALUE_VARIANT_TRIVIAL_ABI Value final
100+
: private common_internal::ValueMixin<Value> {
100101
public:
101102
// Returns an appropriate `Value` for the dynamic protobuf enum. For open
102103
// enums, returns `cel::IntValue`. For closed enums, returns `cel::ErrorValue`

common/values/bytes_value.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ absl::string_view LegacyBytesValue(const BytesValue& value, bool stable,
5656
} // namespace common_internal
5757

5858
// `BytesValue` represents values of the primitive `bytes` type.
59-
class BytesValue final : private common_internal::ValueMixin<BytesValue> {
59+
class CEL_COMMON_INTERNAL_VALUE_VARIANT_TRIVIAL_ABI BytesValue final
60+
: private common_internal::ValueMixin<BytesValue> {
6061
public:
6162
static constexpr ValueKind kKind = ValueKind::kBytes;
6263

common/values/string_value.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,8 @@ absl::string_view LegacyStringValue(const StringValue& value, bool stable,
5757
} // namespace common_internal
5858

5959
// `StringValue` represents values of the primitive `string` type.
60-
class StringValue final : private common_internal::ValueMixin<StringValue> {
60+
class CEL_COMMON_INTERNAL_VALUE_VARIANT_TRIVIAL_ABI StringValue final
61+
: private common_internal::ValueMixin<StringValue> {
6162
public:
6263
static constexpr ValueKind kKind = ValueKind::kString;
6364

common/values/unknown_value.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ class Value;
4141
class UnknownValue;
4242

4343
// `UnknownValue` represents values of the primitive `duration` type.
44-
class UnknownValue final : private common_internal::ValueMixin<UnknownValue> {
44+
class ABSL_ATTRIBUTE_TRIVIAL_ABI UnknownValue final
45+
: private common_internal::ValueMixin<UnknownValue> {
4546
public:
4647
static constexpr ValueKind kKind = ValueKind::kUnknown;
4748

common/values/values.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,9 @@ class ValueInterface;
5050
class ListValueInterface;
5151
class StructValueInterface;
5252

53-
class Value;
53+
class CEL_COMMON_INTERNAL_VALUE_VARIANT_TRIVIAL_ABI Value;
5454
class BoolValue;
55-
class BytesValue;
55+
class CEL_COMMON_INTERNAL_VALUE_VARIANT_TRIVIAL_ABI BytesValue;
5656
class DoubleValue;
5757
class DurationValue;
5858
class ABSL_ATTRIBUTE_TRIVIAL_ABI ErrorValue;
@@ -62,12 +62,12 @@ class MapValue;
6262
class NullValue;
6363
class OpaqueValue;
6464
class OptionalValue;
65-
class StringValue;
65+
class CEL_COMMON_INTERNAL_VALUE_VARIANT_TRIVIAL_ABI StringValue;
6666
class StructValue;
6767
class TimestampValue;
6868
class TypeValue;
6969
class UintValue;
70-
class UnknownValue;
70+
class ABSL_ATTRIBUTE_TRIVIAL_ABI UnknownValue;
7171
class ParsedMessageValue;
7272
class ParsedMapFieldValue;
7373
class ParsedRepeatedFieldValue;
@@ -203,7 +203,7 @@ using ListValueForEach2Callback =
203203
absl::FunctionRef<absl::StatusOr<bool>(size_t, const Value&)>;
204204

205205
template <typename Base>
206-
class ValueMixin {
206+
class ABSL_ATTRIBUTE_TRIVIAL_ABI ValueMixin {
207207
public:
208208
absl::StatusOr<Value> Equal(
209209
const Value& other,

0 commit comments

Comments
 (0)