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