#![allow(non_camel_case_types, non_snake_case)]
use crate::co;
use crate::decl::*;
use crate::ole::{privs::*, vts::*};
use crate::prelude::*;
com_interface! { IPersistFile: "0000010b-0000-0000-c000-000000000046";
}
impl ole_IPersist for IPersistFile {}
impl ole_IPersistFile for IPersistFile {}
pub trait ole_IPersistFile: ole_IUnknown {
#[must_use]
fn GetCurFile(&self) -> HrResult<String> {
let mut pstr = std::ptr::null_mut::<u16>();
HrRet(unsafe { (vt::<IPersistFileVT>(self).GetCurFile)(self.ptr(), &mut pstr) })
.to_hrresult()
.map(|_| htaskmem_ptr_to_str(pstr))
}
#[must_use]
fn IsDirty(&self) -> HrResult<bool> {
HrRet(unsafe { (vt::<IPersistFileVT>(self).IsDirty)(self.ptr()) }).to_bool_hrresult()
}
fn Load(&self, file_name: &str, dw_mode: co::STGM) -> HrResult<()> {
HrRet(unsafe {
(vt::<IPersistFileVT>(self).Load)(
self.ptr(),
WString::from_str(file_name).as_ptr(),
dw_mode.raw(),
)
})
.to_hrresult()
}
fn Save(&self, file_name: Option<&str>, remember: bool) -> HrResult<()> {
HrRet(unsafe {
(vt::<IPersistFileVT>(self).Save)(
self.ptr(),
WString::from_opt_str(file_name).as_ptr(),
remember as _,
)
})
.to_hrresult()
}
fn SaveCompleted(&self, file_name: &str) -> HrResult<()> {
HrRet(unsafe {
(vt::<IPersistFileVT>(self).SaveCompleted)(
self.ptr(),
WString::from_str(file_name).as_ptr(),
)
})
.to_hrresult()
}
}