blob: 2c2f81b1f03c7adeb3042c02166f053b01a1fcb1 [file] [log] [blame]
// Part of the Crubit project, under the Apache License v2.0 with LLVM
// Exceptions. See /LICENSE for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
#ifndef CRUBIT_RS_BINDINGS_FROM_CC_TEST_GOLDEN_UNIONS_H_
#define CRUBIT_RS_BINDINGS_FROM_CC_TEST_GOLDEN_UNIONS_H_
#pragma clang lifetime_elision
union EmptyUnion {};
struct Nontrivial final {
explicit Nontrivial();
Nontrivial(Nontrivial&&);
int field;
};
struct TriviallyCopyableButNontriviallyDestructible {
TriviallyCopyableButNontriviallyDestructible(
const TriviallyCopyableButNontriviallyDestructible&) = default;
~TriviallyCopyableButNontriviallyDestructible() {}
};
union NonEmptyUnion {
bool bool_field;
char char_field;
int int_field;
long long long_long_field;
};
union NonCopyUnion {
bool trivial_member;
Nontrivial nontrivial_member;
};
union NonCopyUnion2 {
bool trivial_member;
TriviallyCopyableButNontriviallyDestructible nontrivial_member;
};
union UnionWithOpaqueField {
char constant_array_field_not_yet_supported[42];
};
struct TrivialButInheritable {
int x;
};
union UnionWithInheritable {
TrivialButInheritable t;
};
typedef union {
bool trivial_member;
} TypedefUnion;
typedef union {
TrivialButInheritable t;
} TypedefUnionWithInheritable;
#endif // CRUBIT_RS_BINDINGS_FROM_CC_TEST_GOLDEN_UNIONS_H_