commonlibsse_ng\re\o/
OldMessageBoxCallback.rs1use core::ptr::NonNull;
2
3use crate::re::BSIntrusiveRefCounted::BSIntrusiveRefCounted;
4use crate::re::IMessageBoxCallback::{IMessageBoxCallback, IMessageBoxCallbackVtbl, Message};
5use crate::re::offsets_rtti::RTTI___OldMessageBoxCallback;
6use crate::re::offsets_vtable::VTABLE___OldMessageBoxCallback;
7use crate::rel::id::VariantID;
8
9pub struct OldMessageBoxCallback {
10 __base: IMessageBoxCallback,
11 callback: Option<NonNull<fn(Message)>>,
12}
13const _: () = assert!(core::mem::size_of::<OldMessageBoxCallback>() == 0x18);
14
15impl OldMessageBoxCallback {
16 pub const RTTI: VariantID = RTTI___OldMessageBoxCallback;
18
19 pub const VTABLE: [VariantID; 1] = VTABLE___OldMessageBoxCallback;
21
22 #[inline]
24 pub const fn new(callback: fn(Message)) -> Self {
25 let __base =
26 IMessageBoxCallback { vtable: &VTABLE, __base: BSIntrusiveRefCounted::new(), unk0C: 0 };
27 Self {
28 __base,
29 callback: NonNull::new((&callback) as *const fn(Message) as *mut fn(Message)),
30 }
31 }
32}
33
34static VTABLE: IMessageBoxCallbackVtbl = IMessageBoxCallbackVtbl {
35 CxxDrop: |this| unsafe {
36 let _this = &mut *this.cast::<OldMessageBoxCallback>();
37 },
38 Run: |this, msg| {
39 let this = unsafe { &mut *this.cast::<OldMessageBoxCallback>() };
40 if let Some(callback) = this.callback.as_ref() {
41 (unsafe { callback.as_ref() })(msg);
42 }
43 },
44};