luaur_vm/functions/
lua_costatus.rs1use crate::enums::lua_co_status::lua_CoStatus;
2use crate::enums::lua_status::lua_Status;
3use crate::macros::api_check::api_check;
4use crate::records::lua_state::lua_State;
5
6#[allow(non_snake_case)]
7pub fn lua_costatus(l: *mut lua_State, co: *mut lua_State) -> core::ffi::c_int {
8 unsafe {
9 api_check!(l, !co.is_null());
10 api_check!(l, (*l).global == (*co).global);
11
12 if co == l {
13 return lua_CoStatus::LUA_CORUN as core::ffi::c_int;
14 }
15 if (*co).status as i32 == lua_Status::LUA_YIELD as i32 {
16 return lua_CoStatus::LUA_COSUS as core::ffi::c_int;
17 }
18 if (*co).status as i32 == lua_Status::LUA_BREAK as i32 {
19 return lua_CoStatus::LUA_CONOR as core::ffi::c_int;
20 }
21 if (*co).status != 0 {
22 return lua_CoStatus::LUA_COERR as core::ffi::c_int;
23 }
24 if (*co).ci != (*co).base_ci {
25 return lua_CoStatus::LUA_CONOR as core::ffi::c_int;
26 }
27 if (*co).top == (*co).base {
28 return lua_CoStatus::LUA_COFIN as core::ffi::c_int;
29 }
30 lua_CoStatus::LUA_COSUS as core::ffi::c_int
31 }
32}