use std::rc::Rc;
use std::cell::RefCell;
pub struct ElementProxy {
element: Rc<RefCell<dyn std::any::Any>>,
}
impl ElementProxy {
pub fn new(element: Rc<RefCell<dyn std::any::Any>>) -> Self {
ElementProxy { element }
}
pub fn element(&self) -> Rc<RefCell<dyn std::any::Any>> {
Rc::clone(&self.element)
}
}
impl PartialEq for ElementProxy {
fn eq(&self, other: &Self) -> bool {
Rc::ptr_eq(&self.element, &other.element)
}
}
impl Eq for ElementProxy {}
pub struct ParentedElementProxy {
element: Rc<RefCell<dyn std::any::Any>>,
parent: Rc<RefCell<dyn std::any::Any>>,
}
impl ParentedElementProxy {
pub fn new(
element: Rc<RefCell<dyn std::any::Any>>,
parent: Rc<RefCell<dyn std::any::Any>>,
) -> Self {
ParentedElementProxy { element, parent }
}
pub fn parent(&self) -> Rc<RefCell<dyn std::any::Any>> {
Rc::clone(&self.parent)
}
pub fn element(&self) -> Rc<RefCell<dyn std::any::Any>> {
Rc::clone(&self.element)
}
}
pub struct PartElementProxy {
element: Rc<RefCell<dyn std::any::Any>>,
part: Rc<RefCell<dyn std::any::Any>>,
}
impl PartElementProxy {
pub fn new(
element: Rc<RefCell<dyn std::any::Any>>,
part: Rc<RefCell<dyn std::any::Any>>,
) -> Self {
PartElementProxy { element, part }
}
pub fn element(&self) -> Rc<RefCell<dyn std::any::Any>> {
Rc::clone(&self.element)
}
pub fn part(&self) -> Rc<RefCell<dyn std::any::Any>> {
Rc::clone(&self.part)
}
}