1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/// Base data shared by all GML surface-patch types ([OGC 07-036 ยง10.5.12.1](https://docs.ogc.org/is/07-036/07-036.pdf)).
///
/// A surface patch is a sub-surface used as a building block inside a
/// [`Surface`](crate::model::geometry::primitives::Surface). Concrete
/// patch types are [`PolygonPatch`] and [`Triangle`].
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default)]
pub struct AbstractSurfacePatch {}
impl AbstractSurfacePatch {
pub fn new() -> Self {
Self {}
}
}
/// Object-safe read accessor for [`AbstractSurfacePatch`] fields.
pub trait AsAbstractSurfacePatch {
/// Returns a reference to the embedded [`AbstractSurfacePatch`] base data.
fn abstract_surface_patch(&self) -> &AbstractSurfacePatch;
}
/// Mutable companion to [`AsAbstractSurfacePatch`].
pub trait AsAbstractSurfacePatchMut: AsAbstractSurfacePatch {
/// Returns a mutable reference to the embedded [`AbstractSurfacePatch`] base data.
fn abstract_surface_patch_mut(&mut self) -> &mut AbstractSurfacePatch;
}
impl AsAbstractSurfacePatch for AbstractSurfacePatch {
fn abstract_surface_patch(&self) -> &AbstractSurfacePatch {
self
}
}
impl AsAbstractSurfacePatchMut for AbstractSurfacePatch {
fn abstract_surface_patch_mut(&mut self) -> &mut AbstractSurfacePatch {
self
}
}