use super::{Error, metal_error};
use crate::ThreadBound;
use objc2::rc::Retained;
use objc2_foundation::NSBundle;
pub struct Bundle {
inner: Retained<NSBundle>,
_thread_bound: ThreadBound,
}
impl Bundle {
pub(crate) fn as_inner(&self) -> &NSBundle {
&self.inner
}
#[must_use]
pub fn main() -> Self {
Self {
inner: NSBundle::mainBundle(),
_thread_bound: ThreadBound::new(),
}
}
pub fn load(&self) -> Result<(), Error> {
self.inner
.preflightAndReturnError()
.map_err(|error| metal_error(&error))?;
unsafe { self.inner.loadAndReturnError() }.map_err(|error| metal_error(&error))
}
#[must_use]
pub fn is_loaded(&self) -> bool {
self.inner.isLoaded()
}
}