Skip to main content

luaur_vm/functions/
luau_f_integercreate.rs

1use crate::enums::lua_type::lua_Type;
2use crate::macros::nvalue::nvalue;
3use crate::macros::setlvalue::setlvalue;
4use crate::macros::setnilvalue::setnilvalue;
5use crate::macros::ttisnumber::ttisnumber;
6use crate::type_aliases::lua_state::lua_State;
7use crate::type_aliases::stk_id::StkId;
8use crate::type_aliases::t_value::TValue;
9
10#[allow(non_snake_case)]
11pub unsafe fn luau_f_integercreate(
12    _L: *mut lua_State,
13    res: StkId,
14    arg0: *mut TValue,
15    nresults: core::ffi::c_int,
16    _args: StkId,
17    nparams: core::ffi::c_int,
18) -> core::ffi::c_int {
19    if nparams >= 1 && nresults <= 1 && ttisnumber!(arg0) {
20        let a1 = nvalue!(arg0);
21
22        if a1 >= -9223372036854775808.0 && a1 < 9223372036854775808.0 {
23            let x = a1 as i64;
24            if (x as f64) == a1 {
25                setlvalue!(res, x);
26                return 1;
27            }
28        }
29
30        setnilvalue!(res);
31        1
32    } else {
33        -1
34    }
35}