#[doc(hidden)]
pub mod helper;
#[doc(hidden)]
pub use ::tlua::ffi as lua;
#[doc(hidden)]
pub mod datetime;
#[doc(hidden)]
pub mod decimal;
#[doc(hidden)]
pub mod sql;
#[doc(hidden)]
pub mod tarantool;
#[doc(hidden)]
pub mod uuid;
pub fn has_decimal() -> bool {
if cfg!(feature = "standalone_decimal") {
return true;
}
unsafe {
let name = crate::c_str!("decimal_zero");
helper::tnt_internal_symbol::<*const ()>(name).is_some() || helper::has_dyn_symbol(name)
}
}
pub fn has_fiber_channel() -> bool {
unsafe {
let name = crate::c_str!("fiber_channel_new");
helper::tnt_internal_symbol::<*const ()>(name).is_some() || helper::has_dyn_symbol(name)
}
}
pub fn has_tuple_field_by_path() -> bool {
let c_str = std::ffi::CStr::from_bytes_with_nul_unchecked;
unsafe {
helper::has_dyn_symbol(c_str(tarantool::TUPLE_FIELD_BY_PATH_NEW_API.as_bytes()))
| helper::has_dyn_symbol(c_str(tarantool::TUPLE_FIELD_BY_PATH_OLD_API.as_bytes()))
}
}
pub fn has_datetime() -> bool {
if cfg!(feature = "static_linking") {
return true;
}
unsafe { helper::has_dyn_symbol(crate::c_str!("tnt_mp_encode_datetime")) }
}
#[inline]
pub unsafe fn has_fiber_set_ctx() -> bool {
if cfg!(feature = "static_linking") {
return true;
}
static mut RESULT: Option<bool> = None;
if (*std::ptr::addr_of!(RESULT)).is_none() {
RESULT = Some(helper::has_dyn_symbol(crate::c_str!("fiber_set_ctx")));
}
RESULT.unwrap()
}
#[inline(always)]
pub fn has_fully_temporary_spaces() -> bool {
if cfg!(feature = "static_linking") {
return true;
}
crate::space::space_id_temporary_min().is_some()
}
#[inline]
pub unsafe fn has_fiber_id() -> bool {
if cfg!(feature = "static_linking") {
return true;
}
static mut RESULT: Option<bool> = None;
if (*std::ptr::addr_of!(RESULT)).is_none() {
RESULT = Some(helper::has_dyn_symbol(crate::c_str!("fiber_id")));
}
RESULT.unwrap()
}
#[inline]
pub unsafe fn has_box_error_from_lua() -> bool {
if cfg!(feature = "static_linking") {
return true;
}
static mut RESULT: Option<bool> = None;
if (*std::ptr::addr_of!(RESULT)).is_none() {
RESULT = Some(helper::has_dyn_symbol(crate::c_str!("luaL_iserror")));
}
RESULT.unwrap()
}