1extern crate winapi;
2extern crate wio;
3extern crate derive_com_wrapper;
4
5use winapi::Interface;
6use wio::com::ComPtr;
7
8pub use derive_com_wrapper::ComWrapper;
9
10pub trait ComWrapper {
11 type Interface: Interface;
13
14 unsafe fn get_raw(&self) -> *mut Self::Interface;
16
17 unsafe fn into_raw(self) -> *mut Self::Interface;
19
20 unsafe fn from_raw(raw: *mut Self::Interface) -> Self;
23
24 unsafe fn from_ptr(ptr: ComPtr<Self::Interface>) -> Self;
26
27 unsafe fn into_ptr(self) -> ComPtr<Self::Interface>;
29}