use objc2::{extern_class, extern_methods, msg_send, rc::Retained, runtime::NSObject};
use objc2_foundation::{NSArray, NSString};
use crate::argument::MTLStructMember;
extern_class!(
#[unsafe(super(NSObject))]
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct MTLStructType;
);
impl MTLStructType {
extern_methods!();
pub fn member_by_name(
&self,
name: &str,
) -> Option<Retained<MTLStructMember>> {
let ns = NSString::from_str(name);
unsafe { msg_send![self, memberByName: &*ns] }
}
pub fn members(&self) -> Box<[Retained<MTLStructMember>]> {
let array: Retained<NSArray<MTLStructMember>> = unsafe { msg_send![self, members] };
array.to_vec().into_boxed_slice()
}
}