1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
use crate::prelude::*;

pub struct Session {
    pub(crate) inner: *mut mnn_sys::Session,
    pub(crate) __session_internals: crate::SessionInternals,
    pub(crate) __marker: PhantomData<()>,
}

pub enum SessionInternals {
    Single(crate::ScheduleConfig),
    MultiSession(crate::ScheduleConfigs),
}

impl Session {
    // pub unsafe fn from_ptr(session: *mut mnn_sys::Session) -> Self {
    //     Self {
    //         session,
    //         __marker: PhantomData,
    //     }
    // }

    // pub fn as_ptr_mut(&self) -> *mut mnn_sys::Session {
    //     self.session
    // }
}

impl Drop for Session {
    fn drop(&mut self) {
        unsafe { mnn_sys::Session_destroy(self.inner) }
    }
}