use super::vue::VueRenderRead;
use vize_l2::{
file::{BindingRef, FileForHead},
op::OriginalForOp,
resolution::ForResolution,
};
pub struct DomFileForHead<'owner, 'arena> {
pub(in crate::decision::dom) head: FileForHead<'owner, 'arena>,
pub(in crate::decision::dom) original: &'owner OriginalForOp<'arena>,
pub(in crate::decision::dom) resolution: &'owner ForResolution<'arena>,
pub(in crate::decision::dom) collection: BindingRef<'owner, 'arena>,
pub(in crate::decision::dom) read: Option<VueRenderRead<'owner, 'arena>>,
}
impl core::fmt::Debug for DomFileForHead<'_, '_> {
fn fmt(&self, formatter: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
formatter
.debug_struct("DomFileForHead")
.field("node", &self.head.id().node())
.field("scope", &self.head.scope())
.finish_non_exhaustive()
}
}
impl<'owner, 'arena> DomFileForHead<'owner, 'arena> {
#[must_use]
pub const fn head(&self) -> FileForHead<'owner, 'arena> {
self.head
}
#[must_use]
pub const fn original(&self) -> &'owner OriginalForOp<'arena> {
self.original
}
#[must_use]
pub const fn resolution(&self) -> &'owner ForResolution<'arena> {
self.resolution
}
#[must_use]
pub const fn collection(&self) -> BindingRef<'owner, 'arena> {
self.collection
}
#[must_use]
pub fn collection_read(&self) -> Option<&VueRenderRead<'owner, 'arena>> {
self.read.as_ref()
}
#[must_use]
pub fn accepts_original(&self, original: &OriginalForOp<'arena>) -> bool {
core::ptr::eq(self.original, original) && self.head.accepts(original)
}
}