ecitygml_core/model/construction/
window_surface.rs1use crate::model::construction::{
2 AbstractFillingSurface, AsAbstractFillingSurface, AsAbstractFillingSurfaceMut,
3};
4use crate::model::core::CityObjectKind;
5use crate::model::core::CityObjectRef;
6use crate::operations::{Visitable, Visitor};
7
8#[derive(Debug, Clone, PartialEq)]
9pub struct WindowSurface {
10 pub abstract_filling_surface: AbstractFillingSurface,
11}
12
13impl WindowSurface {
14 pub fn new(abstract_filling_surface: AbstractFillingSurface) -> Self {
15 Self {
16 abstract_filling_surface,
17 }
18 }
19
20 pub fn iter_city_object<'a>(&'a self) -> impl Iterator<Item = CityObjectRef<'a>> + 'a {
21 std::iter::once(CityObjectRef::WindowSurface(self))
22 }
23}
24
25impl AsAbstractFillingSurface for WindowSurface {
26 fn abstract_filling_surface(&self) -> &AbstractFillingSurface {
27 &self.abstract_filling_surface
28 }
29}
30
31impl AsAbstractFillingSurfaceMut for WindowSurface {
32 fn abstract_filling_surface_mut(&mut self) -> &mut AbstractFillingSurface {
33 &mut self.abstract_filling_surface
34 }
35}
36
37crate::impl_abstract_filling_surface_traits!(WindowSurface);
38
39impl From<WindowSurface> for CityObjectKind {
40 fn from(item: WindowSurface) -> Self {
41 CityObjectKind::WindowSurface(item)
42 }
43}
44
45impl Visitable for WindowSurface {
46 fn accept<V: Visitor>(&self, visitor: &mut V) {
47 visitor.visit_window_surface(self);
48 }
49}