Skip to main content

luaur_vm/functions/
buffer_swapbe.rs

1#[inline]
2pub fn buffer_swapbe<T>(v: T) -> T {
3    let size = core::mem::size_of::<T>();
4    if size == 8 {
5        unsafe {
6            let val = core::mem::transmute_copy::<T, u64>(&v);
7            let swapped = val.swap_bytes();
8            core::mem::transmute_copy::<u64, T>(&swapped)
9        }
10    } else if size == 4 {
11        unsafe {
12            let val = core::mem::transmute_copy::<T, u32>(&v);
13            let swapped = val.swap_bytes();
14            core::mem::transmute_copy::<u32, T>(&swapped)
15        }
16    } else if size == 2 {
17        unsafe {
18            let val = core::mem::transmute_copy::<T, u16>(&v);
19            let swapped = val.swap_bytes();
20            core::mem::transmute_copy::<u16, T>(&swapped)
21        }
22    } else {
23        v
24    }
25}