use super::file::{Directory, FileHandle};
use crate::proto::unsafe_protocol;
use crate::{Result, StatusExt};
use core::ptr;
use uefi_raw::protocol::file_system::SimpleFileSystemProtocol;
#[cfg(doc)]
use crate::Status;
#[derive(Debug)]
#[repr(transparent)]
#[unsafe_protocol(SimpleFileSystemProtocol::GUID)]
pub struct SimpleFileSystem(SimpleFileSystemProtocol);
impl SimpleFileSystem {
pub fn open_volume(&mut self) -> Result<Directory> {
let mut ptr = ptr::null_mut();
unsafe { (self.0.open_volume)(&mut self.0, &mut ptr) }
.to_result_with_val(|| unsafe { Directory::new(FileHandle::new(ptr.cast())) })
}
}