superclasses

This commit is contained in:
Quaternions 2024-09-21 14:11:06 -07:00
parent 66d9279445
commit 751d4f4fb9

View File

@ -2,12 +2,16 @@ use rbx_dom_weak::{types::Ref,WeakDom};
pub fn class_is_a(class:&str,superclass:&str)->bool{ pub fn class_is_a(class:&str,superclass:&str)->bool{
class==superclass class==superclass
||rbx_reflection_database::get().classes.get(class) ||{
.is_some_and(|descriptor| let db=rbx_reflection_database::get();
descriptor.superclass.as_ref().is_some_and(|class_super| match (db.classes.get(class),db.classes.get(superclass)){
class_is_a(class_super,superclass) (Some(class),Some(superclass))=>db.superclasses(class)
) .unwrap()
) .into_iter()
.any(|cls|core::ptr::addr_eq(cls,superclass)),
_=>false
}
}
} }
#[repr(transparent)] #[repr(transparent)]