File tree 6 files changed +38
-8
lines changed
6 files changed +38
-8
lines changed Original file line number Diff line number Diff line change 15
15
// https://code.qt.io/cgit/qt/qtbase.git/tree/src/corelib/itemmodels/qabstractitemmodel.h?h=v6.2.4#n195
16
16
assert_alignment_and_size (QModelIndex,
17
17
alignof (::std::size_t ),
18
- sizeof(::std::size_t [3 ]));
18
+ (sizeof (::std::int32_t ) * 2) + sizeof(::std::size_t ) +
19
+ sizeof(::std::size_t ));
19
20
20
21
static_assert (::std::is_trivially_copyable<QModelIndex>::value);
Original file line number Diff line number Diff line change @@ -56,7 +56,10 @@ mod ffi {
56
56
#[ derive( Clone ) ]
57
57
#[ repr( C ) ]
58
58
pub struct QModelIndex {
59
- _space : MaybeUninit < [ usize ; 3 ] > ,
59
+ _r : MaybeUninit < i32 > ,
60
+ _c : MaybeUninit < i32 > ,
61
+ _i : MaybeUninit < usize > ,
62
+ _m : MaybeUninit < usize > ,
60
63
}
61
64
62
65
impl Default for QModelIndex {
Original file line number Diff line number Diff line change @@ -51,10 +51,21 @@ pub struct QVariant {
51
51
///
52
52
/// Qt5 QVariant has one member, which contains three uints (but they are optimised to a size of 8) and a union
53
53
/// Qt6 QVariant has one member, which contains three pointers and a union (pointer largest)
54
+ _data : MaybeUninit < usize > ,
55
+
56
+ #[ cfg( qt_version_major = "5" ) ]
57
+ _type : MaybeUninit < u32 > ,
58
+ #[ cfg( qt_version_major = "5" ) ]
59
+ _is_shared : MaybeUninit < u32 > ,
54
60
#[ cfg( qt_version_major = "5" ) ]
55
- _space : MaybeUninit < [ usize ; 2 ] > ,
61
+ _is_null : MaybeUninit < u32 > ,
62
+
63
+ #[ cfg( qt_version_major = "6" ) ]
64
+ _is_shared : MaybeUninit < usize > ,
65
+ #[ cfg( qt_version_major = "6" ) ]
66
+ _is_null : MaybeUninit < usize > ,
56
67
#[ cfg( qt_version_major = "6" ) ]
57
- _space : MaybeUninit < [ usize ; 4 ] > ,
68
+ _packed_type : MaybeUninit < usize > ,
58
69
}
59
70
60
71
impl Clone for QVariant {
Original file line number Diff line number Diff line change 24
24
// https://code.qt.io/cgit/qt/qtbase.git/tree/src/corelib/kernel/qvariant.h?h=v6.2.4#n540
25
25
// https://code.qt.io/cgit/qt/qtbase.git/tree/src/corelib/kernel/qvariant.h?h=v6.2.4#n474
26
26
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
27
+
28
+ #if (QT_POINTER_SIZE == 4)
29
+ // 32bit is 3 * 32bit ptr (12) + union with double (8) + 4 bytes padding
30
+ // alignment is 8 byte on 32bit systems as well due to the double
31
+ assert_alignment_and_size (QVariant,
32
+ alignof (double ),
33
+ (sizeof (::std::size_t ) * 3) + sizeof(double ) + 4);
34
+ #else
35
+ // 64bit is 3 * 64ptr ptr (16) + union with double (8)
27
36
assert_alignment_and_size (QVariant,
28
37
alignof (::std::size_t ),
29
- sizeof(::std::size_t [4 ]));
38
+ (sizeof (::std::size_t ) * 3) + sizeof(double ));
39
+ #endif
40
+
30
41
#else
31
42
assert_alignment_and_size (QVariant,
32
43
alignof (::std::size_t ),
33
- sizeof(::std::size_t [ 2 ] ));
44
+ ( sizeof (::std::uint32_t ) * 3) + sizeof(::std:: size_t ) ));
34
45
#endif
35
46
36
47
static_assert (!::std::is_trivially_copy_assignable<QVariant>::value);
Original file line number Diff line number Diff line change 18
18
// https://code.qt.io/cgit/qt/qtbase.git/tree/src/gui/painting/qcolor.h?h=v6.2.4#n237
19
19
assert_alignment_and_size (QColor,
20
20
alignof (::std::size_t ),
21
- sizeof(::std::size_t [2 ]));
21
+ sizeof(::std::size_t ) +
22
+ (sizeof (::std::uint16_t ) * 5) +
23
+ 2 /* compiler padding */ );
22
24
23
25
// QColor still had copy & move constructors in Qt 5 but they were basically
24
26
// trivial.
Original file line number Diff line number Diff line change @@ -58,7 +58,9 @@ mod ffi {
58
58
#[ derive( Clone ) ]
59
59
#[ repr( C ) ]
60
60
pub struct QColor {
61
- _space : MaybeUninit < [ usize ; 2 ] > ,
61
+ _cspec : MaybeUninit < usize > ,
62
+ _ct : MaybeUninit < [ u16 ; 5 ] > ,
63
+ _padding : MaybeUninit < u16 > ,
62
64
}
63
65
64
66
impl QColor {
You can’t perform that action at this time.
0 commit comments