use strum_macros::{Display, EnumIter};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, EnumIter, Display)]
pub enum CityObjectClass {
AuxiliaryTrafficArea,
AuxiliaryTrafficSpace,
Bridge,
BridgeConstructiveElement,
BridgeFurniture,
BridgeInstallation,
BridgePart,
BridgeRoom,
Building,
BuildingConstructiveElement,
BuildingFurniture,
BuildingInstallation,
BuildingPart,
BuildingRoom,
BuildingUnit,
CeilingSurface,
CityFurniture,
CityObjectGroup,
ClearanceSpace,
Door,
DoorSurface,
FloorSurface,
GenericLogicalSpace,
GenericOccupiedSpace,
GenericThematicSurface,
GenericUnoccupiedSpace,
GroundSurface,
Hole,
HoleSurface,
HollowSpace,
InteriorWallSurface,
Intersection,
Marking,
OtherConstruction,
OuterCeilingSurface,
OuterFloorSurface,
PlantCover,
Railway,
ReliefFeature,
Road,
RoofSurface,
Section,
SolitaryVegetationObject,
Square,
Story,
TinRelief,
Track,
TrafficArea,
TrafficSpace,
Tunnel,
TunnelConstructiveElement,
TunnelFurniture,
TunnelInstallation,
TunnelPart,
WallSurface,
WaterBody,
WaterGroundSurface,
WaterSurface,
Waterway,
Window,
WindowSurface,
}
impl CityObjectClass {
pub fn is_top_level(&self) -> bool {
match self {
Self::AuxiliaryTrafficArea => false,
Self::AuxiliaryTrafficSpace => false,
Self::Bridge => true,
Self::BridgeConstructiveElement => false,
Self::BridgeFurniture => false,
Self::BridgeInstallation => false,
Self::BridgePart => false,
Self::BridgeRoom => false,
Self::Building => true,
Self::BuildingConstructiveElement => false,
Self::BuildingFurniture => false,
Self::BuildingInstallation => false,
Self::BuildingPart => false,
Self::BuildingRoom => false,
Self::BuildingUnit => false,
Self::CeilingSurface => false,
Self::CityFurniture => true,
Self::CityObjectGroup => true,
Self::ClearanceSpace => false,
Self::Door => false,
Self::DoorSurface => false,
Self::FloorSurface => false,
Self::GenericLogicalSpace => true,
Self::GenericOccupiedSpace => true,
Self::GenericThematicSurface => false,
Self::GenericUnoccupiedSpace => true,
Self::GroundSurface => false,
Self::Hole => false,
Self::HoleSurface => false,
Self::HollowSpace => false,
Self::InteriorWallSurface => false,
Self::Intersection => false,
Self::Marking => false,
Self::OtherConstruction => true,
Self::OuterCeilingSurface => false,
Self::OuterFloorSurface => false,
Self::PlantCover => true,
Self::Railway => true,
Self::ReliefFeature => true,
Self::Road => true,
Self::RoofSurface => false,
Self::Section => false,
Self::SolitaryVegetationObject => true,
Self::Square => false,
Self::Story => false,
Self::TinRelief => false,
Self::Track => true,
Self::TrafficArea => false,
Self::TrafficSpace => false,
Self::Tunnel => true,
Self::TunnelConstructiveElement => false,
Self::TunnelFurniture => false,
Self::TunnelInstallation => false,
Self::TunnelPart => false,
Self::WallSurface => false,
Self::WaterBody => true,
Self::WaterGroundSurface => false,
Self::WaterSurface => false,
Self::Waterway => true,
Self::Window => false,
Self::WindowSurface => false,
}
}
}