Proc macro preparation

This commit is contained in:
Mihai Dinculescu
2022-10-09 09:38:53 +01:00
parent 6d8fc61c0b
commit 7f89887508
29 changed files with 674 additions and 36 deletions

View File

@@ -0,0 +1,28 @@
use crate::{AirportData, Event, SimConnectObjectExt};
pub enum Notification {
Open,
Event(Event),
Data(NotificationData),
AirportList(Vec<AirportData>),
Quit,
Exception(u32),
}
pub struct NotificationData {
pub(crate) type_id: String,
pub(crate) data_addr: *const u32,
}
impl NotificationData {
pub fn try_into<T: SimConnectObjectExt>(&self) -> Option<T> {
let type_id: String = std::any::type_name::<T>().into();
if self.type_id == type_id {
let data: &T = unsafe { std::mem::transmute_copy(&self.data_addr) };
Some(data.clone())
} else {
None
}
}
}