#![allow(non_camel_case_types, non_snake_case)]
use crate::decl::*;
use crate::ole::{privs::*, vts::*};
use crate::prelude::*;
com_interface! { IPersistStream: "00000109-0000-0000-c000-000000000046";
}
impl ole_IPersist for IPersistStream {}
impl ole_IPersistStream for IPersistStream {}
pub trait ole_IPersistStream: ole_IPersist {
#[must_use]
fn GetSizeMax(&self) -> HrResult<u64> {
let mut max = 0u64;
HrRet(unsafe { (vt::<IPersistStreamVT>(self).GetSizeMax)(self.ptr(), &mut max) })
.to_hrresult()
.map(|_| max)
}
#[must_use]
fn IsDirty(&self) -> HrResult<bool> {
HrRet(unsafe { (vt::<IPersistStreamVT>(self).IsDirty)(self.ptr()) }).to_bool_hrresult()
}
fn Load(&self, stream: &impl ole_IStream) -> HrResult<()> {
HrRet(unsafe { (vt::<IPersistStreamVT>(self).Load)(self.ptr(), stream.ptr()) })
.to_hrresult()
}
fn Save(&self, stream: &impl ole_IStream, clear_dirty: bool) -> HrResult<()> {
HrRet(unsafe {
(vt::<IPersistStreamVT>(self).Save)(self.ptr(), stream.ptr(), clear_dirty as _)
})
.to_hrresult()
}
}