luaur-vm 0.1.0

The Luau register virtual machine and standard library (Rust).
Documentation
use crate::functions::lua_l_checkinteger_64::lua_l_checkinteger_64;
use crate::functions::lua_pushinteger_64::lua_pushinteger_64;
use crate::type_aliases::lua_state::LuaState;

pub unsafe fn int64_bswap(l: *mut LuaState) -> core::ffi::c_int {
    let a = lua_l_checkinteger_64(l, 1) as u64;

    let swapped = (a >> 56)
        | ((a & 0x00FF000000000000) >> 40)
        | ((a & 0x0000FF0000000000) >> 24)
        | ((a & 0x000000FF00000000) >> 8)
        | ((a & 0x00000000FF000000) << 8)
        | ((a & 0x0000000000FF0000) << 24)
        | ((a & 0x000000000000FF00) << 40)
        | ((a & 0x00000000000000FF) << 56);

    lua_pushinteger_64(l, swapped as i64);

    1
}