fromsoftware_shared/
steam.rs1use vtable_rs::VPtr;
2
3#[vtable_rs::vtable]
4pub trait CCallbackBaseVmt<P> {
5 fn run(&mut self, pv_param: *mut P);
7
8 fn run_call(&mut self, pv_param: *mut P, io_failure: bool, api_call: u64);
10
11 fn get_callback_size_bytes(&mut self) -> i32;
13
14 fn destructor(&mut self, should_free: bool);
15}
16
17#[repr(C)]
18pub struct CCallbackBase<P: 'static> {
19 pub vftable: VPtr<dyn CCallbackBaseVmt<P>, Self>,
20 pub callback_flags: CallbackFlags,
22 pub callback_id: i32,
25}
26
27#[repr(C)]
28pub struct CCallback<T, P: 'static> {
29 pub base: CCallbackBase<P>,
30 pub obj: *mut T,
31 pub func: extern "C" fn(&mut T, *mut P),
32}
33
34bitflags::bitflags! {
35 #[repr(C)]
36 #[derive(Debug, Clone, Copy)]
37 pub struct CallbackFlags: u8 {
38 const REGISTERED = 0x01;
39 const GAME_SERVER = 0x02;
40 }
41}