mirror of
https://github.com/topjohnwu/cxx.git
synced 2025-02-24 10:03:39 +00:00
Emit const assertions for every vector element type
This commit is contained in:
parent
a006bca891
commit
f044663b2a
@ -136,6 +136,8 @@ pub unsafe trait VectorElement: Sized {
|
||||
|
||||
macro_rules! impl_vector_element_for_primitive {
|
||||
($ty:ident) => {
|
||||
const_assert_eq!(1, mem::align_of::<CxxVector<$ty>>());
|
||||
|
||||
unsafe impl VectorElement for $ty {
|
||||
const __NAME: &'static dyn Display = &stringify!($ty);
|
||||
fn __vector_size(v: &CxxVector<$ty>) -> usize {
|
||||
@ -230,5 +232,3 @@ impl_vector_element_for_primitive!(i64);
|
||||
impl_vector_element_for_primitive!(isize);
|
||||
impl_vector_element_for_primitive!(f32);
|
||||
impl_vector_element_for_primitive!(f64);
|
||||
|
||||
const_assert_eq!(1, mem::align_of::<CxxVector<usize>>());
|
||||
|
@ -38,6 +38,9 @@ impl<T> RustVec<T> {
|
||||
|
||||
macro_rules! rust_vec_shims_for_primitive {
|
||||
($ty:ident) => {
|
||||
const_assert_eq!(mem::size_of::<[usize; 3]>(), mem::size_of::<Vec<$ty>>());
|
||||
const_assert_eq!(mem::align_of::<usize>(), mem::align_of::<Vec<$ty>>());
|
||||
|
||||
const _: () = {
|
||||
attr! {
|
||||
#[export_name = concat!("cxxbridge02$rust_vec$", stringify!($ty), "$drop")]
|
||||
@ -77,6 +80,3 @@ rust_vec_shims_for_primitive!(i32);
|
||||
rust_vec_shims_for_primitive!(i64);
|
||||
rust_vec_shims_for_primitive!(f32);
|
||||
rust_vec_shims_for_primitive!(f64);
|
||||
|
||||
const_assert_eq!(mem::size_of::<[usize; 3]>(), mem::size_of::<Vec<i32>>());
|
||||
const_assert_eq!(mem::align_of::<usize>(), mem::align_of::<Vec<i32>>());
|
||||
|
Loading…
x
Reference in New Issue
Block a user