rusteal-core 0.6.0

Safe Rust runtime for rusteal (object refs, lifecycle, dynamic calls)
Documentation
use rusteal_ffi::{UClassHandle, UObjectHandle};

use crate::error::{RustealError, RustealResult, check_ffi};
use crate::ffi_dispatch;

pub fn create_widget_raw(
    owning_object: UObjectHandle,
    widget_class: UClassHandle,
) -> RustealResult<UObjectHandle> {
    let result = unsafe { ffi_dispatch::widget_create_widget(owning_object, widget_class) };

    if result.is_null() {
        Err(RustealError::InvalidOperation(
            "create_widget returned null".into(),
        ))
    } else {
        Ok(result)
    }
}

pub fn set_root_widget_raw(
    user_widget: UObjectHandle,
    root_widget: UObjectHandle,
) -> RustealResult<()> {
    check_ffi(unsafe { ffi_dispatch::widget_set_root_widget(user_widget, root_widget) })
}

pub fn get_widget_tree_raw(user_widget: UObjectHandle) -> RustealResult<UObjectHandle> {
    let result = unsafe { ffi_dispatch::widget_get_widget_tree(user_widget) };

    if result.is_null() {
        Err(RustealError::InvalidOperation(
            "get_widget_tree returned null".into(),
        ))
    } else {
        Ok(result)
    }
}