use crate::entities::Entity;
use sdk_raw::tf2::script_binding as raw;
use std::ffi::{CStr, CString};
use std::ptr::NonNull;
pub(crate) use raw::{BindingError, FLOAT, VOID, float, string};
pub(crate) unsafe fn call(
entity: Entity<'_>,
class: &CStr,
name: &CStr,
arguments: &mut [sys::ScriptVariant_t],
result_type: sys::ScriptDataType_t,
) -> Result<sys::ScriptVariant_t, BindingError> {
unsafe {
raw::call(
NonNull::new_unchecked(entity.as_ptr()),
class,
name,
arguments,
result_type,
)
}
}
pub(crate) unsafe fn call_string(
entity: Entity<'_>,
class: &CStr,
name: &CStr,
arguments: &mut [sys::ScriptVariant_t],
) -> Result<Option<CString>, BindingError> {
unsafe {
raw::call_string(
NonNull::new_unchecked(entity.as_ptr()),
class,
name,
arguments,
)
}
}