1use rusteal_ffi::{UClassHandle, UObjectHandle, UStructHandle};
2
3use crate::error::RustealResult;
4
5pub trait UeClass: 'static {
6 fn static_class() -> UClassHandle;
7}
8
9pub trait UeInterface: 'static {
10 fn static_class() -> UClassHandle;
11}
12
13pub trait UeStruct: 'static {
14 fn static_struct() -> UStructHandle;
15}
16
17pub trait UeEnum: Copy + 'static {
18 type Repr: Copy;
19
20 fn static_enum() -> UClassHandle;
21
22 fn to_i64(self) -> i64;
23
24 fn from_i64(value: i64) -> Option<Self>;
25}
26
27pub trait HasParent: UeClass {
28 type Parent: UeClass;
29}
30
31pub trait Inherits<U: UeClass>: UeClass {}
32
33pub trait UeHandle {
34 fn checked_handle(&self) -> RustealResult<UObjectHandle>;
35
36 fn raw_handle(&self) -> UObjectHandle;
37}
38
39pub trait ValidHandle {
40 fn handle(&self) -> UObjectHandle;
41}