micromegas_transit/
reflect.rs

1use serde::{Deserialize, Serialize};
2use std::sync::Arc;
3
4#[derive(Debug, Serialize, Deserialize, Clone)]
5pub struct Member {
6    pub name: Arc<String>,
7    pub type_name: String,
8    pub offset: usize,
9    pub size: usize,
10    pub is_reference: bool,
11}
12
13#[derive(Debug, Serialize, Deserialize, Clone)]
14pub struct UserDefinedType {
15    pub name: Arc<String>,
16    pub size: usize,
17    pub members: Vec<Member>,
18    pub is_reference: bool,
19    #[serde(skip)]
20    pub secondary_udts: Vec<UserDefinedType>, // udts of members
21}
22
23pub trait Reflect {
24    fn reflect() -> UserDefinedType;
25}