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 UeStruct: 'static {
10 fn static_struct() -> UStructHandle;
11}
12
13pub trait UeEnum: Copy + 'static {
14 type Repr: Copy;
15
16 fn static_enum() -> UClassHandle;
17
18 fn to_i64(self) -> i64;
19
20 fn from_i64(value: i64) -> Option<Self>;
21}
22
23pub trait HasParent: UeClass {
24 type Parent: UeClass;
25}
26
27pub trait Inherits<U: UeClass>: UeClass {}
28
29pub trait UeHandle {
30 fn checked_handle(&self) -> RustealResult<UObjectHandle>;
31
32 fn raw_handle(&self) -> UObjectHandle;
33}
34
35pub trait ValidHandle {
36 fn handle(&self) -> UObjectHandle;
37}