Program Listing for File Ifc4.h

Return to documentation for file (src/ifcparse/Ifc4.h)

/********************************************************************************
 *                                                                              *
 * This file is part of IfcOpenShell.                                           *
 *                                                                              *
 * IfcOpenShell is free software: you can redistribute it and/or modify         *
 * it under the terms of the Lesser GNU General Public License as published by  *
 * the Free Software Foundation, either version 3.0 of the License, or          *
 * (at your option) any later version.                                          *
 *                                                                              *
 * IfcOpenShell is distributed in the hope that it will be useful,              *
 * but WITHOUT ANY WARRANTY; without even the implied warranty of               *
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the                 *
 * Lesser GNU General Public License for more details.                          *
 *                                                                              *
 * You should have received a copy of the Lesser GNU General Public License     *
 * along with this program. If not, see <http://www.gnu.org/licenses/>.         *
 *                                                                              *
 ********************************************************************************/

/********************************************************************************
 *                                                                              *
 * This file has been generated from IFC4.exp. Do not make modifications        *
 * but instead modify the python script that has been used to generate this.    *
 *                                                                              *
 ********************************************************************************/

#ifndef IFC4_H
#define IFC4_H

#include <string>
#include <vector>

#include <boost/optional.hpp>

#include "../ifcparse/ifc_parse_api.h"

#include "../ifcparse/IfcEntityList.h"
#include "../ifcparse/IfcBaseClass.h"
#include "../ifcparse/IfcSchema.h"
#include "../ifcparse/IfcException.h"
#include "../ifcparse/Argument.h"

struct Ifc4 {

static const IfcParse::schema_definition& get_schema();

static const char* const Identifier;

// Forward definitions
class IfcActionRequest; class IfcActor; class IfcActorRole; class IfcActuator; class IfcActuatorType; class IfcAddress; class IfcAdvancedBrep; class IfcAdvancedBrepWithVoids; class IfcAdvancedFace; class IfcAirTerminal; class IfcAirTerminalBox; class IfcAirTerminalBoxType; class IfcAirTerminalType; class IfcAirToAirHeatRecovery; class IfcAirToAirHeatRecoveryType; class IfcAlarm; class IfcAlarmType; class IfcAnnotation; class IfcAnnotationFillArea; class IfcApplication; class IfcAppliedValue; class IfcApproval; class IfcApprovalRelationship; class IfcArbitraryClosedProfileDef; class IfcArbitraryOpenProfileDef; class IfcArbitraryProfileDefWithVoids; class IfcAsset; class IfcAsymmetricIShapeProfileDef; class IfcAudioVisualAppliance; class IfcAudioVisualApplianceType; class IfcAxis1Placement; class IfcAxis2Placement2D; class IfcAxis2Placement3D; class IfcBSplineCurve; class IfcBSplineCurveWithKnots; class IfcBSplineSurface; class IfcBSplineSurfaceWithKnots; class IfcBeam; class IfcBeamStandardCase; class IfcBeamType; class IfcBlobTexture; class IfcBlock; class IfcBoiler; class IfcBoilerType; class IfcBooleanClippingResult; class IfcBooleanResult; class IfcBoundaryCondition; class IfcBoundaryCurve; class IfcBoundaryEdgeCondition; class IfcBoundaryFaceCondition; class IfcBoundaryNodeCondition; class IfcBoundaryNodeConditionWarping; class IfcBoundedCurve; class IfcBoundedSurface; class IfcBoundingBox; class IfcBoxedHalfSpace; class IfcBuilding; class IfcBuildingElement; class IfcBuildingElementPart; class IfcBuildingElementPartType; class IfcBuildingElementProxy; class IfcBuildingElementProxyType; class IfcBuildingElementType; class IfcBuildingStorey; class IfcBuildingSystem; class IfcBurner; class IfcBurnerType; class IfcCShapeProfileDef; class IfcCableCarrierFitting; class IfcCableCarrierFittingType; class IfcCableCarrierSegment; class IfcCableCarrierSegmentType; class IfcCableFitting; class IfcCableFittingType; class IfcCableSegment; class IfcCableSegmentType; class IfcCartesianPoint; class IfcCartesianPointList; class IfcCartesianPointList2D; class IfcCartesianPointList3D; class IfcCartesianTransformationOperator; class IfcCartesianTransformationOperator2D; class IfcCartesianTransformationOperator2DnonUniform; class IfcCartesianTransformationOperator3D; class IfcCartesianTransformationOperator3DnonUniform; class IfcCenterLineProfileDef; class IfcChiller; class IfcChillerType; class IfcChimney; class IfcChimneyType; class IfcCircle; class IfcCircleHollowProfileDef; class IfcCircleProfileDef; class IfcCivilElement; class IfcCivilElementType; class IfcClassification; class IfcClassificationReference; class IfcClosedShell; class IfcCoil; class IfcCoilType; class IfcColourRgb; class IfcColourRgbList; class IfcColourSpecification; class IfcColumn; class IfcColumnStandardCase; class IfcColumnType; class IfcCommunicationsAppliance; class IfcCommunicationsApplianceType; class IfcComplexProperty; class IfcComplexPropertyTemplate; class IfcCompositeCurve; class IfcCompositeCurveOnSurface; class IfcCompositeCurveSegment; class IfcCompositeProfileDef; class IfcCompressor; class IfcCompressorType; class IfcCondenser; class IfcCondenserType; class IfcConic; class IfcConnectedFaceSet; class IfcConnectionCurveGeometry; class IfcConnectionGeometry; class IfcConnectionPointEccentricity; class IfcConnectionPointGeometry; class IfcConnectionSurfaceGeometry; class IfcConnectionVolumeGeometry; class IfcConstraint; class IfcConstructionEquipmentResource; class IfcConstructionEquipmentResourceType; class IfcConstructionMaterialResource; class IfcConstructionMaterialResourceType; class IfcConstructionProductResource; class IfcConstructionProductResourceType; class IfcConstructionResource; class IfcConstructionResourceType; class IfcContext; class IfcContextDependentUnit; class IfcControl; class IfcController; class IfcControllerType; class IfcConversionBasedUnit; class IfcConversionBasedUnitWithOffset; class IfcCooledBeam; class IfcCooledBeamType; class IfcCoolingTower; class IfcCoolingTowerType; class IfcCoordinateOperation; class IfcCoordinateReferenceSystem; class IfcCostItem; class IfcCostSchedule; class IfcCostValue; class IfcCovering; class IfcCoveringType; class IfcCrewResource; class IfcCrewResourceType; class IfcCsgPrimitive3D; class IfcCsgSolid; class IfcCurrencyRelationship; class IfcCurtainWall; class IfcCurtainWallType; class IfcCurve; class IfcCurveBoundedPlane; class IfcCurveBoundedSurface; class IfcCurveStyle; class IfcCurveStyleFont; class IfcCurveStyleFontAndScaling; class IfcCurveStyleFontPattern; class IfcCylindricalSurface; class IfcDamper; class IfcDamperType; class IfcDerivedProfileDef; class IfcDerivedUnit; class IfcDerivedUnitElement; class IfcDimensionalExponents; class IfcDirection; class IfcDiscreteAccessory; class IfcDiscreteAccessoryType; class IfcDistributionChamberElement; class IfcDistributionChamberElementType; class IfcDistributionCircuit; class IfcDistributionControlElement; class IfcDistributionControlElementType; class IfcDistributionElement; class IfcDistributionElementType; class IfcDistributionFlowElement; class IfcDistributionFlowElementType; class IfcDistributionPort; class IfcDistributionSystem; class IfcDocumentInformation; class IfcDocumentInformationRelationship; class IfcDocumentReference; class IfcDoor; class IfcDoorLiningProperties; class IfcDoorPanelProperties; class IfcDoorStandardCase; class IfcDoorStyle; class IfcDoorType; class IfcDraughtingPreDefinedColour; class IfcDraughtingPreDefinedCurveFont; class IfcDuctFitting; class IfcDuctFittingType; class IfcDuctSegment; class IfcDuctSegmentType; class IfcDuctSilencer; class IfcDuctSilencerType; class IfcEdge; class IfcEdgeCurve; class IfcEdgeLoop; class IfcElectricAppliance; class IfcElectricApplianceType; class IfcElectricDistributionBoard; class IfcElectricDistributionBoardType; class IfcElectricFlowStorageDevice; class IfcElectricFlowStorageDeviceType; class IfcElectricGenerator; class IfcElectricGeneratorType; class IfcElectricMotor; class IfcElectricMotorType; class IfcElectricTimeControl; class IfcElectricTimeControlType; class IfcElement; class IfcElementAssembly; class IfcElementAssemblyType; class IfcElementComponent; class IfcElementComponentType; class IfcElementQuantity; class IfcElementType; class IfcElementarySurface; class IfcEllipse; class IfcEllipseProfileDef; class IfcEnergyConversionDevice; class IfcEnergyConversionDeviceType; class IfcEngine; class IfcEngineType; class IfcEvaporativeCooler; class IfcEvaporativeCoolerType; class IfcEvaporator; class IfcEvaporatorType; class IfcEvent; class IfcEventTime; class IfcEventType; class IfcExtendedProperties; class IfcExternalInformation; class IfcExternalReference; class IfcExternalReferenceRelationship; class IfcExternalSpatialElement; class IfcExternalSpatialStructureElement; class IfcExternallyDefinedHatchStyle; class IfcExternallyDefinedSurfaceStyle; class IfcExternallyDefinedTextFont; class IfcExtrudedAreaSolid; class IfcExtrudedAreaSolidTapered; class IfcFace; class IfcFaceBasedSurfaceModel; class IfcFaceBound; class IfcFaceOuterBound; class IfcFaceSurface; class IfcFacetedBrep; class IfcFacetedBrepWithVoids; class IfcFailureConnectionCondition; class IfcFan; class IfcFanType; class IfcFastener; class IfcFastenerType; class IfcFeatureElement; class IfcFeatureElementAddition; class IfcFeatureElementSubtraction; class IfcFillAreaStyle; class IfcFillAreaStyleHatching; class IfcFillAreaStyleTiles; class IfcFilter; class IfcFilterType; class IfcFireSuppressionTerminal; class IfcFireSuppressionTerminalType; class IfcFixedReferenceSweptAreaSolid; class IfcFlowController; class IfcFlowControllerType; class IfcFlowFitting; class IfcFlowFittingType; class IfcFlowInstrument; class IfcFlowInstrumentType; class IfcFlowMeter; class IfcFlowMeterType; class IfcFlowMovingDevice; class IfcFlowMovingDeviceType; class IfcFlowSegment; class IfcFlowSegmentType; class IfcFlowStorageDevice; class IfcFlowStorageDeviceType; class IfcFlowTerminal; class IfcFlowTerminalType; class IfcFlowTreatmentDevice; class IfcFlowTreatmentDeviceType; class IfcFooting; class IfcFootingType; class IfcFurnishingElement; class IfcFurnishingElementType; class IfcFurniture; class IfcFurnitureType; class IfcGeographicElement; class IfcGeographicElementType; class IfcGeometricCurveSet; class IfcGeometricRepresentationContext; class IfcGeometricRepresentationItem; class IfcGeometricRepresentationSubContext; class IfcGeometricSet; class IfcGrid; class IfcGridAxis; class IfcGridPlacement; class IfcGroup; class IfcHalfSpaceSolid; class IfcHeatExchanger; class IfcHeatExchangerType; class IfcHumidifier; class IfcHumidifierType; class IfcIShapeProfileDef; class IfcImageTexture; class IfcIndexedColourMap; class IfcIndexedPolyCurve; class IfcIndexedPolygonalFace; class IfcIndexedPolygonalFaceWithVoids; class IfcIndexedTextureMap; class IfcIndexedTriangleTextureMap; class IfcInterceptor; class IfcInterceptorType; class IfcIntersectionCurve; class IfcInventory; class IfcIrregularTimeSeries; class IfcIrregularTimeSeriesValue; class IfcJunctionBox; class IfcJunctionBoxType; class IfcLShapeProfileDef; class IfcLaborResource; class IfcLaborResourceType; class IfcLagTime; class IfcLamp; class IfcLampType; class IfcLibraryInformation; class IfcLibraryReference; class IfcLightDistributionData; class IfcLightFixture; class IfcLightFixtureType; class IfcLightIntensityDistribution; class IfcLightSource; class IfcLightSourceAmbient; class IfcLightSourceDirectional; class IfcLightSourceGoniometric; class IfcLightSourcePositional; class IfcLightSourceSpot; class IfcLine; class IfcLocalPlacement; class IfcLoop; class IfcManifoldSolidBrep; class IfcMapConversion; class IfcMappedItem; class IfcMaterial; class IfcMaterialClassificationRelationship; class IfcMaterialConstituent; class IfcMaterialConstituentSet; class IfcMaterialDefinition; class IfcMaterialDefinitionRepresentation; class IfcMaterialLayer; class IfcMaterialLayerSet; class IfcMaterialLayerSetUsage; class IfcMaterialLayerWithOffsets; class IfcMaterialList; class IfcMaterialProfile; class IfcMaterialProfileSet; class IfcMaterialProfileSetUsage; class IfcMaterialProfileSetUsageTapering; class IfcMaterialProfileWithOffsets; class IfcMaterialProperties; class IfcMaterialRelationship; class IfcMaterialUsageDefinition; class IfcMeasureWithUnit; class IfcMechanicalFastener; class IfcMechanicalFastenerType; class IfcMedicalDevice; class IfcMedicalDeviceType; class IfcMember; class IfcMemberStandardCase; class IfcMemberType; class IfcMetric; class IfcMirroredProfileDef; class IfcMonetaryUnit; class IfcMotorConnection; class IfcMotorConnectionType; class IfcNamedUnit; class IfcObject; class IfcObjectDefinition; class IfcObjectPlacement; class IfcObjective; class IfcOccupant; class IfcOffsetCurve2D; class IfcOffsetCurve3D; class IfcOpenShell; class IfcOpeningElement; class IfcOpeningStandardCase; class IfcOrganization; class IfcOrganizationRelationship; class IfcOrientedEdge; class IfcOuterBoundaryCurve; class IfcOutlet; class IfcOutletType; class IfcOwnerHistory; class IfcParameterizedProfileDef; class IfcPath; class IfcPcurve; class IfcPerformanceHistory; class IfcPermeableCoveringProperties; class IfcPermit; class IfcPerson; class IfcPersonAndOrganization; class IfcPhysicalComplexQuantity; class IfcPhysicalQuantity; class IfcPhysicalSimpleQuantity; class IfcPile; class IfcPileType; class IfcPipeFitting; class IfcPipeFittingType; class IfcPipeSegment; class IfcPipeSegmentType; class IfcPixelTexture; class IfcPlacement; class IfcPlanarBox; class IfcPlanarExtent; class IfcPlane; class IfcPlate; class IfcPlateStandardCase; class IfcPlateType; class IfcPoint; class IfcPointOnCurve; class IfcPointOnSurface; class IfcPolyLoop; class IfcPolygonalBoundedHalfSpace; class IfcPolygonalFaceSet; class IfcPolyline; class IfcPort; class IfcPostalAddress; class IfcPreDefinedColour; class IfcPreDefinedCurveFont; class IfcPreDefinedItem; class IfcPreDefinedProperties; class IfcPreDefinedPropertySet; class IfcPreDefinedTextFont; class IfcPresentationItem; class IfcPresentationLayerAssignment; class IfcPresentationLayerWithStyle; class IfcPresentationStyle; class IfcPresentationStyleAssignment; class IfcProcedure; class IfcProcedureType; class IfcProcess; class IfcProduct; class IfcProductDefinitionShape; class IfcProductRepresentation; class IfcProfileDef; class IfcProfileProperties; class IfcProject; class IfcProjectLibrary; class IfcProjectOrder; class IfcProjectedCRS; class IfcProjectionElement; class IfcProperty; class IfcPropertyAbstraction; class IfcPropertyBoundedValue; class IfcPropertyDefinition; class IfcPropertyDependencyRelationship; class IfcPropertyEnumeratedValue; class IfcPropertyEnumeration; class IfcPropertyListValue; class IfcPropertyReferenceValue; class IfcPropertySet; class IfcPropertySetDefinition; class IfcPropertySetTemplate; class IfcPropertySingleValue; class IfcPropertyTableValue; class IfcPropertyTemplate; class IfcPropertyTemplateDefinition; class IfcProtectiveDevice; class IfcProtectiveDeviceTrippingUnit; class IfcProtectiveDeviceTrippingUnitType; class IfcProtectiveDeviceType; class IfcProxy; class IfcPump; class IfcPumpType; class IfcQuantityArea; class IfcQuantityCount; class IfcQuantityLength; class IfcQuantitySet; class IfcQuantityTime; class IfcQuantityVolume; class IfcQuantityWeight; class IfcRailing; class IfcRailingType; class IfcRamp; class IfcRampFlight; class IfcRampFlightType; class IfcRampType; class IfcRationalBSplineCurveWithKnots; class IfcRationalBSplineSurfaceWithKnots; class IfcRectangleHollowProfileDef; class IfcRectangleProfileDef; class IfcRectangularPyramid; class IfcRectangularTrimmedSurface; class IfcRecurrencePattern; class IfcReference; class IfcRegularTimeSeries; class IfcReinforcementBarProperties; class IfcReinforcementDefinitionProperties; class IfcReinforcingBar; class IfcReinforcingBarType; class IfcReinforcingElement; class IfcReinforcingElementType; class IfcReinforcingMesh; class IfcReinforcingMeshType; class IfcRelAggregates; class IfcRelAssigns; class IfcRelAssignsToActor; class IfcRelAssignsToControl; class IfcRelAssignsToGroup; class IfcRelAssignsToGroupByFactor; class IfcRelAssignsToProcess; class IfcRelAssignsToProduct; class IfcRelAssignsToResource; class IfcRelAssociates; class IfcRelAssociatesApproval; class IfcRelAssociatesClassification; class IfcRelAssociatesConstraint; class IfcRelAssociatesDocument; class IfcRelAssociatesLibrary; class IfcRelAssociatesMaterial; class IfcRelConnects; class IfcRelConnectsElements; class IfcRelConnectsPathElements; class IfcRelConnectsPortToElement; class IfcRelConnectsPorts; class IfcRelConnectsStructuralActivity; class IfcRelConnectsStructuralMember; class IfcRelConnectsWithEccentricity; class IfcRelConnectsWithRealizingElements; class IfcRelContainedInSpatialStructure; class IfcRelCoversBldgElements; class IfcRelCoversSpaces; class IfcRelDeclares; class IfcRelDecomposes; class IfcRelDefines; class IfcRelDefinesByObject; class IfcRelDefinesByProperties; class IfcRelDefinesByTemplate; class IfcRelDefinesByType; class IfcRelFillsElement; class IfcRelFlowControlElements; class IfcRelInterferesElements; class IfcRelNests; class IfcRelProjectsElement; class IfcRelReferencedInSpatialStructure; class IfcRelSequence; class IfcRelServicesBuildings; class IfcRelSpaceBoundary; class IfcRelSpaceBoundary1stLevel; class IfcRelSpaceBoundary2ndLevel; class IfcRelVoidsElement; class IfcRelationship; class IfcReparametrisedCompositeCurveSegment; class IfcRepresentation; class IfcRepresentationContext; class IfcRepresentationItem; class IfcRepresentationMap; class IfcResource; class IfcResourceApprovalRelationship; class IfcResourceConstraintRelationship; class IfcResourceLevelRelationship; class IfcResourceTime; class IfcRevolvedAreaSolid; class IfcRevolvedAreaSolidTapered; class IfcRightCircularCone; class IfcRightCircularCylinder; class IfcRoof; class IfcRoofType; class IfcRoot; class IfcRoundedRectangleProfileDef; class IfcSIUnit; class IfcSanitaryTerminal; class IfcSanitaryTerminalType; class IfcSchedulingTime; class IfcSeamCurve; class IfcSectionProperties; class IfcSectionReinforcementProperties; class IfcSectionedSpine; class IfcSensor; class IfcSensorType; class IfcShadingDevice; class IfcShadingDeviceType; class IfcShapeAspect; class IfcShapeModel; class IfcShapeRepresentation; class IfcShellBasedSurfaceModel; class IfcSimpleProperty; class IfcSimplePropertyTemplate; class IfcSite; class IfcSlab; class IfcSlabElementedCase; class IfcSlabStandardCase; class IfcSlabType; class IfcSlippageConnectionCondition; class IfcSolarDevice; class IfcSolarDeviceType; class IfcSolidModel; class IfcSpace; class IfcSpaceHeater; class IfcSpaceHeaterType; class IfcSpaceType; class IfcSpatialElement; class IfcSpatialElementType; class IfcSpatialStructureElement; class IfcSpatialStructureElementType; class IfcSpatialZone; class IfcSpatialZoneType; class IfcSphere; class IfcSphericalSurface; class IfcStackTerminal; class IfcStackTerminalType; class IfcStair; class IfcStairFlight; class IfcStairFlightType; class IfcStairType; class IfcStructuralAction; class IfcStructuralActivity; class IfcStructuralAnalysisModel; class IfcStructuralConnection; class IfcStructuralConnectionCondition; class IfcStructuralCurveAction; class IfcStructuralCurveConnection; class IfcStructuralCurveMember; class IfcStructuralCurveMemberVarying; class IfcStructuralCurveReaction; class IfcStructuralItem; class IfcStructuralLinearAction; class IfcStructuralLoad; class IfcStructuralLoadCase; class IfcStructuralLoadConfiguration; class IfcStructuralLoadGroup; class IfcStructuralLoadLinearForce; class IfcStructuralLoadOrResult; class IfcStructuralLoadPlanarForce; class IfcStructuralLoadSingleDisplacement; class IfcStructuralLoadSingleDisplacementDistortion; class IfcStructuralLoadSingleForce; class IfcStructuralLoadSingleForceWarping; class IfcStructuralLoadStatic; class IfcStructuralLoadTemperature; class IfcStructuralMember; class IfcStructuralPlanarAction; class IfcStructuralPointAction; class IfcStructuralPointConnection; class IfcStructuralPointReaction; class IfcStructuralReaction; class IfcStructuralResultGroup; class IfcStructuralSurfaceAction; class IfcStructuralSurfaceConnection; class IfcStructuralSurfaceMember; class IfcStructuralSurfaceMemberVarying; class IfcStructuralSurfaceReaction; class IfcStyleModel; class IfcStyledItem; class IfcStyledRepresentation; class IfcSubContractResource; class IfcSubContractResourceType; class IfcSubedge; class IfcSurface; class IfcSurfaceCurve; class IfcSurfaceCurveSweptAreaSolid; class IfcSurfaceFeature; class IfcSurfaceOfLinearExtrusion; class IfcSurfaceOfRevolution; class IfcSurfaceReinforcementArea; class IfcSurfaceStyle; class IfcSurfaceStyleLighting; class IfcSurfaceStyleRefraction; class IfcSurfaceStyleRendering; class IfcSurfaceStyleShading; class IfcSurfaceStyleWithTextures; class IfcSurfaceTexture; class IfcSweptAreaSolid; class IfcSweptDiskSolid; class IfcSweptDiskSolidPolygonal; class IfcSweptSurface; class IfcSwitchingDevice; class IfcSwitchingDeviceType; class IfcSystem; class IfcSystemFurnitureElement; class IfcSystemFurnitureElementType; class IfcTShapeProfileDef; class IfcTable; class IfcTableColumn; class IfcTableRow; class IfcTank; class IfcTankType; class IfcTask; class IfcTaskTime; class IfcTaskTimeRecurring; class IfcTaskType; class IfcTelecomAddress; class IfcTendon; class IfcTendonAnchor; class IfcTendonAnchorType; class IfcTendonType; class IfcTessellatedFaceSet; class IfcTessellatedItem; class IfcTextLiteral; class IfcTextLiteralWithExtent; class IfcTextStyle; class IfcTextStyleFontModel; class IfcTextStyleForDefinedFont; class IfcTextStyleTextModel; class IfcTextureCoordinate; class IfcTextureCoordinateGenerator; class IfcTextureMap; class IfcTextureVertex; class IfcTextureVertexList; class IfcTimePeriod; class IfcTimeSeries; class IfcTimeSeriesValue; class IfcTopologicalRepresentationItem; class IfcTopologyRepresentation; class IfcToroidalSurface; class IfcTransformer; class IfcTransformerType; class IfcTransportElement; class IfcTransportElementType; class IfcTrapeziumProfileDef; class IfcTriangulatedFaceSet; class IfcTrimmedCurve; class IfcTubeBundle; class IfcTubeBundleType; class IfcTypeObject; class IfcTypeProcess; class IfcTypeProduct; class IfcTypeResource; class IfcUShapeProfileDef; class IfcUnitAssignment; class IfcUnitaryControlElement; class IfcUnitaryControlElementType; class IfcUnitaryEquipment; class IfcUnitaryEquipmentType; class IfcValve; class IfcValveType; class IfcVector; class IfcVertex; class IfcVertexLoop; class IfcVertexPoint; class IfcVibrationIsolator; class IfcVibrationIsolatorType; class IfcVirtualElement; class IfcVirtualGridIntersection; class IfcVoidingFeature; class IfcWall; class IfcWallElementedCase; class IfcWallStandardCase; class IfcWallType; class IfcWasteTerminal; class IfcWasteTerminalType; class IfcWindow; class IfcWindowLiningProperties; class IfcWindowPanelProperties; class IfcWindowStandardCase; class IfcWindowStyle; class IfcWindowType; class IfcWorkCalendar; class IfcWorkControl; class IfcWorkPlan; class IfcWorkSchedule; class IfcWorkTime; class IfcZShapeProfileDef; class IfcZone; class IfcAbsorbedDoseMeasure; class IfcAccelerationMeasure; class IfcAmountOfSubstanceMeasure; class IfcAngularVelocityMeasure; class IfcArcIndex; class IfcAreaDensityMeasure; class IfcAreaMeasure; class IfcBinary; class IfcBoolean; class IfcBoxAlignment; class IfcCardinalPointReference; class IfcComplexNumber; class IfcCompoundPlaneAngleMeasure; class IfcContextDependentMeasure; class IfcCountMeasure; class IfcCurvatureMeasure; class IfcDate; class IfcDateTime; class IfcDayInMonthNumber; class IfcDayInWeekNumber; class IfcDescriptiveMeasure; class IfcDimensionCount; class IfcDoseEquivalentMeasure; class IfcDuration; class IfcDynamicViscosityMeasure; class IfcElectricCapacitanceMeasure; class IfcElectricChargeMeasure; class IfcElectricConductanceMeasure; class IfcElectricCurrentMeasure; class IfcElectricResistanceMeasure; class IfcElectricVoltageMeasure; class IfcEnergyMeasure; class IfcFontStyle; class IfcFontVariant; class IfcFontWeight; class IfcForceMeasure; class IfcFrequencyMeasure; class IfcGloballyUniqueId; class IfcHeatFluxDensityMeasure; class IfcHeatingValueMeasure; class IfcIdentifier; class IfcIlluminanceMeasure; class IfcInductanceMeasure; class IfcInteger; class IfcIntegerCountRateMeasure; class IfcIonConcentrationMeasure; class IfcIsothermalMoistureCapacityMeasure; class IfcKinematicViscosityMeasure; class IfcLabel; class IfcLanguageId; class IfcLengthMeasure; class IfcLineIndex; class IfcLinearForceMeasure; class IfcLinearMomentMeasure; class IfcLinearStiffnessMeasure; class IfcLinearVelocityMeasure; class IfcLogical; class IfcLuminousFluxMeasure; class IfcLuminousIntensityDistributionMeasure; class IfcLuminousIntensityMeasure; class IfcMagneticFluxDensityMeasure; class IfcMagneticFluxMeasure; class IfcMassDensityMeasure; class IfcMassFlowRateMeasure; class IfcMassMeasure; class IfcMassPerLengthMeasure; class IfcModulusOfElasticityMeasure; class IfcModulusOfLinearSubgradeReactionMeasure; class IfcModulusOfRotationalSubgradeReactionMeasure; class IfcModulusOfSubgradeReactionMeasure; class IfcMoistureDiffusivityMeasure; class IfcMolecularWeightMeasure; class IfcMomentOfInertiaMeasure; class IfcMonetaryMeasure; class IfcMonthInYearNumber; class IfcNonNegativeLengthMeasure; class IfcNormalisedRatioMeasure; class IfcNumericMeasure; class IfcPHMeasure; class IfcParameterValue; class IfcPlanarForceMeasure; class IfcPlaneAngleMeasure; class IfcPositiveInteger; class IfcPositiveLengthMeasure; class IfcPositivePlaneAngleMeasure; class IfcPositiveRatioMeasure; class IfcPowerMeasure; class IfcPresentableText; class IfcPressureMeasure; class IfcPropertySetDefinitionSet; class IfcRadioActivityMeasure; class IfcRatioMeasure; class IfcReal; class IfcRotationalFrequencyMeasure; class IfcRotationalMassMeasure; class IfcRotationalStiffnessMeasure; class IfcSectionModulusMeasure; class IfcSectionalAreaIntegralMeasure; class IfcShearModulusMeasure; class IfcSolidAngleMeasure; class IfcSoundPowerLevelMeasure; class IfcSoundPowerMeasure; class IfcSoundPressureLevelMeasure; class IfcSoundPressureMeasure; class IfcSpecificHeatCapacityMeasure; class IfcSpecularExponent; class IfcSpecularRoughness; class IfcTemperatureGradientMeasure; class IfcTemperatureRateOfChangeMeasure; class IfcText; class IfcTextAlignment; class IfcTextDecoration; class IfcTextFontName; class IfcTextTransformation; class IfcThermalAdmittanceMeasure; class IfcThermalConductivityMeasure; class IfcThermalExpansionCoefficientMeasure; class IfcThermalResistanceMeasure; class IfcThermalTransmittanceMeasure; class IfcThermodynamicTemperatureMeasure; class IfcTime; class IfcTimeMeasure; class IfcTimeStamp; class IfcTorqueMeasure; class IfcURIReference; class IfcVaporPermeabilityMeasure; class IfcVolumeMeasure; class IfcVolumetricFlowRateMeasure; class IfcWarpingConstantMeasure; class IfcWarpingMomentMeasure;

typedef IfcUtil::IfcBaseClass IfcActorSelect;
typedef IfcUtil::IfcBaseClass IfcAppliedValueSelect;
typedef IfcUtil::IfcBaseClass IfcAxis2Placement;
typedef IfcUtil::IfcBaseClass IfcBendingParameterSelect;
typedef IfcUtil::IfcBaseClass IfcBooleanOperand;
typedef IfcUtil::IfcBaseClass IfcClassificationReferenceSelect;
typedef IfcUtil::IfcBaseClass IfcClassificationSelect;
typedef IfcUtil::IfcBaseClass IfcColour;
typedef IfcUtil::IfcBaseClass IfcColourOrFactor;
typedef IfcUtil::IfcBaseClass IfcCoordinateReferenceSystemSelect;
typedef IfcUtil::IfcBaseClass IfcCsgSelect;
typedef IfcUtil::IfcBaseClass IfcCurveFontOrScaledCurveFontSelect;

typedef IfcUtil::IfcBaseClass IfcCurveOnSurface;
typedef IfcUtil::IfcBaseClass IfcCurveOrEdgeCurve;
typedef IfcUtil::IfcBaseClass IfcCurveStyleFontSelect;
typedef IfcUtil::IfcBaseClass IfcDefinitionSelect;
typedef IfcUtil::IfcBaseClass IfcDerivedMeasureValue;
typedef IfcUtil::IfcBaseClass IfcDocumentSelect;
typedef IfcUtil::IfcBaseClass IfcFillStyleSelect;
typedef IfcUtil::IfcBaseClass IfcGeometricSetSelect;
typedef IfcUtil::IfcBaseClass IfcGridPlacementDirectionSelect;
typedef IfcUtil::IfcBaseClass IfcHatchLineDistanceSelect;
typedef IfcUtil::IfcBaseClass IfcLayeredItem;
typedef IfcUtil::IfcBaseClass IfcLibrarySelect;
typedef IfcUtil::IfcBaseClass IfcLightDistributionDataSourceSelect;
typedef IfcUtil::IfcBaseClass IfcMaterialSelect;
typedef IfcUtil::IfcBaseClass IfcMeasureValue;
typedef IfcUtil::IfcBaseClass IfcMetricValueSelect;
typedef IfcUtil::IfcBaseClass IfcModulusOfRotationalSubgradeReactionSelect;
typedef IfcUtil::IfcBaseClass IfcModulusOfSubgradeReactionSelect;
typedef IfcUtil::IfcBaseClass IfcModulusOfTranslationalSubgradeReactionSelect;
typedef IfcUtil::IfcBaseClass IfcObjectReferenceSelect;
typedef IfcUtil::IfcBaseClass IfcPointOrVertexPoint;
typedef IfcUtil::IfcBaseClass IfcPresentationStyleSelect;
typedef IfcUtil::IfcBaseClass IfcProcessSelect;

typedef IfcUtil::IfcBaseClass IfcProductRepresentationSelect;
typedef IfcUtil::IfcBaseClass IfcProductSelect;

typedef IfcUtil::IfcBaseClass IfcPropertySetDefinitionSelect;
typedef IfcUtil::IfcBaseClass IfcResourceObjectSelect;
typedef IfcUtil::IfcBaseClass IfcResourceSelect;
typedef IfcUtil::IfcBaseClass IfcRotationalStiffnessSelect;

typedef IfcUtil::IfcBaseClass IfcSegmentIndexSelect;
typedef IfcUtil::IfcBaseClass IfcShell;
typedef IfcUtil::IfcBaseClass IfcSimpleValue;
typedef IfcUtil::IfcBaseClass IfcSizeSelect;
typedef IfcUtil::IfcBaseClass IfcSolidOrShell;
typedef IfcUtil::IfcBaseClass IfcSpaceBoundarySelect;
typedef IfcUtil::IfcBaseClass IfcSpecularHighlightSelect;
typedef IfcUtil::IfcBaseClass IfcStructuralActivityAssignmentSelect;
typedef IfcUtil::IfcBaseClass IfcStyleAssignmentSelect;
typedef IfcUtil::IfcBaseClass IfcSurfaceOrFaceSurface;
typedef IfcUtil::IfcBaseClass IfcSurfaceStyleElementSelect;
typedef IfcUtil::IfcBaseClass IfcTextFontSelect;
typedef IfcUtil::IfcBaseClass IfcTimeOrRatioSelect;
typedef IfcUtil::IfcBaseClass IfcTranslationalStiffnessSelect;
typedef IfcUtil::IfcBaseClass IfcTrimmingSelect;
typedef IfcUtil::IfcBaseClass IfcUnit;
typedef IfcUtil::IfcBaseClass IfcValue;
typedef IfcUtil::IfcBaseClass IfcVectorOrDirection;
typedef IfcUtil::IfcBaseClass IfcWarpingStiffnessSelect;
struct IfcActionRequestTypeEnum {
typedef enum {IfcActionRequestType_EMAIL, IfcActionRequestType_FAX, IfcActionRequestType_PHONE, IfcActionRequestType_POST, IfcActionRequestType_VERBAL, IfcActionRequestType_USERDEFINED, IfcActionRequestType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcActionSourceTypeEnum {
typedef enum {IfcActionSourceType_DEAD_LOAD_G, IfcActionSourceType_COMPLETION_G1, IfcActionSourceType_LIVE_LOAD_Q, IfcActionSourceType_SNOW_S, IfcActionSourceType_WIND_W, IfcActionSourceType_PRESTRESSING_P, IfcActionSourceType_SETTLEMENT_U, IfcActionSourceType_TEMPERATURE_T, IfcActionSourceType_EARTHQUAKE_E, IfcActionSourceType_FIRE, IfcActionSourceType_IMPULSE, IfcActionSourceType_IMPACT, IfcActionSourceType_TRANSPORT, IfcActionSourceType_ERECTION, IfcActionSourceType_PROPPING, IfcActionSourceType_SYSTEM_IMPERFECTION, IfcActionSourceType_SHRINKAGE, IfcActionSourceType_CREEP, IfcActionSourceType_LACK_OF_FIT, IfcActionSourceType_BUOYANCY, IfcActionSourceType_ICE, IfcActionSourceType_CURRENT, IfcActionSourceType_WAVE, IfcActionSourceType_RAIN, IfcActionSourceType_BRAKES, IfcActionSourceType_USERDEFINED, IfcActionSourceType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcActionTypeEnum {
typedef enum {IfcActionType_PERMANENT_G, IfcActionType_VARIABLE_Q, IfcActionType_EXTRAORDINARY_A, IfcActionType_USERDEFINED, IfcActionType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcActuatorTypeEnum {
typedef enum {IfcActuatorType_ELECTRICACTUATOR, IfcActuatorType_HANDOPERATEDACTUATOR, IfcActuatorType_HYDRAULICACTUATOR, IfcActuatorType_PNEUMATICACTUATOR, IfcActuatorType_THERMOSTATICACTUATOR, IfcActuatorType_USERDEFINED, IfcActuatorType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcAddressTypeEnum {
typedef enum {IfcAddressType_OFFICE, IfcAddressType_SITE, IfcAddressType_HOME, IfcAddressType_DISTRIBUTIONPOINT, IfcAddressType_USERDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcAirTerminalBoxTypeEnum {
typedef enum {IfcAirTerminalBoxType_CONSTANTFLOW, IfcAirTerminalBoxType_VARIABLEFLOWPRESSUREDEPENDANT, IfcAirTerminalBoxType_VARIABLEFLOWPRESSUREINDEPENDANT, IfcAirTerminalBoxType_USERDEFINED, IfcAirTerminalBoxType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcAirTerminalTypeEnum {
typedef enum {IfcAirTerminalType_DIFFUSER, IfcAirTerminalType_GRILLE, IfcAirTerminalType_LOUVRE, IfcAirTerminalType_REGISTER, IfcAirTerminalType_USERDEFINED, IfcAirTerminalType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcAirToAirHeatRecoveryTypeEnum {
typedef enum {IfcAirToAirHeatRecoveryType_FIXEDPLATECOUNTERFLOWEXCHANGER, IfcAirToAirHeatRecoveryType_FIXEDPLATECROSSFLOWEXCHANGER, IfcAirToAirHeatRecoveryType_FIXEDPLATEPARALLELFLOWEXCHANGER, IfcAirToAirHeatRecoveryType_ROTARYWHEEL, IfcAirToAirHeatRecoveryType_RUNAROUNDCOILLOOP, IfcAirToAirHeatRecoveryType_HEATPIPE, IfcAirToAirHeatRecoveryType_TWINTOWERENTHALPYRECOVERYLOOPS, IfcAirToAirHeatRecoveryType_THERMOSIPHONSEALEDTUBEHEATEXCHANGERS, IfcAirToAirHeatRecoveryType_THERMOSIPHONCOILTYPEHEATEXCHANGERS, IfcAirToAirHeatRecoveryType_USERDEFINED, IfcAirToAirHeatRecoveryType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcAlarmTypeEnum {
typedef enum {IfcAlarmType_BELL, IfcAlarmType_BREAKGLASSBUTTON, IfcAlarmType_LIGHT, IfcAlarmType_MANUALPULLBOX, IfcAlarmType_SIREN, IfcAlarmType_WHISTLE, IfcAlarmType_USERDEFINED, IfcAlarmType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcAnalysisModelTypeEnum {
typedef enum {IfcAnalysisModelType_IN_PLANE_LOADING_2D, IfcAnalysisModelType_OUT_PLANE_LOADING_2D, IfcAnalysisModelType_LOADING_3D, IfcAnalysisModelType_USERDEFINED, IfcAnalysisModelType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcAnalysisTheoryTypeEnum {
typedef enum {IfcAnalysisTheoryType_FIRST_ORDER_THEORY, IfcAnalysisTheoryType_SECOND_ORDER_THEORY, IfcAnalysisTheoryType_THIRD_ORDER_THEORY, IfcAnalysisTheoryType_FULL_NONLINEAR_THEORY, IfcAnalysisTheoryType_USERDEFINED, IfcAnalysisTheoryType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcArithmeticOperatorEnum {
typedef enum {IfcArithmeticOperator_ADD, IfcArithmeticOperator_DIVIDE, IfcArithmeticOperator_MULTIPLY, IfcArithmeticOperator_SUBTRACT} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcAssemblyPlaceEnum {
typedef enum {IfcAssemblyPlace_SITE, IfcAssemblyPlace_FACTORY, IfcAssemblyPlace_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcAudioVisualApplianceTypeEnum {
typedef enum {IfcAudioVisualApplianceType_AMPLIFIER, IfcAudioVisualApplianceType_CAMERA, IfcAudioVisualApplianceType_DISPLAY, IfcAudioVisualApplianceType_MICROPHONE, IfcAudioVisualApplianceType_PLAYER, IfcAudioVisualApplianceType_PROJECTOR, IfcAudioVisualApplianceType_RECEIVER, IfcAudioVisualApplianceType_SPEAKER, IfcAudioVisualApplianceType_SWITCHER, IfcAudioVisualApplianceType_TELEPHONE, IfcAudioVisualApplianceType_TUNER, IfcAudioVisualApplianceType_USERDEFINED, IfcAudioVisualApplianceType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcBSplineCurveForm {
typedef enum {IfcBSplineCurveForm_POLYLINE_FORM, IfcBSplineCurveForm_CIRCULAR_ARC, IfcBSplineCurveForm_ELLIPTIC_ARC, IfcBSplineCurveForm_PARABOLIC_ARC, IfcBSplineCurveForm_HYPERBOLIC_ARC, IfcBSplineCurveForm_UNSPECIFIED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcBSplineSurfaceForm {

typedef enum {IfcBSplineSurfaceForm_PLANE_SURF, IfcBSplineSurfaceForm_CYLINDRICAL_SURF, IfcBSplineSurfaceForm_CONICAL_SURF, IfcBSplineSurfaceForm_SPHERICAL_SURF, IfcBSplineSurfaceForm_TOROIDAL_SURF, IfcBSplineSurfaceForm_SURF_OF_REVOLUTION, IfcBSplineSurfaceForm_RULED_SURF, IfcBSplineSurfaceForm_GENERALISED_CONE, IfcBSplineSurfaceForm_QUADRIC_SURF, IfcBSplineSurfaceForm_SURF_OF_LINEAR_EXTRUSION, IfcBSplineSurfaceForm_UNSPECIFIED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcBeamTypeEnum {
typedef enum {IfcBeamType_BEAM, IfcBeamType_JOIST, IfcBeamType_HOLLOWCORE, IfcBeamType_LINTEL, IfcBeamType_SPANDREL, IfcBeamType_T_BEAM, IfcBeamType_USERDEFINED, IfcBeamType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcBenchmarkEnum {
typedef enum {IfcBenchmark_GREATERTHAN, IfcBenchmark_GREATERTHANOREQUALTO, IfcBenchmark_LESSTHAN, IfcBenchmark_LESSTHANOREQUALTO, IfcBenchmark_EQUALTO, IfcBenchmark_NOTEQUALTO, IfcBenchmark_INCLUDES, IfcBenchmark_NOTINCLUDES, IfcBenchmark_INCLUDEDIN, IfcBenchmark_NOTINCLUDEDIN} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcBoilerTypeEnum {
typedef enum {IfcBoilerType_WATER, IfcBoilerType_STEAM, IfcBoilerType_USERDEFINED, IfcBoilerType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcBooleanOperator {
typedef enum {IfcBooleanOperator_UNION, IfcBooleanOperator_INTERSECTION, IfcBooleanOperator_DIFFERENCE} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcBuildingElementPartTypeEnum {
typedef enum {IfcBuildingElementPartType_INSULATION, IfcBuildingElementPartType_PRECASTPANEL, IfcBuildingElementPartType_USERDEFINED, IfcBuildingElementPartType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcBuildingElementProxyTypeEnum {
typedef enum {IfcBuildingElementProxyType_COMPLEX, IfcBuildingElementProxyType_ELEMENT, IfcBuildingElementProxyType_PARTIAL, IfcBuildingElementProxyType_PROVISIONFORVOID, IfcBuildingElementProxyType_PROVISIONFORSPACE, IfcBuildingElementProxyType_USERDEFINED, IfcBuildingElementProxyType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcBuildingSystemTypeEnum {
typedef enum {IfcBuildingSystemType_FENESTRATION, IfcBuildingSystemType_FOUNDATION, IfcBuildingSystemType_LOADBEARING, IfcBuildingSystemType_OUTERSHELL, IfcBuildingSystemType_SHADING, IfcBuildingSystemType_TRANSPORT, IfcBuildingSystemType_USERDEFINED, IfcBuildingSystemType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcBurnerTypeEnum {
typedef enum {IfcBurnerType_USERDEFINED, IfcBurnerType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcCableCarrierFittingTypeEnum {
typedef enum {IfcCableCarrierFittingType_BEND, IfcCableCarrierFittingType_CROSS, IfcCableCarrierFittingType_REDUCER, IfcCableCarrierFittingType_TEE, IfcCableCarrierFittingType_USERDEFINED, IfcCableCarrierFittingType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcCableCarrierSegmentTypeEnum {
typedef enum {IfcCableCarrierSegmentType_CABLELADDERSEGMENT, IfcCableCarrierSegmentType_CABLETRAYSEGMENT, IfcCableCarrierSegmentType_CABLETRUNKINGSEGMENT, IfcCableCarrierSegmentType_CONDUITSEGMENT, IfcCableCarrierSegmentType_USERDEFINED, IfcCableCarrierSegmentType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcCableFittingTypeEnum {
typedef enum {IfcCableFittingType_CONNECTOR, IfcCableFittingType_ENTRY, IfcCableFittingType_EXIT, IfcCableFittingType_JUNCTION, IfcCableFittingType_TRANSITION, IfcCableFittingType_USERDEFINED, IfcCableFittingType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcCableSegmentTypeEnum {
typedef enum {IfcCableSegmentType_BUSBARSEGMENT, IfcCableSegmentType_CABLESEGMENT, IfcCableSegmentType_CONDUCTORSEGMENT, IfcCableSegmentType_CORESEGMENT, IfcCableSegmentType_USERDEFINED, IfcCableSegmentType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcChangeActionEnum {
typedef enum {IfcChangeAction_NOCHANGE, IfcChangeAction_MODIFIED, IfcChangeAction_ADDED, IfcChangeAction_DELETED, IfcChangeAction_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcChillerTypeEnum {
typedef enum {IfcChillerType_AIRCOOLED, IfcChillerType_WATERCOOLED, IfcChillerType_HEATRECOVERY, IfcChillerType_USERDEFINED, IfcChillerType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcChimneyTypeEnum {
typedef enum {IfcChimneyType_USERDEFINED, IfcChimneyType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcCoilTypeEnum {
typedef enum {IfcCoilType_DXCOOLINGCOIL, IfcCoilType_ELECTRICHEATINGCOIL, IfcCoilType_GASHEATINGCOIL, IfcCoilType_HYDRONICCOIL, IfcCoilType_STEAMHEATINGCOIL, IfcCoilType_WATERCOOLINGCOIL, IfcCoilType_WATERHEATINGCOIL, IfcCoilType_USERDEFINED, IfcCoilType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcColumnTypeEnum {
typedef enum {IfcColumnType_COLUMN, IfcColumnType_PILASTER, IfcColumnType_USERDEFINED, IfcColumnType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcCommunicationsApplianceTypeEnum {
typedef enum {IfcCommunicationsApplianceType_ANTENNA, IfcCommunicationsApplianceType_COMPUTER, IfcCommunicationsApplianceType_FAX, IfcCommunicationsApplianceType_GATEWAY, IfcCommunicationsApplianceType_MODEM, IfcCommunicationsApplianceType_NETWORKAPPLIANCE, IfcCommunicationsApplianceType_NETWORKBRIDGE, IfcCommunicationsApplianceType_NETWORKHUB, IfcCommunicationsApplianceType_PRINTER, IfcCommunicationsApplianceType_REPEATER, IfcCommunicationsApplianceType_ROUTER, IfcCommunicationsApplianceType_SCANNER, IfcCommunicationsApplianceType_USERDEFINED, IfcCommunicationsApplianceType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcComplexPropertyTemplateTypeEnum {
typedef enum {IfcComplexPropertyTemplateType_P_COMPLEX, IfcComplexPropertyTemplateType_Q_COMPLEX} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcCompressorTypeEnum {
typedef enum {IfcCompressorType_DYNAMIC, IfcCompressorType_RECIPROCATING, IfcCompressorType_ROTARY, IfcCompressorType_SCROLL, IfcCompressorType_TROCHOIDAL, IfcCompressorType_SINGLESTAGE, IfcCompressorType_BOOSTER, IfcCompressorType_OPENTYPE, IfcCompressorType_HERMETIC, IfcCompressorType_SEMIHERMETIC, IfcCompressorType_WELDEDSHELLHERMETIC, IfcCompressorType_ROLLINGPISTON, IfcCompressorType_ROTARYVANE, IfcCompressorType_SINGLESCREW, IfcCompressorType_TWINSCREW, IfcCompressorType_USERDEFINED, IfcCompressorType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcCondenserTypeEnum {
typedef enum {IfcCondenserType_AIRCOOLED, IfcCondenserType_EVAPORATIVECOOLED, IfcCondenserType_WATERCOOLED, IfcCondenserType_WATERCOOLEDBRAZEDPLATE, IfcCondenserType_WATERCOOLEDSHELLCOIL, IfcCondenserType_WATERCOOLEDSHELLTUBE, IfcCondenserType_WATERCOOLEDTUBEINTUBE, IfcCondenserType_USERDEFINED, IfcCondenserType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcConnectionTypeEnum {
typedef enum {IfcConnectionType_ATPATH, IfcConnectionType_ATSTART, IfcConnectionType_ATEND, IfcConnectionType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcConstraintEnum {
typedef enum {IfcConstraint_HARD, IfcConstraint_SOFT, IfcConstraint_ADVISORY, IfcConstraint_USERDEFINED, IfcConstraint_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcConstructionEquipmentResourceTypeEnum {
typedef enum {IfcConstructionEquipmentResourceType_DEMOLISHING, IfcConstructionEquipmentResourceType_EARTHMOVING, IfcConstructionEquipmentResourceType_ERECTING, IfcConstructionEquipmentResourceType_HEATING, IfcConstructionEquipmentResourceType_LIGHTING, IfcConstructionEquipmentResourceType_PAVING, IfcConstructionEquipmentResourceType_PUMPING, IfcConstructionEquipmentResourceType_TRANSPORTING, IfcConstructionEquipmentResourceType_USERDEFINED, IfcConstructionEquipmentResourceType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcConstructionMaterialResourceTypeEnum {
typedef enum {IfcConstructionMaterialResourceType_AGGREGATES, IfcConstructionMaterialResourceType_CONCRETE, IfcConstructionMaterialResourceType_DRYWALL, IfcConstructionMaterialResourceType_FUEL, IfcConstructionMaterialResourceType_GYPSUM, IfcConstructionMaterialResourceType_MASONRY, IfcConstructionMaterialResourceType_METAL, IfcConstructionMaterialResourceType_PLASTIC, IfcConstructionMaterialResourceType_WOOD, IfcConstructionMaterialResourceType_NOTDEFINED, IfcConstructionMaterialResourceType_USERDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcConstructionProductResourceTypeEnum {
typedef enum {IfcConstructionProductResourceType_ASSEMBLY, IfcConstructionProductResourceType_FORMWORK, IfcConstructionProductResourceType_USERDEFINED, IfcConstructionProductResourceType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcControllerTypeEnum {
typedef enum {IfcControllerType_FLOATING, IfcControllerType_PROGRAMMABLE, IfcControllerType_PROPORTIONAL, IfcControllerType_MULTIPOSITION, IfcControllerType_TWOPOSITION, IfcControllerType_USERDEFINED, IfcControllerType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcCooledBeamTypeEnum {
typedef enum {IfcCooledBeamType_ACTIVE, IfcCooledBeamType_PASSIVE, IfcCooledBeamType_USERDEFINED, IfcCooledBeamType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcCoolingTowerTypeEnum {
typedef enum {IfcCoolingTowerType_NATURALDRAFT, IfcCoolingTowerType_MECHANICALINDUCEDDRAFT, IfcCoolingTowerType_MECHANICALFORCEDDRAFT, IfcCoolingTowerType_USERDEFINED, IfcCoolingTowerType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcCostItemTypeEnum {
typedef enum {IfcCostItemType_USERDEFINED, IfcCostItemType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcCostScheduleTypeEnum {
typedef enum {IfcCostScheduleType_BUDGET, IfcCostScheduleType_COSTPLAN, IfcCostScheduleType_ESTIMATE, IfcCostScheduleType_TENDER, IfcCostScheduleType_PRICEDBILLOFQUANTITIES, IfcCostScheduleType_UNPRICEDBILLOFQUANTITIES, IfcCostScheduleType_SCHEDULEOFRATES, IfcCostScheduleType_USERDEFINED, IfcCostScheduleType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcCoveringTypeEnum {
typedef enum {IfcCoveringType_CEILING, IfcCoveringType_FLOORING, IfcCoveringType_CLADDING, IfcCoveringType_ROOFING, IfcCoveringType_MOLDING, IfcCoveringType_SKIRTINGBOARD, IfcCoveringType_INSULATION, IfcCoveringType_MEMBRANE, IfcCoveringType_SLEEVING, IfcCoveringType_WRAPPING, IfcCoveringType_USERDEFINED, IfcCoveringType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcCrewResourceTypeEnum {
typedef enum {IfcCrewResourceType_OFFICE, IfcCrewResourceType_SITE, IfcCrewResourceType_USERDEFINED, IfcCrewResourceType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcCurtainWallTypeEnum {
typedef enum {IfcCurtainWallType_USERDEFINED, IfcCurtainWallType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcCurveInterpolationEnum {
typedef enum {IfcCurveInterpolation_LINEAR, IfcCurveInterpolation_LOG_LINEAR, IfcCurveInterpolation_LOG_LOG, IfcCurveInterpolation_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcDamperTypeEnum {
typedef enum {IfcDamperType_BACKDRAFTDAMPER, IfcDamperType_BALANCINGDAMPER, IfcDamperType_BLASTDAMPER, IfcDamperType_CONTROLDAMPER, IfcDamperType_FIREDAMPER, IfcDamperType_FIRESMOKEDAMPER, IfcDamperType_FUMEHOODEXHAUST, IfcDamperType_GRAVITYDAMPER, IfcDamperType_GRAVITYRELIEFDAMPER, IfcDamperType_RELIEFDAMPER, IfcDamperType_SMOKEDAMPER, IfcDamperType_USERDEFINED, IfcDamperType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcDataOriginEnum {
typedef enum {IfcDataOrigin_MEASURED, IfcDataOrigin_PREDICTED, IfcDataOrigin_SIMULATED, IfcDataOrigin_USERDEFINED, IfcDataOrigin_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcDerivedUnitEnum {
typedef enum {IfcDerivedUnit_ANGULARVELOCITYUNIT, IfcDerivedUnit_AREADENSITYUNIT, IfcDerivedUnit_COMPOUNDPLANEANGLEUNIT, IfcDerivedUnit_DYNAMICVISCOSITYUNIT, IfcDerivedUnit_HEATFLUXDENSITYUNIT, IfcDerivedUnit_INTEGERCOUNTRATEUNIT, IfcDerivedUnit_ISOTHERMALMOISTURECAPACITYUNIT, IfcDerivedUnit_KINEMATICVISCOSITYUNIT, IfcDerivedUnit_LINEARVELOCITYUNIT, IfcDerivedUnit_MASSDENSITYUNIT, IfcDerivedUnit_MASSFLOWRATEUNIT, IfcDerivedUnit_MOISTUREDIFFUSIVITYUNIT, IfcDerivedUnit_MOLECULARWEIGHTUNIT, IfcDerivedUnit_SPECIFICHEATCAPACITYUNIT, IfcDerivedUnit_THERMALADMITTANCEUNIT, IfcDerivedUnit_THERMALCONDUCTANCEUNIT, IfcDerivedUnit_THERMALRESISTANCEUNIT, IfcDerivedUnit_THERMALTRANSMITTANCEUNIT, IfcDerivedUnit_VAPORPERMEABILITYUNIT, IfcDerivedUnit_VOLUMETRICFLOWRATEUNIT, IfcDerivedUnit_ROTATIONALFREQUENCYUNIT, IfcDerivedUnit_TORQUEUNIT, IfcDerivedUnit_MOMENTOFINERTIAUNIT, IfcDerivedUnit_LINEARMOMENTUNIT, IfcDerivedUnit_LINEARFORCEUNIT, IfcDerivedUnit_PLANARFORCEUNIT, IfcDerivedUnit_MODULUSOFELASTICITYUNIT, IfcDerivedUnit_SHEARMODULUSUNIT, IfcDerivedUnit_LINEARSTIFFNESSUNIT, IfcDerivedUnit_ROTATIONALSTIFFNESSUNIT, IfcDerivedUnit_MODULUSOFSUBGRADEREACTIONUNIT, IfcDerivedUnit_ACCELERATIONUNIT, IfcDerivedUnit_CURVATUREUNIT, IfcDerivedUnit_HEATINGVALUEUNIT, IfcDerivedUnit_IONCONCENTRATIONUNIT, IfcDerivedUnit_LUMINOUSINTENSITYDISTRIBUTIONUNIT, IfcDerivedUnit_MASSPERLENGTHUNIT, IfcDerivedUnit_MODULUSOFLINEARSUBGRADEREACTIONUNIT, IfcDerivedUnit_MODULUSOFROTATIONALSUBGRADEREACTIONUNIT, IfcDerivedUnit_PHUNIT, IfcDerivedUnit_ROTATIONALMASSUNIT, IfcDerivedUnit_SECTIONAREAINTEGRALUNIT, IfcDerivedUnit_SECTIONMODULUSUNIT, IfcDerivedUnit_SOUNDPOWERLEVELUNIT, IfcDerivedUnit_SOUNDPOWERUNIT, IfcDerivedUnit_SOUNDPRESSURELEVELUNIT, IfcDerivedUnit_SOUNDPRESSUREUNIT, IfcDerivedUnit_TEMPERATUREGRADIENTUNIT, IfcDerivedUnit_TEMPERATURERATEOFCHANGEUNIT, IfcDerivedUnit_THERMALEXPANSIONCOEFFICIENTUNIT, IfcDerivedUnit_WARPINGCONSTANTUNIT, IfcDerivedUnit_WARPINGMOMENTUNIT, IfcDerivedUnit_USERDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcDirectionSenseEnum {
typedef enum {IfcDirectionSense_POSITIVE, IfcDirectionSense_NEGATIVE} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcDiscreteAccessoryTypeEnum {
typedef enum {IfcDiscreteAccessoryType_ANCHORPLATE, IfcDiscreteAccessoryType_BRACKET, IfcDiscreteAccessoryType_SHOE, IfcDiscreteAccessoryType_USERDEFINED, IfcDiscreteAccessoryType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcDistributionChamberElementTypeEnum {
typedef enum {IfcDistributionChamberElementType_FORMEDDUCT, IfcDistributionChamberElementType_INSPECTIONCHAMBER, IfcDistributionChamberElementType_INSPECTIONPIT, IfcDistributionChamberElementType_MANHOLE, IfcDistributionChamberElementType_METERCHAMBER, IfcDistributionChamberElementType_SUMP, IfcDistributionChamberElementType_TRENCH, IfcDistributionChamberElementType_VALVECHAMBER, IfcDistributionChamberElementType_USERDEFINED, IfcDistributionChamberElementType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcDistributionPortTypeEnum {

typedef enum {IfcDistributionPortType_CABLE, IfcDistributionPortType_CABLECARRIER, IfcDistributionPortType_DUCT, IfcDistributionPortType_PIPE, IfcDistributionPortType_USERDEFINED, IfcDistributionPortType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcDistributionSystemEnum {
typedef enum {IfcDistributionSystem_AIRCONDITIONING, IfcDistributionSystem_AUDIOVISUAL, IfcDistributionSystem_CHEMICAL, IfcDistributionSystem_CHILLEDWATER, IfcDistributionSystem_COMMUNICATION, IfcDistributionSystem_COMPRESSEDAIR, IfcDistributionSystem_CONDENSERWATER, IfcDistributionSystem_CONTROL, IfcDistributionSystem_CONVEYING, IfcDistributionSystem_DATA, IfcDistributionSystem_DISPOSAL, IfcDistributionSystem_DOMESTICCOLDWATER, IfcDistributionSystem_DOMESTICHOTWATER, IfcDistributionSystem_DRAINAGE, IfcDistributionSystem_EARTHING, IfcDistributionSystem_ELECTRICAL, IfcDistributionSystem_ELECTROACOUSTIC, IfcDistributionSystem_EXHAUST, IfcDistributionSystem_FIREPROTECTION, IfcDistributionSystem_FUEL, IfcDistributionSystem_GAS, IfcDistributionSystem_HAZARDOUS, IfcDistributionSystem_HEATING, IfcDistributionSystem_LIGHTING, IfcDistributionSystem_LIGHTNINGPROTECTION, IfcDistributionSystem_MUNICIPALSOLIDWASTE, IfcDistributionSystem_OIL, IfcDistributionSystem_OPERATIONAL, IfcDistributionSystem_POWERGENERATION, IfcDistributionSystem_RAINWATER, IfcDistributionSystem_REFRIGERATION, IfcDistributionSystem_SECURITY, IfcDistributionSystem_SEWAGE, IfcDistributionSystem_SIGNAL, IfcDistributionSystem_STORMWATER, IfcDistributionSystem_TELEPHONE, IfcDistributionSystem_TV, IfcDistributionSystem_VACUUM, IfcDistributionSystem_VENT, IfcDistributionSystem_VENTILATION, IfcDistributionSystem_WASTEWATER, IfcDistributionSystem_WATERSUPPLY, IfcDistributionSystem_USERDEFINED, IfcDistributionSystem_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcDocumentConfidentialityEnum {
typedef enum {IfcDocumentConfidentiality_PUBLIC, IfcDocumentConfidentiality_RESTRICTED, IfcDocumentConfidentiality_CONFIDENTIAL, IfcDocumentConfidentiality_PERSONAL, IfcDocumentConfidentiality_USERDEFINED, IfcDocumentConfidentiality_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcDocumentStatusEnum {
typedef enum {IfcDocumentStatus_DRAFT, IfcDocumentStatus_FINALDRAFT, IfcDocumentStatus_FINAL, IfcDocumentStatus_REVISION, IfcDocumentStatus_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcDoorPanelOperationEnum {
typedef enum {IfcDoorPanelOperation_SWINGING, IfcDoorPanelOperation_DOUBLE_ACTING, IfcDoorPanelOperation_SLIDING, IfcDoorPanelOperation_FOLDING, IfcDoorPanelOperation_REVOLVING, IfcDoorPanelOperation_ROLLINGUP, IfcDoorPanelOperation_FIXEDPANEL, IfcDoorPanelOperation_USERDEFINED, IfcDoorPanelOperation_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcDoorPanelPositionEnum {
typedef enum {IfcDoorPanelPosition_LEFT, IfcDoorPanelPosition_MIDDLE, IfcDoorPanelPosition_RIGHT, IfcDoorPanelPosition_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcDoorStyleConstructionEnum {
typedef enum {IfcDoorStyleConstruction_ALUMINIUM, IfcDoorStyleConstruction_HIGH_GRADE_STEEL, IfcDoorStyleConstruction_STEEL, IfcDoorStyleConstruction_WOOD, IfcDoorStyleConstruction_ALUMINIUM_WOOD, IfcDoorStyleConstruction_ALUMINIUM_PLASTIC, IfcDoorStyleConstruction_PLASTIC, IfcDoorStyleConstruction_USERDEFINED, IfcDoorStyleConstruction_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcDoorStyleOperationEnum {
typedef enum {IfcDoorStyleOperation_SINGLE_SWING_LEFT, IfcDoorStyleOperation_SINGLE_SWING_RIGHT, IfcDoorStyleOperation_DOUBLE_DOOR_SINGLE_SWING, IfcDoorStyleOperation_DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT, IfcDoorStyleOperation_DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT, IfcDoorStyleOperation_DOUBLE_SWING_LEFT, IfcDoorStyleOperation_DOUBLE_SWING_RIGHT, IfcDoorStyleOperation_DOUBLE_DOOR_DOUBLE_SWING, IfcDoorStyleOperation_SLIDING_TO_LEFT, IfcDoorStyleOperation_SLIDING_TO_RIGHT, IfcDoorStyleOperation_DOUBLE_DOOR_SLIDING, IfcDoorStyleOperation_FOLDING_TO_LEFT, IfcDoorStyleOperation_FOLDING_TO_RIGHT, IfcDoorStyleOperation_DOUBLE_DOOR_FOLDING, IfcDoorStyleOperation_REVOLVING, IfcDoorStyleOperation_ROLLINGUP, IfcDoorStyleOperation_USERDEFINED, IfcDoorStyleOperation_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcDoorTypeEnum {
typedef enum {IfcDoorType_DOOR, IfcDoorType_GATE, IfcDoorType_TRAPDOOR, IfcDoorType_USERDEFINED, IfcDoorType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcDoorTypeOperationEnum {
typedef enum {IfcDoorTypeOperation_SINGLE_SWING_LEFT, IfcDoorTypeOperation_SINGLE_SWING_RIGHT, IfcDoorTypeOperation_DOUBLE_DOOR_SINGLE_SWING, IfcDoorTypeOperation_DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT, IfcDoorTypeOperation_DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT, IfcDoorTypeOperation_DOUBLE_SWING_LEFT, IfcDoorTypeOperation_DOUBLE_SWING_RIGHT, IfcDoorTypeOperation_DOUBLE_DOOR_DOUBLE_SWING, IfcDoorTypeOperation_SLIDING_TO_LEFT, IfcDoorTypeOperation_SLIDING_TO_RIGHT, IfcDoorTypeOperation_DOUBLE_DOOR_SLIDING, IfcDoorTypeOperation_FOLDING_TO_LEFT, IfcDoorTypeOperation_FOLDING_TO_RIGHT, IfcDoorTypeOperation_DOUBLE_DOOR_FOLDING, IfcDoorTypeOperation_REVOLVING, IfcDoorTypeOperation_ROLLINGUP, IfcDoorTypeOperation_SWING_FIXED_LEFT, IfcDoorTypeOperation_SWING_FIXED_RIGHT, IfcDoorTypeOperation_USERDEFINED, IfcDoorTypeOperation_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcDuctFittingTypeEnum {
typedef enum {IfcDuctFittingType_BEND, IfcDuctFittingType_CONNECTOR, IfcDuctFittingType_ENTRY, IfcDuctFittingType_EXIT, IfcDuctFittingType_JUNCTION, IfcDuctFittingType_OBSTRUCTION, IfcDuctFittingType_TRANSITION, IfcDuctFittingType_USERDEFINED, IfcDuctFittingType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcDuctSegmentTypeEnum {
typedef enum {IfcDuctSegmentType_RIGIDSEGMENT, IfcDuctSegmentType_FLEXIBLESEGMENT, IfcDuctSegmentType_USERDEFINED, IfcDuctSegmentType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcDuctSilencerTypeEnum {
typedef enum {IfcDuctSilencerType_FLATOVAL, IfcDuctSilencerType_RECTANGULAR, IfcDuctSilencerType_ROUND, IfcDuctSilencerType_USERDEFINED, IfcDuctSilencerType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcElectricApplianceTypeEnum {
typedef enum {IfcElectricApplianceType_DISHWASHER, IfcElectricApplianceType_ELECTRICCOOKER, IfcElectricApplianceType_FREESTANDINGELECTRICHEATER, IfcElectricApplianceType_FREESTANDINGFAN, IfcElectricApplianceType_FREESTANDINGWATERHEATER, IfcElectricApplianceType_FREESTANDINGWATERCOOLER, IfcElectricApplianceType_FREEZER, IfcElectricApplianceType_FRIDGE_FREEZER, IfcElectricApplianceType_HANDDRYER, IfcElectricApplianceType_KITCHENMACHINE, IfcElectricApplianceType_MICROWAVE, IfcElectricApplianceType_PHOTOCOPIER, IfcElectricApplianceType_REFRIGERATOR, IfcElectricApplianceType_TUMBLEDRYER, IfcElectricApplianceType_VENDINGMACHINE, IfcElectricApplianceType_WASHINGMACHINE, IfcElectricApplianceType_USERDEFINED, IfcElectricApplianceType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcElectricDistributionBoardTypeEnum {
typedef enum {IfcElectricDistributionBoardType_CONSUMERUNIT, IfcElectricDistributionBoardType_DISTRIBUTIONBOARD, IfcElectricDistributionBoardType_MOTORCONTROLCENTRE, IfcElectricDistributionBoardType_SWITCHBOARD, IfcElectricDistributionBoardType_USERDEFINED, IfcElectricDistributionBoardType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcElectricFlowStorageDeviceTypeEnum {
typedef enum {IfcElectricFlowStorageDeviceType_BATTERY, IfcElectricFlowStorageDeviceType_CAPACITORBANK, IfcElectricFlowStorageDeviceType_HARMONICFILTER, IfcElectricFlowStorageDeviceType_INDUCTORBANK, IfcElectricFlowStorageDeviceType_UPS, IfcElectricFlowStorageDeviceType_USERDEFINED, IfcElectricFlowStorageDeviceType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcElectricGeneratorTypeEnum {
typedef enum {IfcElectricGeneratorType_CHP, IfcElectricGeneratorType_ENGINEGENERATOR, IfcElectricGeneratorType_STANDALONE, IfcElectricGeneratorType_USERDEFINED, IfcElectricGeneratorType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcElectricMotorTypeEnum {
typedef enum {IfcElectricMotorType_DC, IfcElectricMotorType_INDUCTION, IfcElectricMotorType_POLYPHASE, IfcElectricMotorType_RELUCTANCESYNCHRONOUS, IfcElectricMotorType_SYNCHRONOUS, IfcElectricMotorType_USERDEFINED, IfcElectricMotorType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcElectricTimeControlTypeEnum {
typedef enum {IfcElectricTimeControlType_TIMECLOCK, IfcElectricTimeControlType_TIMEDELAY, IfcElectricTimeControlType_RELAY, IfcElectricTimeControlType_USERDEFINED, IfcElectricTimeControlType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcElementAssemblyTypeEnum {
typedef enum {IfcElementAssemblyType_ACCESSORY_ASSEMBLY, IfcElementAssemblyType_ARCH, IfcElementAssemblyType_BEAM_GRID, IfcElementAssemblyType_BRACED_FRAME, IfcElementAssemblyType_GIRDER, IfcElementAssemblyType_REINFORCEMENT_UNIT, IfcElementAssemblyType_RIGID_FRAME, IfcElementAssemblyType_SLAB_FIELD, IfcElementAssemblyType_TRUSS, IfcElementAssemblyType_USERDEFINED, IfcElementAssemblyType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcElementCompositionEnum {
typedef enum {IfcElementComposition_COMPLEX, IfcElementComposition_ELEMENT, IfcElementComposition_PARTIAL} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcEngineTypeEnum {
typedef enum {IfcEngineType_EXTERNALCOMBUSTION, IfcEngineType_INTERNALCOMBUSTION, IfcEngineType_USERDEFINED, IfcEngineType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcEvaporativeCoolerTypeEnum {
typedef enum {IfcEvaporativeCoolerType_DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER, IfcEvaporativeCoolerType_DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER, IfcEvaporativeCoolerType_DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER, IfcEvaporativeCoolerType_DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER, IfcEvaporativeCoolerType_DIRECTEVAPORATIVEAIRWASHER, IfcEvaporativeCoolerType_INDIRECTEVAPORATIVEPACKAGEAIRCOOLER, IfcEvaporativeCoolerType_INDIRECTEVAPORATIVEWETCOIL, IfcEvaporativeCoolerType_INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER, IfcEvaporativeCoolerType_INDIRECTDIRECTCOMBINATION, IfcEvaporativeCoolerType_USERDEFINED, IfcEvaporativeCoolerType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcEvaporatorTypeEnum {
typedef enum {IfcEvaporatorType_DIRECTEXPANSION, IfcEvaporatorType_DIRECTEXPANSIONSHELLANDTUBE, IfcEvaporatorType_DIRECTEXPANSIONTUBEINTUBE, IfcEvaporatorType_DIRECTEXPANSIONBRAZEDPLATE, IfcEvaporatorType_FLOODEDSHELLANDTUBE, IfcEvaporatorType_SHELLANDCOIL, IfcEvaporatorType_USERDEFINED, IfcEvaporatorType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcEventTriggerTypeEnum {
typedef enum {IfcEventTriggerType_EVENTRULE, IfcEventTriggerType_EVENTMESSAGE, IfcEventTriggerType_EVENTTIME, IfcEventTriggerType_EVENTCOMPLEX, IfcEventTriggerType_USERDEFINED, IfcEventTriggerType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcEventTypeEnum {
typedef enum {IfcEventType_STARTEVENT, IfcEventType_ENDEVENT, IfcEventType_INTERMEDIATEEVENT, IfcEventType_USERDEFINED, IfcEventType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcExternalSpatialElementTypeEnum {
typedef enum {IfcExternalSpatialElementType_EXTERNAL, IfcExternalSpatialElementType_EXTERNAL_EARTH, IfcExternalSpatialElementType_EXTERNAL_WATER, IfcExternalSpatialElementType_EXTERNAL_FIRE, IfcExternalSpatialElementType_USERDEFINED, IfcExternalSpatialElementType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcFanTypeEnum {
typedef enum {IfcFanType_CENTRIFUGALFORWARDCURVED, IfcFanType_CENTRIFUGALRADIAL, IfcFanType_CENTRIFUGALBACKWARDINCLINEDCURVED, IfcFanType_CENTRIFUGALAIRFOIL, IfcFanType_TUBEAXIAL, IfcFanType_VANEAXIAL, IfcFanType_PROPELLORAXIAL, IfcFanType_USERDEFINED, IfcFanType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcFastenerTypeEnum {
typedef enum {IfcFastenerType_GLUE, IfcFastenerType_MORTAR, IfcFastenerType_WELD, IfcFastenerType_USERDEFINED, IfcFastenerType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcFilterTypeEnum {
typedef enum {IfcFilterType_AIRPARTICLEFILTER, IfcFilterType_COMPRESSEDAIRFILTER, IfcFilterType_ODORFILTER, IfcFilterType_OILFILTER, IfcFilterType_STRAINER, IfcFilterType_WATERFILTER, IfcFilterType_USERDEFINED, IfcFilterType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcFireSuppressionTerminalTypeEnum {
typedef enum {IfcFireSuppressionTerminalType_BREECHINGINLET, IfcFireSuppressionTerminalType_FIREHYDRANT, IfcFireSuppressionTerminalType_HOSEREEL, IfcFireSuppressionTerminalType_SPRINKLER, IfcFireSuppressionTerminalType_SPRINKLERDEFLECTOR, IfcFireSuppressionTerminalType_USERDEFINED, IfcFireSuppressionTerminalType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcFlowDirectionEnum {
typedef enum {IfcFlowDirection_SOURCE, IfcFlowDirection_SINK, IfcFlowDirection_SOURCEANDSINK, IfcFlowDirection_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcFlowInstrumentTypeEnum {
typedef enum {IfcFlowInstrumentType_PRESSUREGAUGE, IfcFlowInstrumentType_THERMOMETER, IfcFlowInstrumentType_AMMETER, IfcFlowInstrumentType_FREQUENCYMETER, IfcFlowInstrumentType_POWERFACTORMETER, IfcFlowInstrumentType_PHASEANGLEMETER, IfcFlowInstrumentType_VOLTMETER_PEAK, IfcFlowInstrumentType_VOLTMETER_RMS, IfcFlowInstrumentType_USERDEFINED, IfcFlowInstrumentType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcFlowMeterTypeEnum {
typedef enum {IfcFlowMeterType_ENERGYMETER, IfcFlowMeterType_GASMETER, IfcFlowMeterType_OILMETER, IfcFlowMeterType_WATERMETER, IfcFlowMeterType_USERDEFINED, IfcFlowMeterType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcFootingTypeEnum {
typedef enum {IfcFootingType_CAISSON_FOUNDATION, IfcFootingType_FOOTING_BEAM, IfcFootingType_PAD_FOOTING, IfcFootingType_PILE_CAP, IfcFootingType_STRIP_FOOTING, IfcFootingType_USERDEFINED, IfcFootingType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcFurnitureTypeEnum {
typedef enum {IfcFurnitureType_CHAIR, IfcFurnitureType_TABLE, IfcFurnitureType_DESK, IfcFurnitureType_BED, IfcFurnitureType_FILECABINET, IfcFurnitureType_SHELF, IfcFurnitureType_SOFA, IfcFurnitureType_USERDEFINED, IfcFurnitureType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcGeographicElementTypeEnum {

typedef enum {IfcGeographicElementType_TERRAIN, IfcGeographicElementType_USERDEFINED, IfcGeographicElementType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcGeometricProjectionEnum {
typedef enum {IfcGeometricProjection_GRAPH_VIEW, IfcGeometricProjection_SKETCH_VIEW, IfcGeometricProjection_MODEL_VIEW, IfcGeometricProjection_PLAN_VIEW, IfcGeometricProjection_REFLECTED_PLAN_VIEW, IfcGeometricProjection_SECTION_VIEW, IfcGeometricProjection_ELEVATION_VIEW, IfcGeometricProjection_USERDEFINED, IfcGeometricProjection_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcGlobalOrLocalEnum {
typedef enum {IfcGlobalOrLocal_GLOBAL_COORDS, IfcGlobalOrLocal_LOCAL_COORDS} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcGridTypeEnum {

typedef enum {IfcGridType_RECTANGULAR, IfcGridType_RADIAL, IfcGridType_TRIANGULAR, IfcGridType_IRREGULAR, IfcGridType_USERDEFINED, IfcGridType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcHeatExchangerTypeEnum {
typedef enum {IfcHeatExchangerType_PLATE, IfcHeatExchangerType_SHELLANDTUBE, IfcHeatExchangerType_USERDEFINED, IfcHeatExchangerType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcHumidifierTypeEnum {
typedef enum {IfcHumidifierType_STEAMINJECTION, IfcHumidifierType_ADIABATICAIRWASHER, IfcHumidifierType_ADIABATICPAN, IfcHumidifierType_ADIABATICWETTEDELEMENT, IfcHumidifierType_ADIABATICATOMIZING, IfcHumidifierType_ADIABATICULTRASONIC, IfcHumidifierType_ADIABATICRIGIDMEDIA, IfcHumidifierType_ADIABATICCOMPRESSEDAIRNOZZLE, IfcHumidifierType_ASSISTEDELECTRIC, IfcHumidifierType_ASSISTEDNATURALGAS, IfcHumidifierType_ASSISTEDPROPANE, IfcHumidifierType_ASSISTEDBUTANE, IfcHumidifierType_ASSISTEDSTEAM, IfcHumidifierType_USERDEFINED, IfcHumidifierType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcInterceptorTypeEnum {
typedef enum {IfcInterceptorType_CYCLONIC, IfcInterceptorType_GREASE, IfcInterceptorType_OIL, IfcInterceptorType_PETROL, IfcInterceptorType_USERDEFINED, IfcInterceptorType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcInternalOrExternalEnum {
typedef enum {IfcInternalOrExternal_INTERNAL, IfcInternalOrExternal_EXTERNAL, IfcInternalOrExternal_EXTERNAL_EARTH, IfcInternalOrExternal_EXTERNAL_WATER, IfcInternalOrExternal_EXTERNAL_FIRE, IfcInternalOrExternal_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcInventoryTypeEnum {
typedef enum {IfcInventoryType_ASSETINVENTORY, IfcInventoryType_SPACEINVENTORY, IfcInventoryType_FURNITUREINVENTORY, IfcInventoryType_USERDEFINED, IfcInventoryType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcJunctionBoxTypeEnum {
typedef enum {IfcJunctionBoxType_DATA, IfcJunctionBoxType_POWER, IfcJunctionBoxType_USERDEFINED, IfcJunctionBoxType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcKnotType {

typedef enum {IfcKnotType_UNIFORM_KNOTS, IfcKnotType_QUASI_UNIFORM_KNOTS, IfcKnotType_PIECEWISE_BEZIER_KNOTS, IfcKnotType_UNSPECIFIED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcLaborResourceTypeEnum {
typedef enum {IfcLaborResourceType_ADMINISTRATION, IfcLaborResourceType_CARPENTRY, IfcLaborResourceType_CLEANING, IfcLaborResourceType_CONCRETE, IfcLaborResourceType_DRYWALL, IfcLaborResourceType_ELECTRIC, IfcLaborResourceType_FINISHING, IfcLaborResourceType_FLOORING, IfcLaborResourceType_GENERAL, IfcLaborResourceType_HVAC, IfcLaborResourceType_LANDSCAPING, IfcLaborResourceType_MASONRY, IfcLaborResourceType_PAINTING, IfcLaborResourceType_PAVING, IfcLaborResourceType_PLUMBING, IfcLaborResourceType_ROOFING, IfcLaborResourceType_SITEGRADING, IfcLaborResourceType_STEELWORK, IfcLaborResourceType_SURVEYING, IfcLaborResourceType_USERDEFINED, IfcLaborResourceType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcLampTypeEnum {
typedef enum {IfcLampType_COMPACTFLUORESCENT, IfcLampType_FLUORESCENT, IfcLampType_HALOGEN, IfcLampType_HIGHPRESSUREMERCURY, IfcLampType_HIGHPRESSURESODIUM, IfcLampType_LED, IfcLampType_METALHALIDE, IfcLampType_OLED, IfcLampType_TUNGSTENFILAMENT, IfcLampType_USERDEFINED, IfcLampType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcLayerSetDirectionEnum {
typedef enum {IfcLayerSetDirection_AXIS1, IfcLayerSetDirection_AXIS2, IfcLayerSetDirection_AXIS3} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcLightDistributionCurveEnum {
typedef enum {IfcLightDistributionCurve_TYPE_A, IfcLightDistributionCurve_TYPE_B, IfcLightDistributionCurve_TYPE_C, IfcLightDistributionCurve_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcLightEmissionSourceEnum {
typedef enum {IfcLightEmissionSource_COMPACTFLUORESCENT, IfcLightEmissionSource_FLUORESCENT, IfcLightEmissionSource_HIGHPRESSUREMERCURY, IfcLightEmissionSource_HIGHPRESSURESODIUM, IfcLightEmissionSource_LIGHTEMITTINGDIODE, IfcLightEmissionSource_LOWPRESSURESODIUM, IfcLightEmissionSource_LOWVOLTAGEHALOGEN, IfcLightEmissionSource_MAINVOLTAGEHALOGEN, IfcLightEmissionSource_METALHALIDE, IfcLightEmissionSource_TUNGSTENFILAMENT, IfcLightEmissionSource_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcLightFixtureTypeEnum {
typedef enum {IfcLightFixtureType_POINTSOURCE, IfcLightFixtureType_DIRECTIONSOURCE, IfcLightFixtureType_SECURITYLIGHTING, IfcLightFixtureType_USERDEFINED, IfcLightFixtureType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcLoadGroupTypeEnum {
typedef enum {IfcLoadGroupType_LOAD_GROUP, IfcLoadGroupType_LOAD_CASE, IfcLoadGroupType_LOAD_COMBINATION, IfcLoadGroupType_USERDEFINED, IfcLoadGroupType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcLogicalOperatorEnum {
typedef enum {IfcLogicalOperator_LOGICALAND, IfcLogicalOperator_LOGICALOR, IfcLogicalOperator_LOGICALXOR, IfcLogicalOperator_LOGICALNOTAND, IfcLogicalOperator_LOGICALNOTOR} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcMechanicalFastenerTypeEnum {
typedef enum {IfcMechanicalFastenerType_ANCHORBOLT, IfcMechanicalFastenerType_BOLT, IfcMechanicalFastenerType_DOWEL, IfcMechanicalFastenerType_NAIL, IfcMechanicalFastenerType_NAILPLATE, IfcMechanicalFastenerType_RIVET, IfcMechanicalFastenerType_SCREW, IfcMechanicalFastenerType_SHEARCONNECTOR, IfcMechanicalFastenerType_STAPLE, IfcMechanicalFastenerType_STUDSHEARCONNECTOR, IfcMechanicalFastenerType_USERDEFINED, IfcMechanicalFastenerType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcMedicalDeviceTypeEnum {
typedef enum {IfcMedicalDeviceType_AIRSTATION, IfcMedicalDeviceType_FEEDAIRUNIT, IfcMedicalDeviceType_OXYGENGENERATOR, IfcMedicalDeviceType_OXYGENPLANT, IfcMedicalDeviceType_VACUUMSTATION, IfcMedicalDeviceType_USERDEFINED, IfcMedicalDeviceType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcMemberTypeEnum {
typedef enum {IfcMemberType_BRACE, IfcMemberType_CHORD, IfcMemberType_COLLAR, IfcMemberType_MEMBER, IfcMemberType_MULLION, IfcMemberType_PLATE, IfcMemberType_POST, IfcMemberType_PURLIN, IfcMemberType_RAFTER, IfcMemberType_STRINGER, IfcMemberType_STRUT, IfcMemberType_STUD, IfcMemberType_USERDEFINED, IfcMemberType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcMotorConnectionTypeEnum {
typedef enum {IfcMotorConnectionType_BELTDRIVE, IfcMotorConnectionType_COUPLING, IfcMotorConnectionType_DIRECTDRIVE, IfcMotorConnectionType_USERDEFINED, IfcMotorConnectionType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcNullStyle {
typedef enum {IfcNullStyle_NULL} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcObjectTypeEnum {
typedef enum {IfcObjectType_PRODUCT, IfcObjectType_PROCESS, IfcObjectType_CONTROL, IfcObjectType_RESOURCE, IfcObjectType_ACTOR, IfcObjectType_GROUP, IfcObjectType_PROJECT, IfcObjectType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcObjectiveEnum {
typedef enum {IfcObjective_CODECOMPLIANCE, IfcObjective_CODEWAIVER, IfcObjective_DESIGNINTENT, IfcObjective_EXTERNAL, IfcObjective_HEALTHANDSAFETY, IfcObjective_MERGECONFLICT, IfcObjective_MODELVIEW, IfcObjective_PARAMETER, IfcObjective_REQUIREMENT, IfcObjective_SPECIFICATION, IfcObjective_TRIGGERCONDITION, IfcObjective_USERDEFINED, IfcObjective_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcOccupantTypeEnum {
typedef enum {IfcOccupantType_ASSIGNEE, IfcOccupantType_ASSIGNOR, IfcOccupantType_LESSEE, IfcOccupantType_LESSOR, IfcOccupantType_LETTINGAGENT, IfcOccupantType_OWNER, IfcOccupantType_TENANT, IfcOccupantType_USERDEFINED, IfcOccupantType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcOpeningElementTypeEnum {
typedef enum {IfcOpeningElementType_OPENING, IfcOpeningElementType_RECESS, IfcOpeningElementType_USERDEFINED, IfcOpeningElementType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcOutletTypeEnum {
typedef enum {IfcOutletType_AUDIOVISUALOUTLET, IfcOutletType_COMMUNICATIONSOUTLET, IfcOutletType_POWEROUTLET, IfcOutletType_DATAOUTLET, IfcOutletType_TELEPHONEOUTLET, IfcOutletType_USERDEFINED, IfcOutletType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcPerformanceHistoryTypeEnum {
typedef enum {IfcPerformanceHistoryType_USERDEFINED, IfcPerformanceHistoryType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcPermeableCoveringOperationEnum {
typedef enum {IfcPermeableCoveringOperation_GRILL, IfcPermeableCoveringOperation_LOUVER, IfcPermeableCoveringOperation_SCREEN, IfcPermeableCoveringOperation_USERDEFINED, IfcPermeableCoveringOperation_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcPermitTypeEnum {
typedef enum {IfcPermitType_ACCESS, IfcPermitType_BUILDING, IfcPermitType_WORK, IfcPermitType_USERDEFINED, IfcPermitType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcPhysicalOrVirtualEnum {
typedef enum {IfcPhysicalOrVirtual_PHYSICAL, IfcPhysicalOrVirtual_VIRTUAL, IfcPhysicalOrVirtual_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcPileConstructionEnum {
typedef enum {IfcPileConstruction_CAST_IN_PLACE, IfcPileConstruction_COMPOSITE, IfcPileConstruction_PRECAST_CONCRETE, IfcPileConstruction_PREFAB_STEEL, IfcPileConstruction_USERDEFINED, IfcPileConstruction_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcPileTypeEnum {
typedef enum {IfcPileType_BORED, IfcPileType_DRIVEN, IfcPileType_JETGROUTING, IfcPileType_COHESION, IfcPileType_FRICTION, IfcPileType_SUPPORT, IfcPileType_USERDEFINED, IfcPileType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcPipeFittingTypeEnum {
typedef enum {IfcPipeFittingType_BEND, IfcPipeFittingType_CONNECTOR, IfcPipeFittingType_ENTRY, IfcPipeFittingType_EXIT, IfcPipeFittingType_JUNCTION, IfcPipeFittingType_OBSTRUCTION, IfcPipeFittingType_TRANSITION, IfcPipeFittingType_USERDEFINED, IfcPipeFittingType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcPipeSegmentTypeEnum {
typedef enum {IfcPipeSegmentType_CULVERT, IfcPipeSegmentType_FLEXIBLESEGMENT, IfcPipeSegmentType_RIGIDSEGMENT, IfcPipeSegmentType_GUTTER, IfcPipeSegmentType_SPOOL, IfcPipeSegmentType_USERDEFINED, IfcPipeSegmentType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcPlateTypeEnum {
typedef enum {IfcPlateType_CURTAIN_PANEL, IfcPlateType_SHEET, IfcPlateType_USERDEFINED, IfcPlateType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcPreferredSurfaceCurveRepresentation {

typedef enum {IfcPreferredSurfaceCurveRepresentation_CURVE3D, IfcPreferredSurfaceCurveRepresentation_PCURVE_S1, IfcPreferredSurfaceCurveRepresentation_PCURVE_S2} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcProcedureTypeEnum {
typedef enum {IfcProcedureType_ADVICE_CAUTION, IfcProcedureType_ADVICE_NOTE, IfcProcedureType_ADVICE_WARNING, IfcProcedureType_CALIBRATION, IfcProcedureType_DIAGNOSTIC, IfcProcedureType_SHUTDOWN, IfcProcedureType_STARTUP, IfcProcedureType_USERDEFINED, IfcProcedureType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcProfileTypeEnum {
typedef enum {IfcProfileType_CURVE, IfcProfileType_AREA} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcProjectOrderTypeEnum {
typedef enum {IfcProjectOrderType_CHANGEORDER, IfcProjectOrderType_MAINTENANCEWORKORDER, IfcProjectOrderType_MOVEORDER, IfcProjectOrderType_PURCHASEORDER, IfcProjectOrderType_WORKORDER, IfcProjectOrderType_USERDEFINED, IfcProjectOrderType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcProjectedOrTrueLengthEnum {
typedef enum {IfcProjectedOrTrueLength_PROJECTED_LENGTH, IfcProjectedOrTrueLength_TRUE_LENGTH} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcProjectionElementTypeEnum {
typedef enum {IfcProjectionElementType_USERDEFINED, IfcProjectionElementType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcPropertySetTemplateTypeEnum {
typedef enum {IfcPropertySetTemplateType_PSET_TYPEDRIVENONLY, IfcPropertySetTemplateType_PSET_TYPEDRIVENOVERRIDE, IfcPropertySetTemplateType_PSET_OCCURRENCEDRIVEN, IfcPropertySetTemplateType_PSET_PERFORMANCEDRIVEN, IfcPropertySetTemplateType_QTO_TYPEDRIVENONLY, IfcPropertySetTemplateType_QTO_TYPEDRIVENOVERRIDE, IfcPropertySetTemplateType_QTO_OCCURRENCEDRIVEN, IfcPropertySetTemplateType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcProtectiveDeviceTrippingUnitTypeEnum {
typedef enum {IfcProtectiveDeviceTrippingUnitType_ELECTRONIC, IfcProtectiveDeviceTrippingUnitType_ELECTROMAGNETIC, IfcProtectiveDeviceTrippingUnitType_RESIDUALCURRENT, IfcProtectiveDeviceTrippingUnitType_THERMAL, IfcProtectiveDeviceTrippingUnitType_USERDEFINED, IfcProtectiveDeviceTrippingUnitType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcProtectiveDeviceTypeEnum {
typedef enum {IfcProtectiveDeviceType_CIRCUITBREAKER, IfcProtectiveDeviceType_EARTHLEAKAGECIRCUITBREAKER, IfcProtectiveDeviceType_EARTHINGSWITCH, IfcProtectiveDeviceType_FUSEDISCONNECTOR, IfcProtectiveDeviceType_RESIDUALCURRENTCIRCUITBREAKER, IfcProtectiveDeviceType_RESIDUALCURRENTSWITCH, IfcProtectiveDeviceType_VARISTOR, IfcProtectiveDeviceType_USERDEFINED, IfcProtectiveDeviceType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcPumpTypeEnum {
typedef enum {IfcPumpType_CIRCULATOR, IfcPumpType_ENDSUCTION, IfcPumpType_SPLITCASE, IfcPumpType_SUBMERSIBLEPUMP, IfcPumpType_SUMPPUMP, IfcPumpType_VERTICALINLINE, IfcPumpType_VERTICALTURBINE, IfcPumpType_USERDEFINED, IfcPumpType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcRailingTypeEnum {
typedef enum {IfcRailingType_HANDRAIL, IfcRailingType_GUARDRAIL, IfcRailingType_BALUSTRADE, IfcRailingType_USERDEFINED, IfcRailingType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcRampFlightTypeEnum {
typedef enum {IfcRampFlightType_STRAIGHT, IfcRampFlightType_SPIRAL, IfcRampFlightType_USERDEFINED, IfcRampFlightType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcRampTypeEnum {
typedef enum {IfcRampType_STRAIGHT_RUN_RAMP, IfcRampType_TWO_STRAIGHT_RUN_RAMP, IfcRampType_QUARTER_TURN_RAMP, IfcRampType_TWO_QUARTER_TURN_RAMP, IfcRampType_HALF_TURN_RAMP, IfcRampType_SPIRAL_RAMP, IfcRampType_USERDEFINED, IfcRampType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcRecurrenceTypeEnum {
typedef enum {IfcRecurrenceType_DAILY, IfcRecurrenceType_WEEKLY, IfcRecurrenceType_MONTHLY_BY_DAY_OF_MONTH, IfcRecurrenceType_MONTHLY_BY_POSITION, IfcRecurrenceType_BY_DAY_COUNT, IfcRecurrenceType_BY_WEEKDAY_COUNT, IfcRecurrenceType_YEARLY_BY_DAY_OF_MONTH, IfcRecurrenceType_YEARLY_BY_POSITION} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcReflectanceMethodEnum {
typedef enum {IfcReflectanceMethod_BLINN, IfcReflectanceMethod_FLAT, IfcReflectanceMethod_GLASS, IfcReflectanceMethod_MATT, IfcReflectanceMethod_METAL, IfcReflectanceMethod_MIRROR, IfcReflectanceMethod_PHONG, IfcReflectanceMethod_PLASTIC, IfcReflectanceMethod_STRAUSS, IfcReflectanceMethod_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcReinforcingBarRoleEnum {
typedef enum {IfcReinforcingBarRole_MAIN, IfcReinforcingBarRole_SHEAR, IfcReinforcingBarRole_LIGATURE, IfcReinforcingBarRole_STUD, IfcReinforcingBarRole_PUNCHING, IfcReinforcingBarRole_EDGE, IfcReinforcingBarRole_RING, IfcReinforcingBarRole_ANCHORING, IfcReinforcingBarRole_USERDEFINED, IfcReinforcingBarRole_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcReinforcingBarSurfaceEnum {
typedef enum {IfcReinforcingBarSurface_PLAIN, IfcReinforcingBarSurface_TEXTURED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcReinforcingBarTypeEnum {

typedef enum {IfcReinforcingBarType_ANCHORING, IfcReinforcingBarType_EDGE, IfcReinforcingBarType_LIGATURE, IfcReinforcingBarType_MAIN, IfcReinforcingBarType_PUNCHING, IfcReinforcingBarType_RING, IfcReinforcingBarType_SHEAR, IfcReinforcingBarType_STUD, IfcReinforcingBarType_USERDEFINED, IfcReinforcingBarType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcReinforcingMeshTypeEnum {

typedef enum {IfcReinforcingMeshType_USERDEFINED, IfcReinforcingMeshType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcRoleEnum {
typedef enum {IfcRole_SUPPLIER, IfcRole_MANUFACTURER, IfcRole_CONTRACTOR, IfcRole_SUBCONTRACTOR, IfcRole_ARCHITECT, IfcRole_STRUCTURALENGINEER, IfcRole_COSTENGINEER, IfcRole_CLIENT, IfcRole_BUILDINGOWNER, IfcRole_BUILDINGOPERATOR, IfcRole_MECHANICALENGINEER, IfcRole_ELECTRICALENGINEER, IfcRole_PROJECTMANAGER, IfcRole_FACILITIESMANAGER, IfcRole_CIVILENGINEER, IfcRole_COMMISSIONINGENGINEER, IfcRole_ENGINEER, IfcRole_OWNER, IfcRole_CONSULTANT, IfcRole_CONSTRUCTIONMANAGER, IfcRole_FIELDCONSTRUCTIONMANAGER, IfcRole_RESELLER, IfcRole_USERDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcRoofTypeEnum {
typedef enum {IfcRoofType_FLAT_ROOF, IfcRoofType_SHED_ROOF, IfcRoofType_GABLE_ROOF, IfcRoofType_HIP_ROOF, IfcRoofType_HIPPED_GABLE_ROOF, IfcRoofType_GAMBREL_ROOF, IfcRoofType_MANSARD_ROOF, IfcRoofType_BARREL_ROOF, IfcRoofType_RAINBOW_ROOF, IfcRoofType_BUTTERFLY_ROOF, IfcRoofType_PAVILION_ROOF, IfcRoofType_DOME_ROOF, IfcRoofType_FREEFORM, IfcRoofType_USERDEFINED, IfcRoofType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcSIPrefix {
typedef enum {IfcSIPrefix_EXA, IfcSIPrefix_PETA, IfcSIPrefix_TERA, IfcSIPrefix_GIGA, IfcSIPrefix_MEGA, IfcSIPrefix_KILO, IfcSIPrefix_HECTO, IfcSIPrefix_DECA, IfcSIPrefix_DECI, IfcSIPrefix_CENTI, IfcSIPrefix_MILLI, IfcSIPrefix_MICRO, IfcSIPrefix_NANO, IfcSIPrefix_PICO, IfcSIPrefix_FEMTO, IfcSIPrefix_ATTO} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcSIUnitName {
typedef enum {IfcSIUnitName_AMPERE, IfcSIUnitName_BECQUEREL, IfcSIUnitName_CANDELA, IfcSIUnitName_COULOMB, IfcSIUnitName_CUBIC_METRE, IfcSIUnitName_DEGREE_CELSIUS, IfcSIUnitName_FARAD, IfcSIUnitName_GRAM, IfcSIUnitName_GRAY, IfcSIUnitName_HENRY, IfcSIUnitName_HERTZ, IfcSIUnitName_JOULE, IfcSIUnitName_KELVIN, IfcSIUnitName_LUMEN, IfcSIUnitName_LUX, IfcSIUnitName_METRE, IfcSIUnitName_MOLE, IfcSIUnitName_NEWTON, IfcSIUnitName_OHM, IfcSIUnitName_PASCAL, IfcSIUnitName_RADIAN, IfcSIUnitName_SECOND, IfcSIUnitName_SIEMENS, IfcSIUnitName_SIEVERT, IfcSIUnitName_SQUARE_METRE, IfcSIUnitName_STERADIAN, IfcSIUnitName_TESLA, IfcSIUnitName_VOLT, IfcSIUnitName_WATT, IfcSIUnitName_WEBER} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcSanitaryTerminalTypeEnum {
typedef enum {IfcSanitaryTerminalType_BATH, IfcSanitaryTerminalType_BIDET, IfcSanitaryTerminalType_CISTERN, IfcSanitaryTerminalType_SHOWER, IfcSanitaryTerminalType_SINK, IfcSanitaryTerminalType_SANITARYFOUNTAIN, IfcSanitaryTerminalType_TOILETPAN, IfcSanitaryTerminalType_URINAL, IfcSanitaryTerminalType_WASHHANDBASIN, IfcSanitaryTerminalType_WCSEAT, IfcSanitaryTerminalType_USERDEFINED, IfcSanitaryTerminalType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcSectionTypeEnum {
typedef enum {IfcSectionType_UNIFORM, IfcSectionType_TAPERED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcSensorTypeEnum {
typedef enum {IfcSensorType_COSENSOR, IfcSensorType_CO2SENSOR, IfcSensorType_CONDUCTANCESENSOR, IfcSensorType_CONTACTSENSOR, IfcSensorType_FIRESENSOR, IfcSensorType_FLOWSENSOR, IfcSensorType_FROSTSENSOR, IfcSensorType_GASSENSOR, IfcSensorType_HEATSENSOR, IfcSensorType_HUMIDITYSENSOR, IfcSensorType_IDENTIFIERSENSOR, IfcSensorType_IONCONCENTRATIONSENSOR, IfcSensorType_LEVELSENSOR, IfcSensorType_LIGHTSENSOR, IfcSensorType_MOISTURESENSOR, IfcSensorType_MOVEMENTSENSOR, IfcSensorType_PHSENSOR, IfcSensorType_PRESSURESENSOR, IfcSensorType_RADIATIONSENSOR, IfcSensorType_RADIOACTIVITYSENSOR, IfcSensorType_SMOKESENSOR, IfcSensorType_SOUNDSENSOR, IfcSensorType_TEMPERATURESENSOR, IfcSensorType_WINDSENSOR, IfcSensorType_USERDEFINED, IfcSensorType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcSequenceEnum {
typedef enum {IfcSequence_START_START, IfcSequence_START_FINISH, IfcSequence_FINISH_START, IfcSequence_FINISH_FINISH, IfcSequence_USERDEFINED, IfcSequence_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcShadingDeviceTypeEnum {
typedef enum {IfcShadingDeviceType_JALOUSIE, IfcShadingDeviceType_SHUTTER, IfcShadingDeviceType_AWNING, IfcShadingDeviceType_USERDEFINED, IfcShadingDeviceType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcSimplePropertyTemplateTypeEnum {
typedef enum {IfcSimplePropertyTemplateType_P_SINGLEVALUE, IfcSimplePropertyTemplateType_P_ENUMERATEDVALUE, IfcSimplePropertyTemplateType_P_BOUNDEDVALUE, IfcSimplePropertyTemplateType_P_LISTVALUE, IfcSimplePropertyTemplateType_P_TABLEVALUE, IfcSimplePropertyTemplateType_P_REFERENCEVALUE, IfcSimplePropertyTemplateType_Q_LENGTH, IfcSimplePropertyTemplateType_Q_AREA, IfcSimplePropertyTemplateType_Q_VOLUME, IfcSimplePropertyTemplateType_Q_COUNT, IfcSimplePropertyTemplateType_Q_WEIGHT, IfcSimplePropertyTemplateType_Q_TIME} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcSlabTypeEnum {
typedef enum {IfcSlabType_FLOOR, IfcSlabType_ROOF, IfcSlabType_LANDING, IfcSlabType_BASESLAB, IfcSlabType_USERDEFINED, IfcSlabType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcSolarDeviceTypeEnum {
typedef enum {IfcSolarDeviceType_SOLARCOLLECTOR, IfcSolarDeviceType_SOLARPANEL, IfcSolarDeviceType_USERDEFINED, IfcSolarDeviceType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcSpaceHeaterTypeEnum {
typedef enum {IfcSpaceHeaterType_CONVECTOR, IfcSpaceHeaterType_RADIATOR, IfcSpaceHeaterType_USERDEFINED, IfcSpaceHeaterType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcSpaceTypeEnum {
typedef enum {IfcSpaceType_SPACE, IfcSpaceType_PARKING, IfcSpaceType_GFA, IfcSpaceType_INTERNAL, IfcSpaceType_EXTERNAL, IfcSpaceType_USERDEFINED, IfcSpaceType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcSpatialZoneTypeEnum {
typedef enum {IfcSpatialZoneType_CONSTRUCTION, IfcSpatialZoneType_FIRESAFETY, IfcSpatialZoneType_LIGHTING, IfcSpatialZoneType_OCCUPANCY, IfcSpatialZoneType_SECURITY, IfcSpatialZoneType_THERMAL, IfcSpatialZoneType_TRANSPORT, IfcSpatialZoneType_VENTILATION, IfcSpatialZoneType_USERDEFINED, IfcSpatialZoneType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcStackTerminalTypeEnum {
typedef enum {IfcStackTerminalType_BIRDCAGE, IfcStackTerminalType_COWL, IfcStackTerminalType_RAINWATERHOPPER, IfcStackTerminalType_USERDEFINED, IfcStackTerminalType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcStairFlightTypeEnum {
typedef enum {IfcStairFlightType_STRAIGHT, IfcStairFlightType_WINDER, IfcStairFlightType_SPIRAL, IfcStairFlightType_CURVED, IfcStairFlightType_FREEFORM, IfcStairFlightType_USERDEFINED, IfcStairFlightType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcStairTypeEnum {
typedef enum {IfcStairType_STRAIGHT_RUN_STAIR, IfcStairType_TWO_STRAIGHT_RUN_STAIR, IfcStairType_QUARTER_WINDING_STAIR, IfcStairType_QUARTER_TURN_STAIR, IfcStairType_HALF_WINDING_STAIR, IfcStairType_HALF_TURN_STAIR, IfcStairType_TWO_QUARTER_WINDING_STAIR, IfcStairType_TWO_QUARTER_TURN_STAIR, IfcStairType_THREE_QUARTER_WINDING_STAIR, IfcStairType_THREE_QUARTER_TURN_STAIR, IfcStairType_SPIRAL_STAIR, IfcStairType_DOUBLE_RETURN_STAIR, IfcStairType_CURVED_RUN_STAIR, IfcStairType_TWO_CURVED_RUN_STAIR, IfcStairType_USERDEFINED, IfcStairType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcStateEnum {
typedef enum {IfcState_READWRITE, IfcState_READONLY, IfcState_LOCKED, IfcState_READWRITELOCKED, IfcState_READONLYLOCKED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcStructuralCurveActivityTypeEnum {
typedef enum {IfcStructuralCurveActivityType_CONST, IfcStructuralCurveActivityType_LINEAR, IfcStructuralCurveActivityType_POLYGONAL, IfcStructuralCurveActivityType_EQUIDISTANT, IfcStructuralCurveActivityType_SINUS, IfcStructuralCurveActivityType_PARABOLA, IfcStructuralCurveActivityType_DISCRETE, IfcStructuralCurveActivityType_USERDEFINED, IfcStructuralCurveActivityType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcStructuralCurveMemberTypeEnum {
typedef enum {IfcStructuralCurveMemberType_RIGID_JOINED_MEMBER, IfcStructuralCurveMemberType_PIN_JOINED_MEMBER, IfcStructuralCurveMemberType_CABLE, IfcStructuralCurveMemberType_TENSION_MEMBER, IfcStructuralCurveMemberType_COMPRESSION_MEMBER, IfcStructuralCurveMemberType_USERDEFINED, IfcStructuralCurveMemberType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcStructuralSurfaceActivityTypeEnum {
typedef enum {IfcStructuralSurfaceActivityType_CONST, IfcStructuralSurfaceActivityType_BILINEAR, IfcStructuralSurfaceActivityType_DISCRETE, IfcStructuralSurfaceActivityType_ISOCONTOUR, IfcStructuralSurfaceActivityType_USERDEFINED, IfcStructuralSurfaceActivityType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcStructuralSurfaceMemberTypeEnum {
typedef enum {IfcStructuralSurfaceMemberType_BENDING_ELEMENT, IfcStructuralSurfaceMemberType_MEMBRANE_ELEMENT, IfcStructuralSurfaceMemberType_SHELL, IfcStructuralSurfaceMemberType_USERDEFINED, IfcStructuralSurfaceMemberType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcSubContractResourceTypeEnum {
typedef enum {IfcSubContractResourceType_PURCHASE, IfcSubContractResourceType_WORK, IfcSubContractResourceType_USERDEFINED, IfcSubContractResourceType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcSurfaceFeatureTypeEnum {
typedef enum {IfcSurfaceFeatureType_MARK, IfcSurfaceFeatureType_TAG, IfcSurfaceFeatureType_TREATMENT, IfcSurfaceFeatureType_USERDEFINED, IfcSurfaceFeatureType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcSurfaceSide {
typedef enum {IfcSurfaceSide_POSITIVE, IfcSurfaceSide_NEGATIVE, IfcSurfaceSide_BOTH} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcSwitchingDeviceTypeEnum {
typedef enum {IfcSwitchingDeviceType_CONTACTOR, IfcSwitchingDeviceType_DIMMERSWITCH, IfcSwitchingDeviceType_EMERGENCYSTOP, IfcSwitchingDeviceType_KEYPAD, IfcSwitchingDeviceType_MOMENTARYSWITCH, IfcSwitchingDeviceType_SELECTORSWITCH, IfcSwitchingDeviceType_STARTER, IfcSwitchingDeviceType_SWITCHDISCONNECTOR, IfcSwitchingDeviceType_TOGGLESWITCH, IfcSwitchingDeviceType_USERDEFINED, IfcSwitchingDeviceType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcSystemFurnitureElementTypeEnum {
typedef enum {IfcSystemFurnitureElementType_PANEL, IfcSystemFurnitureElementType_WORKSURFACE, IfcSystemFurnitureElementType_USERDEFINED, IfcSystemFurnitureElementType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcTankTypeEnum {
typedef enum {IfcTankType_BASIN, IfcTankType_BREAKPRESSURE, IfcTankType_EXPANSION, IfcTankType_FEEDANDEXPANSION, IfcTankType_PRESSUREVESSEL, IfcTankType_STORAGE, IfcTankType_VESSEL, IfcTankType_USERDEFINED, IfcTankType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcTaskDurationEnum {
typedef enum {IfcTaskDuration_ELAPSEDTIME, IfcTaskDuration_WORKTIME, IfcTaskDuration_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcTaskTypeEnum {
typedef enum {IfcTaskType_ATTENDANCE, IfcTaskType_CONSTRUCTION, IfcTaskType_DEMOLITION, IfcTaskType_DISMANTLE, IfcTaskType_DISPOSAL, IfcTaskType_INSTALLATION, IfcTaskType_LOGISTIC, IfcTaskType_MAINTENANCE, IfcTaskType_MOVE, IfcTaskType_OPERATION, IfcTaskType_REMOVAL, IfcTaskType_RENOVATION, IfcTaskType_USERDEFINED, IfcTaskType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcTendonAnchorTypeEnum {

typedef enum {IfcTendonAnchorType_COUPLER, IfcTendonAnchorType_FIXED_END, IfcTendonAnchorType_TENSIONING_END, IfcTendonAnchorType_USERDEFINED, IfcTendonAnchorType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcTendonTypeEnum {

typedef enum {IfcTendonType_BAR, IfcTendonType_COATED, IfcTendonType_STRAND, IfcTendonType_WIRE, IfcTendonType_USERDEFINED, IfcTendonType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcTextPath {
typedef enum {IfcTextPath_LEFT, IfcTextPath_RIGHT, IfcTextPath_UP, IfcTextPath_DOWN} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcTimeSeriesDataTypeEnum {
typedef enum {IfcTimeSeriesDataType_CONTINUOUS, IfcTimeSeriesDataType_DISCRETE, IfcTimeSeriesDataType_DISCRETEBINARY, IfcTimeSeriesDataType_PIECEWISEBINARY, IfcTimeSeriesDataType_PIECEWISECONSTANT, IfcTimeSeriesDataType_PIECEWISECONTINUOUS, IfcTimeSeriesDataType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcTransformerTypeEnum {
typedef enum {IfcTransformerType_CURRENT, IfcTransformerType_FREQUENCY, IfcTransformerType_INVERTER, IfcTransformerType_RECTIFIER, IfcTransformerType_VOLTAGE, IfcTransformerType_USERDEFINED, IfcTransformerType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcTransitionCode {
typedef enum {IfcTransitionCode_DISCONTINUOUS, IfcTransitionCode_CONTINUOUS, IfcTransitionCode_CONTSAMEGRADIENT, IfcTransitionCode_CONTSAMEGRADIENTSAMECURVATURE} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcTransportElementTypeEnum {
typedef enum {IfcTransportElementType_ELEVATOR, IfcTransportElementType_ESCALATOR, IfcTransportElementType_MOVINGWALKWAY, IfcTransportElementType_CRANEWAY, IfcTransportElementType_LIFTINGGEAR, IfcTransportElementType_USERDEFINED, IfcTransportElementType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcTrimmingPreference {
typedef enum {IfcTrimmingPreference_CARTESIAN, IfcTrimmingPreference_PARAMETER, IfcTrimmingPreference_UNSPECIFIED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcTubeBundleTypeEnum {
typedef enum {IfcTubeBundleType_FINNED, IfcTubeBundleType_USERDEFINED, IfcTubeBundleType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcUnitEnum {
typedef enum {IfcUnit_ABSORBEDDOSEUNIT, IfcUnit_AMOUNTOFSUBSTANCEUNIT, IfcUnit_AREAUNIT, IfcUnit_DOSEEQUIVALENTUNIT, IfcUnit_ELECTRICCAPACITANCEUNIT, IfcUnit_ELECTRICCHARGEUNIT, IfcUnit_ELECTRICCONDUCTANCEUNIT, IfcUnit_ELECTRICCURRENTUNIT, IfcUnit_ELECTRICRESISTANCEUNIT, IfcUnit_ELECTRICVOLTAGEUNIT, IfcUnit_ENERGYUNIT, IfcUnit_FORCEUNIT, IfcUnit_FREQUENCYUNIT, IfcUnit_ILLUMINANCEUNIT, IfcUnit_INDUCTANCEUNIT, IfcUnit_LENGTHUNIT, IfcUnit_LUMINOUSFLUXUNIT, IfcUnit_LUMINOUSINTENSITYUNIT, IfcUnit_MAGNETICFLUXDENSITYUNIT, IfcUnit_MAGNETICFLUXUNIT, IfcUnit_MASSUNIT, IfcUnit_PLANEANGLEUNIT, IfcUnit_POWERUNIT, IfcUnit_PRESSUREUNIT, IfcUnit_RADIOACTIVITYUNIT, IfcUnit_SOLIDANGLEUNIT, IfcUnit_THERMODYNAMICTEMPERATUREUNIT, IfcUnit_TIMEUNIT, IfcUnit_VOLUMEUNIT, IfcUnit_USERDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcUnitaryControlElementTypeEnum {
typedef enum {IfcUnitaryControlElementType_ALARMPANEL, IfcUnitaryControlElementType_CONTROLPANEL, IfcUnitaryControlElementType_GASDETECTIONPANEL, IfcUnitaryControlElementType_INDICATORPANEL, IfcUnitaryControlElementType_MIMICPANEL, IfcUnitaryControlElementType_HUMIDISTAT, IfcUnitaryControlElementType_THERMOSTAT, IfcUnitaryControlElementType_WEATHERSTATION, IfcUnitaryControlElementType_USERDEFINED, IfcUnitaryControlElementType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcUnitaryEquipmentTypeEnum {
typedef enum {IfcUnitaryEquipmentType_AIRHANDLER, IfcUnitaryEquipmentType_AIRCONDITIONINGUNIT, IfcUnitaryEquipmentType_DEHUMIDIFIER, IfcUnitaryEquipmentType_SPLITSYSTEM, IfcUnitaryEquipmentType_ROOFTOPUNIT, IfcUnitaryEquipmentType_USERDEFINED, IfcUnitaryEquipmentType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcValveTypeEnum {
typedef enum {IfcValveType_AIRRELEASE, IfcValveType_ANTIVACUUM, IfcValveType_CHANGEOVER, IfcValveType_CHECK, IfcValveType_COMMISSIONING, IfcValveType_DIVERTING, IfcValveType_DRAWOFFCOCK, IfcValveType_DOUBLECHECK, IfcValveType_DOUBLEREGULATING, IfcValveType_FAUCET, IfcValveType_FLUSHING, IfcValveType_GASCOCK, IfcValveType_GASTAP, IfcValveType_ISOLATING, IfcValveType_MIXING, IfcValveType_PRESSUREREDUCING, IfcValveType_PRESSURERELIEF, IfcValveType_REGULATING, IfcValveType_SAFETYCUTOFF, IfcValveType_STEAMTRAP, IfcValveType_STOPCOCK, IfcValveType_USERDEFINED, IfcValveType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcVibrationIsolatorTypeEnum {
typedef enum {IfcVibrationIsolatorType_COMPRESSION, IfcVibrationIsolatorType_SPRING, IfcVibrationIsolatorType_USERDEFINED, IfcVibrationIsolatorType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcVoidingFeatureTypeEnum {
typedef enum {IfcVoidingFeatureType_CUTOUT, IfcVoidingFeatureType_NOTCH, IfcVoidingFeatureType_HOLE, IfcVoidingFeatureType_MITER, IfcVoidingFeatureType_CHAMFER, IfcVoidingFeatureType_EDGE, IfcVoidingFeatureType_USERDEFINED, IfcVoidingFeatureType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcWallTypeEnum {
typedef enum {IfcWallType_MOVABLE, IfcWallType_PARAPET, IfcWallType_PARTITIONING, IfcWallType_PLUMBINGWALL, IfcWallType_SHEAR, IfcWallType_SOLIDWALL, IfcWallType_STANDARD, IfcWallType_POLYGONAL, IfcWallType_ELEMENTEDWALL, IfcWallType_USERDEFINED, IfcWallType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcWasteTerminalTypeEnum {
typedef enum {IfcWasteTerminalType_FLOORTRAP, IfcWasteTerminalType_FLOORWASTE, IfcWasteTerminalType_GULLYSUMP, IfcWasteTerminalType_GULLYTRAP, IfcWasteTerminalType_ROOFDRAIN, IfcWasteTerminalType_WASTEDISPOSALUNIT, IfcWasteTerminalType_WASTETRAP, IfcWasteTerminalType_USERDEFINED, IfcWasteTerminalType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcWindowPanelOperationEnum {
typedef enum {IfcWindowPanelOperation_SIDEHUNGRIGHTHAND, IfcWindowPanelOperation_SIDEHUNGLEFTHAND, IfcWindowPanelOperation_TILTANDTURNRIGHTHAND, IfcWindowPanelOperation_TILTANDTURNLEFTHAND, IfcWindowPanelOperation_TOPHUNG, IfcWindowPanelOperation_BOTTOMHUNG, IfcWindowPanelOperation_PIVOTHORIZONTAL, IfcWindowPanelOperation_PIVOTVERTICAL, IfcWindowPanelOperation_SLIDINGHORIZONTAL, IfcWindowPanelOperation_SLIDINGVERTICAL, IfcWindowPanelOperation_REMOVABLECASEMENT, IfcWindowPanelOperation_FIXEDCASEMENT, IfcWindowPanelOperation_OTHEROPERATION, IfcWindowPanelOperation_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcWindowPanelPositionEnum {
typedef enum {IfcWindowPanelPosition_LEFT, IfcWindowPanelPosition_MIDDLE, IfcWindowPanelPosition_RIGHT, IfcWindowPanelPosition_BOTTOM, IfcWindowPanelPosition_TOP, IfcWindowPanelPosition_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcWindowStyleConstructionEnum {
typedef enum {IfcWindowStyleConstruction_ALUMINIUM, IfcWindowStyleConstruction_HIGH_GRADE_STEEL, IfcWindowStyleConstruction_STEEL, IfcWindowStyleConstruction_WOOD, IfcWindowStyleConstruction_ALUMINIUM_WOOD, IfcWindowStyleConstruction_PLASTIC, IfcWindowStyleConstruction_OTHER_CONSTRUCTION, IfcWindowStyleConstruction_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcWindowStyleOperationEnum {
typedef enum {IfcWindowStyleOperation_SINGLE_PANEL, IfcWindowStyleOperation_DOUBLE_PANEL_VERTICAL, IfcWindowStyleOperation_DOUBLE_PANEL_HORIZONTAL, IfcWindowStyleOperation_TRIPLE_PANEL_VERTICAL, IfcWindowStyleOperation_TRIPLE_PANEL_BOTTOM, IfcWindowStyleOperation_TRIPLE_PANEL_TOP, IfcWindowStyleOperation_TRIPLE_PANEL_LEFT, IfcWindowStyleOperation_TRIPLE_PANEL_RIGHT, IfcWindowStyleOperation_TRIPLE_PANEL_HORIZONTAL, IfcWindowStyleOperation_USERDEFINED, IfcWindowStyleOperation_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcWindowTypeEnum {
typedef enum {IfcWindowType_WINDOW, IfcWindowType_SKYLIGHT, IfcWindowType_LIGHTDOME, IfcWindowType_USERDEFINED, IfcWindowType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcWindowTypePartitioningEnum {
typedef enum {IfcWindowTypePartitioning_SINGLE_PANEL, IfcWindowTypePartitioning_DOUBLE_PANEL_VERTICAL, IfcWindowTypePartitioning_DOUBLE_PANEL_HORIZONTAL, IfcWindowTypePartitioning_TRIPLE_PANEL_VERTICAL, IfcWindowTypePartitioning_TRIPLE_PANEL_BOTTOM, IfcWindowTypePartitioning_TRIPLE_PANEL_TOP, IfcWindowTypePartitioning_TRIPLE_PANEL_LEFT, IfcWindowTypePartitioning_TRIPLE_PANEL_RIGHT, IfcWindowTypePartitioning_TRIPLE_PANEL_HORIZONTAL, IfcWindowTypePartitioning_USERDEFINED, IfcWindowTypePartitioning_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcWorkCalendarTypeEnum {
typedef enum {IfcWorkCalendarType_FIRSTSHIFT, IfcWorkCalendarType_SECONDSHIFT, IfcWorkCalendarType_THIRDSHIFT, IfcWorkCalendarType_USERDEFINED, IfcWorkCalendarType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcWorkPlanTypeEnum {
typedef enum {IfcWorkPlanType_ACTUAL, IfcWorkPlanType_BASELINE, IfcWorkPlanType_PLANNED, IfcWorkPlanType_USERDEFINED, IfcWorkPlanType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
struct IfcWorkScheduleTypeEnum {
typedef enum {IfcWorkScheduleType_ACTUAL, IfcWorkScheduleType_BASELINE, IfcWorkScheduleType_PLANNED, IfcWorkScheduleType_USERDEFINED, IfcWorkScheduleType_NOTDEFINED} Value;
IFC_PARSE_API static const char* ToString(Value v);
IFC_PARSE_API static Value FromString(const std::string& s);
};
class IFC_PARSE_API IfcAbsorbedDoseMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcAbsorbedDoseMeasure (IfcEntityInstanceData* e);
    IfcAbsorbedDoseMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcAccelerationMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcAccelerationMeasure (IfcEntityInstanceData* e);
    IfcAccelerationMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcAmountOfSubstanceMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcAmountOfSubstanceMeasure (IfcEntityInstanceData* e);
    IfcAmountOfSubstanceMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcAngularVelocityMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcAngularVelocityMeasure (IfcEntityInstanceData* e);
    IfcAngularVelocityMeasure (double v);
    operator double() const;
};

class IFC_PARSE_API IfcArcIndex : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcArcIndex (IfcEntityInstanceData* e);
    IfcArcIndex (std::vector< int > /*[3:3]*/ v);
    operator std::vector< int > /*[3:3]*/() const;
};

class IFC_PARSE_API IfcAreaDensityMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcAreaDensityMeasure (IfcEntityInstanceData* e);
    IfcAreaDensityMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcAreaMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcAreaMeasure (IfcEntityInstanceData* e);
    IfcAreaMeasure (double v);
    operator double() const;
};

class IFC_PARSE_API IfcBinary : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcBinary (IfcEntityInstanceData* e);
    IfcBinary (boost::dynamic_bitset<> v);
    operator boost::dynamic_bitset<>() const;
};
class IFC_PARSE_API IfcBoolean : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcBoolean (IfcEntityInstanceData* e);
    IfcBoolean (bool v);
    operator bool() const;
};
class IFC_PARSE_API IfcCardinalPointReference : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcCardinalPointReference (IfcEntityInstanceData* e);
    IfcCardinalPointReference (int v);
    operator int() const;
};
class IFC_PARSE_API IfcComplexNumber : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcComplexNumber (IfcEntityInstanceData* e);
    IfcComplexNumber (std::vector< double > /*[1:2]*/ v);
    operator std::vector< double > /*[1:2]*/() const;
};
class IFC_PARSE_API IfcCompoundPlaneAngleMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcCompoundPlaneAngleMeasure (IfcEntityInstanceData* e);
    IfcCompoundPlaneAngleMeasure (std::vector< int > /*[3:4]*/ v);
    operator std::vector< int > /*[3:4]*/() const;
};
class IFC_PARSE_API IfcContextDependentMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcContextDependentMeasure (IfcEntityInstanceData* e);
    IfcContextDependentMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcCountMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcCountMeasure (IfcEntityInstanceData* e);
    IfcCountMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcCurvatureMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcCurvatureMeasure (IfcEntityInstanceData* e);
    IfcCurvatureMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcDate : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcDate (IfcEntityInstanceData* e);
    IfcDate (std::string v);
    operator std::string() const;
};
class IFC_PARSE_API IfcDateTime : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcDateTime (IfcEntityInstanceData* e);
    IfcDateTime (std::string v);
    operator std::string() const;
};
class IFC_PARSE_API IfcDayInMonthNumber : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcDayInMonthNumber (IfcEntityInstanceData* e);
    IfcDayInMonthNumber (int v);
    operator int() const;
};
class IFC_PARSE_API IfcDayInWeekNumber : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcDayInWeekNumber (IfcEntityInstanceData* e);
    IfcDayInWeekNumber (int v);
    operator int() const;
};
class IFC_PARSE_API IfcDescriptiveMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcDescriptiveMeasure (IfcEntityInstanceData* e);
    IfcDescriptiveMeasure (std::string v);
    operator std::string() const;
};
class IFC_PARSE_API IfcDimensionCount : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcDimensionCount (IfcEntityInstanceData* e);
    IfcDimensionCount (int v);
    operator int() const;
};
class IFC_PARSE_API IfcDoseEquivalentMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcDoseEquivalentMeasure (IfcEntityInstanceData* e);
    IfcDoseEquivalentMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcDuration : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcDuration (IfcEntityInstanceData* e);
    IfcDuration (std::string v);
    operator std::string() const;
};
class IFC_PARSE_API IfcDynamicViscosityMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcDynamicViscosityMeasure (IfcEntityInstanceData* e);
    IfcDynamicViscosityMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcElectricCapacitanceMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcElectricCapacitanceMeasure (IfcEntityInstanceData* e);
    IfcElectricCapacitanceMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcElectricChargeMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcElectricChargeMeasure (IfcEntityInstanceData* e);
    IfcElectricChargeMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcElectricConductanceMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcElectricConductanceMeasure (IfcEntityInstanceData* e);
    IfcElectricConductanceMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcElectricCurrentMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcElectricCurrentMeasure (IfcEntityInstanceData* e);
    IfcElectricCurrentMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcElectricResistanceMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcElectricResistanceMeasure (IfcEntityInstanceData* e);
    IfcElectricResistanceMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcElectricVoltageMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcElectricVoltageMeasure (IfcEntityInstanceData* e);
    IfcElectricVoltageMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcEnergyMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcEnergyMeasure (IfcEntityInstanceData* e);
    IfcEnergyMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcFontStyle : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcFontStyle (IfcEntityInstanceData* e);
    IfcFontStyle (std::string v);
    operator std::string() const;
};
class IFC_PARSE_API IfcFontVariant : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcFontVariant (IfcEntityInstanceData* e);
    IfcFontVariant (std::string v);
    operator std::string() const;
};
class IFC_PARSE_API IfcFontWeight : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcFontWeight (IfcEntityInstanceData* e);
    IfcFontWeight (std::string v);
    operator std::string() const;
};
class IFC_PARSE_API IfcForceMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcForceMeasure (IfcEntityInstanceData* e);
    IfcForceMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcFrequencyMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcFrequencyMeasure (IfcEntityInstanceData* e);
    IfcFrequencyMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcGloballyUniqueId : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcGloballyUniqueId (IfcEntityInstanceData* e);
    IfcGloballyUniqueId (std::string v);
    operator std::string() const;
};
class IFC_PARSE_API IfcHeatFluxDensityMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcHeatFluxDensityMeasure (IfcEntityInstanceData* e);
    IfcHeatFluxDensityMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcHeatingValueMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcHeatingValueMeasure (IfcEntityInstanceData* e);
    IfcHeatingValueMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcIdentifier : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcIdentifier (IfcEntityInstanceData* e);
    IfcIdentifier (std::string v);
    operator std::string() const;
};
class IFC_PARSE_API IfcIlluminanceMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcIlluminanceMeasure (IfcEntityInstanceData* e);
    IfcIlluminanceMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcInductanceMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcInductanceMeasure (IfcEntityInstanceData* e);
    IfcInductanceMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcInteger : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcInteger (IfcEntityInstanceData* e);
    IfcInteger (int v);
    operator int() const;
};
class IFC_PARSE_API IfcIntegerCountRateMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcIntegerCountRateMeasure (IfcEntityInstanceData* e);
    IfcIntegerCountRateMeasure (int v);
    operator int() const;
};
class IFC_PARSE_API IfcIonConcentrationMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcIonConcentrationMeasure (IfcEntityInstanceData* e);
    IfcIonConcentrationMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcIsothermalMoistureCapacityMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcIsothermalMoistureCapacityMeasure (IfcEntityInstanceData* e);
    IfcIsothermalMoistureCapacityMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcKinematicViscosityMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcKinematicViscosityMeasure (IfcEntityInstanceData* e);
    IfcKinematicViscosityMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcLabel : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcLabel (IfcEntityInstanceData* e);
    IfcLabel (std::string v);
    operator std::string() const;
};
class IFC_PARSE_API IfcLanguageId : public IfcIdentifier {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcLanguageId (IfcEntityInstanceData* e);
    IfcLanguageId (std::string v);
    operator std::string() const;
};
class IFC_PARSE_API IfcLengthMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcLengthMeasure (IfcEntityInstanceData* e);
    IfcLengthMeasure (double v);
    operator double() const;
};

class IFC_PARSE_API IfcLineIndex : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcLineIndex (IfcEntityInstanceData* e);
    IfcLineIndex (std::vector< int > /*[2:?]*/ v);
    operator std::vector< int > /*[2:?]*/() const;
};
class IFC_PARSE_API IfcLinearForceMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcLinearForceMeasure (IfcEntityInstanceData* e);
    IfcLinearForceMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcLinearMomentMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcLinearMomentMeasure (IfcEntityInstanceData* e);
    IfcLinearMomentMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcLinearStiffnessMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcLinearStiffnessMeasure (IfcEntityInstanceData* e);
    IfcLinearStiffnessMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcLinearVelocityMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcLinearVelocityMeasure (IfcEntityInstanceData* e);
    IfcLinearVelocityMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcLogical : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcLogical (IfcEntityInstanceData* e);
    IfcLogical (bool v);
    operator bool() const;
};
class IFC_PARSE_API IfcLuminousFluxMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcLuminousFluxMeasure (IfcEntityInstanceData* e);
    IfcLuminousFluxMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcLuminousIntensityDistributionMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcLuminousIntensityDistributionMeasure (IfcEntityInstanceData* e);
    IfcLuminousIntensityDistributionMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcLuminousIntensityMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcLuminousIntensityMeasure (IfcEntityInstanceData* e);
    IfcLuminousIntensityMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcMagneticFluxDensityMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcMagneticFluxDensityMeasure (IfcEntityInstanceData* e);
    IfcMagneticFluxDensityMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcMagneticFluxMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcMagneticFluxMeasure (IfcEntityInstanceData* e);
    IfcMagneticFluxMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcMassDensityMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcMassDensityMeasure (IfcEntityInstanceData* e);
    IfcMassDensityMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcMassFlowRateMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcMassFlowRateMeasure (IfcEntityInstanceData* e);
    IfcMassFlowRateMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcMassMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcMassMeasure (IfcEntityInstanceData* e);
    IfcMassMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcMassPerLengthMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcMassPerLengthMeasure (IfcEntityInstanceData* e);
    IfcMassPerLengthMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcModulusOfElasticityMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcModulusOfElasticityMeasure (IfcEntityInstanceData* e);
    IfcModulusOfElasticityMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcModulusOfLinearSubgradeReactionMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcModulusOfLinearSubgradeReactionMeasure (IfcEntityInstanceData* e);
    IfcModulusOfLinearSubgradeReactionMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcModulusOfRotationalSubgradeReactionMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcModulusOfRotationalSubgradeReactionMeasure (IfcEntityInstanceData* e);
    IfcModulusOfRotationalSubgradeReactionMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcModulusOfSubgradeReactionMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcModulusOfSubgradeReactionMeasure (IfcEntityInstanceData* e);
    IfcModulusOfSubgradeReactionMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcMoistureDiffusivityMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcMoistureDiffusivityMeasure (IfcEntityInstanceData* e);
    IfcMoistureDiffusivityMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcMolecularWeightMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcMolecularWeightMeasure (IfcEntityInstanceData* e);
    IfcMolecularWeightMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcMomentOfInertiaMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcMomentOfInertiaMeasure (IfcEntityInstanceData* e);
    IfcMomentOfInertiaMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcMonetaryMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcMonetaryMeasure (IfcEntityInstanceData* e);
    IfcMonetaryMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcMonthInYearNumber : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcMonthInYearNumber (IfcEntityInstanceData* e);
    IfcMonthInYearNumber (int v);
    operator int() const;
};
class IFC_PARSE_API IfcNonNegativeLengthMeasure : public IfcLengthMeasure {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcNonNegativeLengthMeasure (IfcEntityInstanceData* e);
    IfcNonNegativeLengthMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcNumericMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcNumericMeasure (IfcEntityInstanceData* e);
    IfcNumericMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcPHMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcPHMeasure (IfcEntityInstanceData* e);
    IfcPHMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcParameterValue : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcParameterValue (IfcEntityInstanceData* e);
    IfcParameterValue (double v);
    operator double() const;
};
class IFC_PARSE_API IfcPlanarForceMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcPlanarForceMeasure (IfcEntityInstanceData* e);
    IfcPlanarForceMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcPlaneAngleMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcPlaneAngleMeasure (IfcEntityInstanceData* e);
    IfcPlaneAngleMeasure (double v);
    operator double() const;
};

class IFC_PARSE_API IfcPositiveInteger : public IfcInteger {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcPositiveInteger (IfcEntityInstanceData* e);
    IfcPositiveInteger (int v);
    operator int() const;
};
class IFC_PARSE_API IfcPositiveLengthMeasure : public IfcLengthMeasure {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcPositiveLengthMeasure (IfcEntityInstanceData* e);
    IfcPositiveLengthMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcPositivePlaneAngleMeasure : public IfcPlaneAngleMeasure {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcPositivePlaneAngleMeasure (IfcEntityInstanceData* e);
    IfcPositivePlaneAngleMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcPowerMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcPowerMeasure (IfcEntityInstanceData* e);
    IfcPowerMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcPresentableText : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcPresentableText (IfcEntityInstanceData* e);
    IfcPresentableText (std::string v);
    operator std::string() const;
};
class IFC_PARSE_API IfcPressureMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcPressureMeasure (IfcEntityInstanceData* e);
    IfcPressureMeasure (double v);
    operator double() const;
};

class IFC_PARSE_API IfcPropertySetDefinitionSet : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcPropertySetDefinitionSet (IfcEntityInstanceData* e);
    IfcPropertySetDefinitionSet (IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr v);
    operator IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr() const;
};
class IFC_PARSE_API IfcRadioActivityMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcRadioActivityMeasure (IfcEntityInstanceData* e);
    IfcRadioActivityMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcRatioMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcRatioMeasure (IfcEntityInstanceData* e);
    IfcRatioMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcReal : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcReal (IfcEntityInstanceData* e);
    IfcReal (double v);
    operator double() const;
};
class IFC_PARSE_API IfcRotationalFrequencyMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcRotationalFrequencyMeasure (IfcEntityInstanceData* e);
    IfcRotationalFrequencyMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcRotationalMassMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcRotationalMassMeasure (IfcEntityInstanceData* e);
    IfcRotationalMassMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcRotationalStiffnessMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcRotationalStiffnessMeasure (IfcEntityInstanceData* e);
    IfcRotationalStiffnessMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcSectionModulusMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcSectionModulusMeasure (IfcEntityInstanceData* e);
    IfcSectionModulusMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcSectionalAreaIntegralMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcSectionalAreaIntegralMeasure (IfcEntityInstanceData* e);
    IfcSectionalAreaIntegralMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcShearModulusMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcShearModulusMeasure (IfcEntityInstanceData* e);
    IfcShearModulusMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcSolidAngleMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcSolidAngleMeasure (IfcEntityInstanceData* e);
    IfcSolidAngleMeasure (double v);
    operator double() const;
};

class IFC_PARSE_API IfcSoundPowerLevelMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcSoundPowerLevelMeasure (IfcEntityInstanceData* e);
    IfcSoundPowerLevelMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcSoundPowerMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcSoundPowerMeasure (IfcEntityInstanceData* e);
    IfcSoundPowerMeasure (double v);
    operator double() const;
};

class IFC_PARSE_API IfcSoundPressureLevelMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcSoundPressureLevelMeasure (IfcEntityInstanceData* e);
    IfcSoundPressureLevelMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcSoundPressureMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcSoundPressureMeasure (IfcEntityInstanceData* e);
    IfcSoundPressureMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcSpecificHeatCapacityMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcSpecificHeatCapacityMeasure (IfcEntityInstanceData* e);
    IfcSpecificHeatCapacityMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcSpecularExponent : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcSpecularExponent (IfcEntityInstanceData* e);
    IfcSpecularExponent (double v);
    operator double() const;
};
class IFC_PARSE_API IfcSpecularRoughness : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcSpecularRoughness (IfcEntityInstanceData* e);
    IfcSpecularRoughness (double v);
    operator double() const;
};
class IFC_PARSE_API IfcTemperatureGradientMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcTemperatureGradientMeasure (IfcEntityInstanceData* e);
    IfcTemperatureGradientMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcTemperatureRateOfChangeMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcTemperatureRateOfChangeMeasure (IfcEntityInstanceData* e);
    IfcTemperatureRateOfChangeMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcText : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcText (IfcEntityInstanceData* e);
    IfcText (std::string v);
    operator std::string() const;
};
class IFC_PARSE_API IfcTextAlignment : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcTextAlignment (IfcEntityInstanceData* e);
    IfcTextAlignment (std::string v);
    operator std::string() const;
};
class IFC_PARSE_API IfcTextDecoration : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcTextDecoration (IfcEntityInstanceData* e);
    IfcTextDecoration (std::string v);
    operator std::string() const;
};
class IFC_PARSE_API IfcTextFontName : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcTextFontName (IfcEntityInstanceData* e);
    IfcTextFontName (std::string v);
    operator std::string() const;
};
class IFC_PARSE_API IfcTextTransformation : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcTextTransformation (IfcEntityInstanceData* e);
    IfcTextTransformation (std::string v);
    operator std::string() const;
};
class IFC_PARSE_API IfcThermalAdmittanceMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcThermalAdmittanceMeasure (IfcEntityInstanceData* e);
    IfcThermalAdmittanceMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcThermalConductivityMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcThermalConductivityMeasure (IfcEntityInstanceData* e);
    IfcThermalConductivityMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcThermalExpansionCoefficientMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcThermalExpansionCoefficientMeasure (IfcEntityInstanceData* e);
    IfcThermalExpansionCoefficientMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcThermalResistanceMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcThermalResistanceMeasure (IfcEntityInstanceData* e);
    IfcThermalResistanceMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcThermalTransmittanceMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcThermalTransmittanceMeasure (IfcEntityInstanceData* e);
    IfcThermalTransmittanceMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcThermodynamicTemperatureMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcThermodynamicTemperatureMeasure (IfcEntityInstanceData* e);
    IfcThermodynamicTemperatureMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcTime : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcTime (IfcEntityInstanceData* e);
    IfcTime (std::string v);
    operator std::string() const;
};
class IFC_PARSE_API IfcTimeMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcTimeMeasure (IfcEntityInstanceData* e);
    IfcTimeMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcTimeStamp : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcTimeStamp (IfcEntityInstanceData* e);
    IfcTimeStamp (int v);
    operator int() const;
};
class IFC_PARSE_API IfcTorqueMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcTorqueMeasure (IfcEntityInstanceData* e);
    IfcTorqueMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcURIReference : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcURIReference (IfcEntityInstanceData* e);
    IfcURIReference (std::string v);
    operator std::string() const;
};
class IFC_PARSE_API IfcVaporPermeabilityMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcVaporPermeabilityMeasure (IfcEntityInstanceData* e);
    IfcVaporPermeabilityMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcVolumeMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcVolumeMeasure (IfcEntityInstanceData* e);
    IfcVolumeMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcVolumetricFlowRateMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcVolumetricFlowRateMeasure (IfcEntityInstanceData* e);
    IfcVolumetricFlowRateMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcWarpingConstantMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcWarpingConstantMeasure (IfcEntityInstanceData* e);
    IfcWarpingConstantMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcWarpingMomentMeasure : public IfcUtil::IfcBaseType {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcWarpingMomentMeasure (IfcEntityInstanceData* e);
    IfcWarpingMomentMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcBoxAlignment : public IfcLabel {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcBoxAlignment (IfcEntityInstanceData* e);
    IfcBoxAlignment (std::string v);
    operator std::string() const;
};
class IFC_PARSE_API IfcNormalisedRatioMeasure : public IfcRatioMeasure {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcNormalisedRatioMeasure (IfcEntityInstanceData* e);
    IfcNormalisedRatioMeasure (double v);
    operator double() const;
};
class IFC_PARSE_API IfcPositiveRatioMeasure : public IfcRatioMeasure {
public:
    virtual const IfcParse::type_declaration& declaration() const;
    static const IfcParse::type_declaration& Class();
    explicit IfcPositiveRatioMeasure (IfcEntityInstanceData* e);
    IfcPositiveRatioMeasure (double v);
    operator double() const;
};


class IFC_PARSE_API IfcActorRole : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc4::IfcRoleEnum::Value Role() const;
    void setRole(::Ifc4::IfcRoleEnum::Value v);
    bool hasUserDefinedRole() const;
    std::string UserDefinedRole() const;
    void setUserDefinedRole(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
        IfcTemplatedEntityList< IfcExternalReferenceRelationship >::ptr HasExternalReference() const; // INVERSE IfcExternalReferenceRelationship::RelatedResourceObjects
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcActorRole (IfcEntityInstanceData* e);
    IfcActorRole (::Ifc4::IfcRoleEnum::Value v1_Role, boost::optional< std::string > v2_UserDefinedRole, boost::optional< std::string > v3_Description);
    typedef IfcTemplatedEntityList< IfcActorRole > list;
};
class IFC_PARSE_API IfcAddress : public IfcUtil::IfcBaseEntity {
public:
    bool hasPurpose() const;
    ::Ifc4::IfcAddressTypeEnum::Value Purpose() const;
    void setPurpose(::Ifc4::IfcAddressTypeEnum::Value v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
    bool hasUserDefinedPurpose() const;
    std::string UserDefinedPurpose() const;
    void setUserDefinedPurpose(std::string v);
        IfcTemplatedEntityList< IfcPerson >::ptr OfPerson() const; // INVERSE IfcPerson::Addresses
    IfcTemplatedEntityList< IfcOrganization >::ptr OfOrganization() const; // INVERSE IfcOrganization::Addresses
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAddress (IfcEntityInstanceData* e);
    IfcAddress (boost::optional< ::Ifc4::IfcAddressTypeEnum::Value > v1_Purpose, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_UserDefinedPurpose);
    typedef IfcTemplatedEntityList< IfcAddress > list;
};
class IFC_PARSE_API IfcApplication : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc4::IfcOrganization* ApplicationDeveloper() const;
    void setApplicationDeveloper(::Ifc4::IfcOrganization* v);
    std::string Version() const;
    void setVersion(std::string v);
    std::string ApplicationFullName() const;
    void setApplicationFullName(std::string v);
    std::string ApplicationIdentifier() const;
    void setApplicationIdentifier(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcApplication (IfcEntityInstanceData* e);
    IfcApplication (::Ifc4::IfcOrganization* v1_ApplicationDeveloper, std::string v2_Version, std::string v3_ApplicationFullName, std::string v4_ApplicationIdentifier);
    typedef IfcTemplatedEntityList< IfcApplication > list;
};
class IFC_PARSE_API IfcAppliedValue : public IfcUtil::IfcBaseEntity {
public:
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
    bool hasAppliedValue() const;
    ::Ifc4::IfcAppliedValueSelect* AppliedValue() const;
    void setAppliedValue(::Ifc4::IfcAppliedValueSelect* v);
    bool hasUnitBasis() const;
    ::Ifc4::IfcMeasureWithUnit* UnitBasis() const;
    void setUnitBasis(::Ifc4::IfcMeasureWithUnit* v);
    bool hasApplicableDate() const;
    std::string ApplicableDate() const;
    void setApplicableDate(std::string v);
    bool hasFixedUntilDate() const;
    std::string FixedUntilDate() const;
    void setFixedUntilDate(std::string v);
    bool hasCategory() const;
    std::string Category() const;
    void setCategory(std::string v);
    bool hasCondition() const;
    std::string Condition() const;
    void setCondition(std::string v);
    bool hasArithmeticOperator() const;
    ::Ifc4::IfcArithmeticOperatorEnum::Value ArithmeticOperator() const;
    void setArithmeticOperator(::Ifc4::IfcArithmeticOperatorEnum::Value v);
    bool hasComponents() const;
    IfcTemplatedEntityList< ::Ifc4::IfcAppliedValue >::ptr Components() const;
    void setComponents(IfcTemplatedEntityList< ::Ifc4::IfcAppliedValue >::ptr v);
        IfcTemplatedEntityList< IfcExternalReferenceRelationship >::ptr HasExternalReference() const; // INVERSE IfcExternalReferenceRelationship::RelatedResourceObjects
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAppliedValue (IfcEntityInstanceData* e);
    IfcAppliedValue (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4::IfcAppliedValueSelect* v3_AppliedValue, ::Ifc4::IfcMeasureWithUnit* v4_UnitBasis, boost::optional< std::string > v5_ApplicableDate, boost::optional< std::string > v6_FixedUntilDate, boost::optional< std::string > v7_Category, boost::optional< std::string > v8_Condition, boost::optional< ::Ifc4::IfcArithmeticOperatorEnum::Value > v9_ArithmeticOperator, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcAppliedValue >::ptr > v10_Components);
    typedef IfcTemplatedEntityList< IfcAppliedValue > list;
};
class IFC_PARSE_API IfcApproval : public IfcUtil::IfcBaseEntity {
public:
    bool hasIdentifier() const;
    std::string Identifier() const;
    void setIdentifier(std::string v);
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
    bool hasTimeOfApproval() const;
    std::string TimeOfApproval() const;
    void setTimeOfApproval(std::string v);
    bool hasStatus() const;
    std::string Status() const;
    void setStatus(std::string v);
    bool hasLevel() const;
    std::string Level() const;
    void setLevel(std::string v);
    bool hasQualifier() const;
    std::string Qualifier() const;
    void setQualifier(std::string v);
    bool hasRequestingApproval() const;
    ::Ifc4::IfcActorSelect* RequestingApproval() const;
    void setRequestingApproval(::Ifc4::IfcActorSelect* v);
    bool hasGivingApproval() const;
    ::Ifc4::IfcActorSelect* GivingApproval() const;
    void setGivingApproval(::Ifc4::IfcActorSelect* v);
        IfcTemplatedEntityList< IfcExternalReferenceRelationship >::ptr HasExternalReferences() const; // INVERSE IfcExternalReferenceRelationship::RelatedResourceObjects
    IfcTemplatedEntityList< IfcRelAssociatesApproval >::ptr ApprovedObjects() const; // INVERSE IfcRelAssociatesApproval::RelatingApproval
    IfcTemplatedEntityList< IfcResourceApprovalRelationship >::ptr ApprovedResources() const; // INVERSE IfcResourceApprovalRelationship::RelatingApproval
    IfcTemplatedEntityList< IfcApprovalRelationship >::ptr IsRelatedWith() const; // INVERSE IfcApprovalRelationship::RelatedApprovals
    IfcTemplatedEntityList< IfcApprovalRelationship >::ptr Relates() const; // INVERSE IfcApprovalRelationship::RelatingApproval
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcApproval (IfcEntityInstanceData* e);
    IfcApproval (boost::optional< std::string > v1_Identifier, boost::optional< std::string > v2_Name, boost::optional< std::string > v3_Description, boost::optional< std::string > v4_TimeOfApproval, boost::optional< std::string > v5_Status, boost::optional< std::string > v6_Level, boost::optional< std::string > v7_Qualifier, ::Ifc4::IfcActorSelect* v8_RequestingApproval, ::Ifc4::IfcActorSelect* v9_GivingApproval);
    typedef IfcTemplatedEntityList< IfcApproval > list;
};
class IFC_PARSE_API IfcBoundaryCondition : public IfcUtil::IfcBaseEntity {
public:
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBoundaryCondition (IfcEntityInstanceData* e);
    IfcBoundaryCondition (boost::optional< std::string > v1_Name);
    typedef IfcTemplatedEntityList< IfcBoundaryCondition > list;
};
class IFC_PARSE_API IfcBoundaryEdgeCondition : public IfcBoundaryCondition {
public:
    bool hasTranslationalStiffnessByLengthX() const;
    ::Ifc4::IfcModulusOfTranslationalSubgradeReactionSelect* TranslationalStiffnessByLengthX() const;
    void setTranslationalStiffnessByLengthX(::Ifc4::IfcModulusOfTranslationalSubgradeReactionSelect* v);
    bool hasTranslationalStiffnessByLengthY() const;
    ::Ifc4::IfcModulusOfTranslationalSubgradeReactionSelect* TranslationalStiffnessByLengthY() const;
    void setTranslationalStiffnessByLengthY(::Ifc4::IfcModulusOfTranslationalSubgradeReactionSelect* v);
    bool hasTranslationalStiffnessByLengthZ() const;
    ::Ifc4::IfcModulusOfTranslationalSubgradeReactionSelect* TranslationalStiffnessByLengthZ() const;
    void setTranslationalStiffnessByLengthZ(::Ifc4::IfcModulusOfTranslationalSubgradeReactionSelect* v);
    bool hasRotationalStiffnessByLengthX() const;
    ::Ifc4::IfcModulusOfRotationalSubgradeReactionSelect* RotationalStiffnessByLengthX() const;
    void setRotationalStiffnessByLengthX(::Ifc4::IfcModulusOfRotationalSubgradeReactionSelect* v);
    bool hasRotationalStiffnessByLengthY() const;
    ::Ifc4::IfcModulusOfRotationalSubgradeReactionSelect* RotationalStiffnessByLengthY() const;
    void setRotationalStiffnessByLengthY(::Ifc4::IfcModulusOfRotationalSubgradeReactionSelect* v);
    bool hasRotationalStiffnessByLengthZ() const;
    ::Ifc4::IfcModulusOfRotationalSubgradeReactionSelect* RotationalStiffnessByLengthZ() const;
    void setRotationalStiffnessByLengthZ(::Ifc4::IfcModulusOfRotationalSubgradeReactionSelect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBoundaryEdgeCondition (IfcEntityInstanceData* e);
    IfcBoundaryEdgeCondition (boost::optional< std::string > v1_Name, ::Ifc4::IfcModulusOfTranslationalSubgradeReactionSelect* v2_TranslationalStiffnessByLengthX, ::Ifc4::IfcModulusOfTranslationalSubgradeReactionSelect* v3_TranslationalStiffnessByLengthY, ::Ifc4::IfcModulusOfTranslationalSubgradeReactionSelect* v4_TranslationalStiffnessByLengthZ, ::Ifc4::IfcModulusOfRotationalSubgradeReactionSelect* v5_RotationalStiffnessByLengthX, ::Ifc4::IfcModulusOfRotationalSubgradeReactionSelect* v6_RotationalStiffnessByLengthY, ::Ifc4::IfcModulusOfRotationalSubgradeReactionSelect* v7_RotationalStiffnessByLengthZ);
    typedef IfcTemplatedEntityList< IfcBoundaryEdgeCondition > list;
};
class IFC_PARSE_API IfcBoundaryFaceCondition : public IfcBoundaryCondition {
public:
    bool hasTranslationalStiffnessByAreaX() const;
    ::Ifc4::IfcModulusOfSubgradeReactionSelect* TranslationalStiffnessByAreaX() const;
    void setTranslationalStiffnessByAreaX(::Ifc4::IfcModulusOfSubgradeReactionSelect* v);
    bool hasTranslationalStiffnessByAreaY() const;
    ::Ifc4::IfcModulusOfSubgradeReactionSelect* TranslationalStiffnessByAreaY() const;
    void setTranslationalStiffnessByAreaY(::Ifc4::IfcModulusOfSubgradeReactionSelect* v);
    bool hasTranslationalStiffnessByAreaZ() const;
    ::Ifc4::IfcModulusOfSubgradeReactionSelect* TranslationalStiffnessByAreaZ() const;
    void setTranslationalStiffnessByAreaZ(::Ifc4::IfcModulusOfSubgradeReactionSelect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBoundaryFaceCondition (IfcEntityInstanceData* e);
    IfcBoundaryFaceCondition (boost::optional< std::string > v1_Name, ::Ifc4::IfcModulusOfSubgradeReactionSelect* v2_TranslationalStiffnessByAreaX, ::Ifc4::IfcModulusOfSubgradeReactionSelect* v3_TranslationalStiffnessByAreaY, ::Ifc4::IfcModulusOfSubgradeReactionSelect* v4_TranslationalStiffnessByAreaZ);
    typedef IfcTemplatedEntityList< IfcBoundaryFaceCondition > list;
};
class IFC_PARSE_API IfcBoundaryNodeCondition : public IfcBoundaryCondition {
public:
    bool hasTranslationalStiffnessX() const;
    ::Ifc4::IfcTranslationalStiffnessSelect* TranslationalStiffnessX() const;
    void setTranslationalStiffnessX(::Ifc4::IfcTranslationalStiffnessSelect* v);
    bool hasTranslationalStiffnessY() const;
    ::Ifc4::IfcTranslationalStiffnessSelect* TranslationalStiffnessY() const;
    void setTranslationalStiffnessY(::Ifc4::IfcTranslationalStiffnessSelect* v);
    bool hasTranslationalStiffnessZ() const;
    ::Ifc4::IfcTranslationalStiffnessSelect* TranslationalStiffnessZ() const;
    void setTranslationalStiffnessZ(::Ifc4::IfcTranslationalStiffnessSelect* v);
    bool hasRotationalStiffnessX() const;
    ::Ifc4::IfcRotationalStiffnessSelect* RotationalStiffnessX() const;
    void setRotationalStiffnessX(::Ifc4::IfcRotationalStiffnessSelect* v);
    bool hasRotationalStiffnessY() const;
    ::Ifc4::IfcRotationalStiffnessSelect* RotationalStiffnessY() const;
    void setRotationalStiffnessY(::Ifc4::IfcRotationalStiffnessSelect* v);
    bool hasRotationalStiffnessZ() const;
    ::Ifc4::IfcRotationalStiffnessSelect* RotationalStiffnessZ() const;
    void setRotationalStiffnessZ(::Ifc4::IfcRotationalStiffnessSelect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBoundaryNodeCondition (IfcEntityInstanceData* e);
    IfcBoundaryNodeCondition (boost::optional< std::string > v1_Name, ::Ifc4::IfcTranslationalStiffnessSelect* v2_TranslationalStiffnessX, ::Ifc4::IfcTranslationalStiffnessSelect* v3_TranslationalStiffnessY, ::Ifc4::IfcTranslationalStiffnessSelect* v4_TranslationalStiffnessZ, ::Ifc4::IfcRotationalStiffnessSelect* v5_RotationalStiffnessX, ::Ifc4::IfcRotationalStiffnessSelect* v6_RotationalStiffnessY, ::Ifc4::IfcRotationalStiffnessSelect* v7_RotationalStiffnessZ);
    typedef IfcTemplatedEntityList< IfcBoundaryNodeCondition > list;
};
class IFC_PARSE_API IfcBoundaryNodeConditionWarping : public IfcBoundaryNodeCondition {
public:
    bool hasWarpingStiffness() const;
    ::Ifc4::IfcWarpingStiffnessSelect* WarpingStiffness() const;
    void setWarpingStiffness(::Ifc4::IfcWarpingStiffnessSelect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBoundaryNodeConditionWarping (IfcEntityInstanceData* e);
    IfcBoundaryNodeConditionWarping (boost::optional< std::string > v1_Name, ::Ifc4::IfcTranslationalStiffnessSelect* v2_TranslationalStiffnessX, ::Ifc4::IfcTranslationalStiffnessSelect* v3_TranslationalStiffnessY, ::Ifc4::IfcTranslationalStiffnessSelect* v4_TranslationalStiffnessZ, ::Ifc4::IfcRotationalStiffnessSelect* v5_RotationalStiffnessX, ::Ifc4::IfcRotationalStiffnessSelect* v6_RotationalStiffnessY, ::Ifc4::IfcRotationalStiffnessSelect* v7_RotationalStiffnessZ, ::Ifc4::IfcWarpingStiffnessSelect* v8_WarpingStiffness);
    typedef IfcTemplatedEntityList< IfcBoundaryNodeConditionWarping > list;
};
class IFC_PARSE_API IfcConnectionGeometry : public IfcUtil::IfcBaseEntity {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcConnectionGeometry (IfcEntityInstanceData* e);
    IfcConnectionGeometry ();
    typedef IfcTemplatedEntityList< IfcConnectionGeometry > list;
};
class IFC_PARSE_API IfcConnectionPointGeometry : public IfcConnectionGeometry {
public:
    ::Ifc4::IfcPointOrVertexPoint* PointOnRelatingElement() const;
    void setPointOnRelatingElement(::Ifc4::IfcPointOrVertexPoint* v);
    bool hasPointOnRelatedElement() const;
    ::Ifc4::IfcPointOrVertexPoint* PointOnRelatedElement() const;
    void setPointOnRelatedElement(::Ifc4::IfcPointOrVertexPoint* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcConnectionPointGeometry (IfcEntityInstanceData* e);
    IfcConnectionPointGeometry (::Ifc4::IfcPointOrVertexPoint* v1_PointOnRelatingElement, ::Ifc4::IfcPointOrVertexPoint* v2_PointOnRelatedElement);
    typedef IfcTemplatedEntityList< IfcConnectionPointGeometry > list;
};
class IFC_PARSE_API IfcConnectionSurfaceGeometry : public IfcConnectionGeometry {
public:
    ::Ifc4::IfcSurfaceOrFaceSurface* SurfaceOnRelatingElement() const;
    void setSurfaceOnRelatingElement(::Ifc4::IfcSurfaceOrFaceSurface* v);
    bool hasSurfaceOnRelatedElement() const;
    ::Ifc4::IfcSurfaceOrFaceSurface* SurfaceOnRelatedElement() const;
    void setSurfaceOnRelatedElement(::Ifc4::IfcSurfaceOrFaceSurface* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcConnectionSurfaceGeometry (IfcEntityInstanceData* e);
    IfcConnectionSurfaceGeometry (::Ifc4::IfcSurfaceOrFaceSurface* v1_SurfaceOnRelatingElement, ::Ifc4::IfcSurfaceOrFaceSurface* v2_SurfaceOnRelatedElement);
    typedef IfcTemplatedEntityList< IfcConnectionSurfaceGeometry > list;
};
class IFC_PARSE_API IfcConnectionVolumeGeometry : public IfcConnectionGeometry {
public:
    ::Ifc4::IfcSolidOrShell* VolumeOnRelatingElement() const;
    void setVolumeOnRelatingElement(::Ifc4::IfcSolidOrShell* v);
    bool hasVolumeOnRelatedElement() const;
    ::Ifc4::IfcSolidOrShell* VolumeOnRelatedElement() const;
    void setVolumeOnRelatedElement(::Ifc4::IfcSolidOrShell* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcConnectionVolumeGeometry (IfcEntityInstanceData* e);
    IfcConnectionVolumeGeometry (::Ifc4::IfcSolidOrShell* v1_VolumeOnRelatingElement, ::Ifc4::IfcSolidOrShell* v2_VolumeOnRelatedElement);
    typedef IfcTemplatedEntityList< IfcConnectionVolumeGeometry > list;
};
class IFC_PARSE_API IfcConstraint : public IfcUtil::IfcBaseEntity {
public:
    std::string Name() const;
    void setName(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
    ::Ifc4::IfcConstraintEnum::Value ConstraintGrade() const;
    void setConstraintGrade(::Ifc4::IfcConstraintEnum::Value v);
    bool hasConstraintSource() const;
    std::string ConstraintSource() const;
    void setConstraintSource(std::string v);
    bool hasCreatingActor() const;
    ::Ifc4::IfcActorSelect* CreatingActor() const;
    void setCreatingActor(::Ifc4::IfcActorSelect* v);
    bool hasCreationTime() const;
    std::string CreationTime() const;
    void setCreationTime(std::string v);
    bool hasUserDefinedGrade() const;
    std::string UserDefinedGrade() const;
    void setUserDefinedGrade(std::string v);
        IfcTemplatedEntityList< IfcExternalReferenceRelationship >::ptr HasExternalReferences() const; // INVERSE IfcExternalReferenceRelationship::RelatedResourceObjects
    IfcTemplatedEntityList< IfcResourceConstraintRelationship >::ptr PropertiesForConstraint() const; // INVERSE IfcResourceConstraintRelationship::RelatingConstraint
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcConstraint (IfcEntityInstanceData* e);
    IfcConstraint (std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4::IfcConstraintEnum::Value v3_ConstraintGrade, boost::optional< std::string > v4_ConstraintSource, ::Ifc4::IfcActorSelect* v5_CreatingActor, boost::optional< std::string > v6_CreationTime, boost::optional< std::string > v7_UserDefinedGrade);
    typedef IfcTemplatedEntityList< IfcConstraint > list;
};
class IFC_PARSE_API IfcCoordinateOperation : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc4::IfcCoordinateReferenceSystemSelect* SourceCRS() const;
    void setSourceCRS(::Ifc4::IfcCoordinateReferenceSystemSelect* v);
    ::Ifc4::IfcCoordinateReferenceSystem* TargetCRS() const;
    void setTargetCRS(::Ifc4::IfcCoordinateReferenceSystem* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCoordinateOperation (IfcEntityInstanceData* e);
    IfcCoordinateOperation (::Ifc4::IfcCoordinateReferenceSystemSelect* v1_SourceCRS, ::Ifc4::IfcCoordinateReferenceSystem* v2_TargetCRS);
    typedef IfcTemplatedEntityList< IfcCoordinateOperation > list;
};
class IFC_PARSE_API IfcCoordinateReferenceSystem : public IfcUtil::IfcBaseEntity {
public:
    std::string Name() const;
    void setName(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
    bool hasGeodeticDatum() const;
    std::string GeodeticDatum() const;
    void setGeodeticDatum(std::string v);
    bool hasVerticalDatum() const;
    std::string VerticalDatum() const;
    void setVerticalDatum(std::string v);
        IfcTemplatedEntityList< IfcCoordinateOperation >::ptr HasCoordinateOperation() const; // INVERSE IfcCoordinateOperation::SourceCRS
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCoordinateReferenceSystem (IfcEntityInstanceData* e);
    IfcCoordinateReferenceSystem (std::string v1_Name, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_GeodeticDatum, boost::optional< std::string > v4_VerticalDatum);
    typedef IfcTemplatedEntityList< IfcCoordinateReferenceSystem > list;
};
class IFC_PARSE_API IfcCostValue : public IfcAppliedValue {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCostValue (IfcEntityInstanceData* e);
    IfcCostValue (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4::IfcAppliedValueSelect* v3_AppliedValue, ::Ifc4::IfcMeasureWithUnit* v4_UnitBasis, boost::optional< std::string > v5_ApplicableDate, boost::optional< std::string > v6_FixedUntilDate, boost::optional< std::string > v7_Category, boost::optional< std::string > v8_Condition, boost::optional< ::Ifc4::IfcArithmeticOperatorEnum::Value > v9_ArithmeticOperator, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcAppliedValue >::ptr > v10_Components);
    typedef IfcTemplatedEntityList< IfcCostValue > list;
};
class IFC_PARSE_API IfcDerivedUnit : public IfcUtil::IfcBaseEntity {
public:
    IfcTemplatedEntityList< ::Ifc4::IfcDerivedUnitElement >::ptr Elements() const;
    void setElements(IfcTemplatedEntityList< ::Ifc4::IfcDerivedUnitElement >::ptr v);
    ::Ifc4::IfcDerivedUnitEnum::Value UnitType() const;
    void setUnitType(::Ifc4::IfcDerivedUnitEnum::Value v);
    bool hasUserDefinedType() const;
    std::string UserDefinedType() const;
    void setUserDefinedType(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDerivedUnit (IfcEntityInstanceData* e);
    IfcDerivedUnit (IfcTemplatedEntityList< ::Ifc4::IfcDerivedUnitElement >::ptr v1_Elements, ::Ifc4::IfcDerivedUnitEnum::Value v2_UnitType, boost::optional< std::string > v3_UserDefinedType);
    typedef IfcTemplatedEntityList< IfcDerivedUnit > list;
};
class IFC_PARSE_API IfcDerivedUnitElement : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc4::IfcNamedUnit* Unit() const;
    void setUnit(::Ifc4::IfcNamedUnit* v);
    int Exponent() const;
    void setExponent(int v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDerivedUnitElement (IfcEntityInstanceData* e);
    IfcDerivedUnitElement (::Ifc4::IfcNamedUnit* v1_Unit, int v2_Exponent);
    typedef IfcTemplatedEntityList< IfcDerivedUnitElement > list;
};
class IFC_PARSE_API IfcDimensionalExponents : public IfcUtil::IfcBaseEntity {
public:
    int LengthExponent() const;
    void setLengthExponent(int v);
    int MassExponent() const;
    void setMassExponent(int v);
    int TimeExponent() const;
    void setTimeExponent(int v);
    int ElectricCurrentExponent() const;
    void setElectricCurrentExponent(int v);
    int ThermodynamicTemperatureExponent() const;
    void setThermodynamicTemperatureExponent(int v);
    int AmountOfSubstanceExponent() const;
    void setAmountOfSubstanceExponent(int v);
    int LuminousIntensityExponent() const;
    void setLuminousIntensityExponent(int v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDimensionalExponents (IfcEntityInstanceData* e);
    IfcDimensionalExponents (int v1_LengthExponent, int v2_MassExponent, int v3_TimeExponent, int v4_ElectricCurrentExponent, int v5_ThermodynamicTemperatureExponent, int v6_AmountOfSubstanceExponent, int v7_LuminousIntensityExponent);
    typedef IfcTemplatedEntityList< IfcDimensionalExponents > list;
};
class IFC_PARSE_API IfcExternalInformation : public IfcUtil::IfcBaseEntity {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcExternalInformation (IfcEntityInstanceData* e);
    IfcExternalInformation ();
    typedef IfcTemplatedEntityList< IfcExternalInformation > list;
};
class IFC_PARSE_API IfcExternalReference : public IfcUtil::IfcBaseEntity {
public:
    bool hasLocation() const;
    std::string Location() const;
    void setLocation(std::string v);
    bool hasIdentification() const;
    std::string Identification() const;
    void setIdentification(std::string v);
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
        IfcTemplatedEntityList< IfcExternalReferenceRelationship >::ptr ExternalReferenceForResources() const; // INVERSE IfcExternalReferenceRelationship::RelatingReference
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcExternalReference (IfcEntityInstanceData* e);
    IfcExternalReference (boost::optional< std::string > v1_Location, boost::optional< std::string > v2_Identification, boost::optional< std::string > v3_Name);
    typedef IfcTemplatedEntityList< IfcExternalReference > list;
};
class IFC_PARSE_API IfcExternallyDefinedHatchStyle : public IfcExternalReference {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcExternallyDefinedHatchStyle (IfcEntityInstanceData* e);
    IfcExternallyDefinedHatchStyle (boost::optional< std::string > v1_Location, boost::optional< std::string > v2_Identification, boost::optional< std::string > v3_Name);
    typedef IfcTemplatedEntityList< IfcExternallyDefinedHatchStyle > list;
};
class IFC_PARSE_API IfcExternallyDefinedSurfaceStyle : public IfcExternalReference {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcExternallyDefinedSurfaceStyle (IfcEntityInstanceData* e);
    IfcExternallyDefinedSurfaceStyle (boost::optional< std::string > v1_Location, boost::optional< std::string > v2_Identification, boost::optional< std::string > v3_Name);
    typedef IfcTemplatedEntityList< IfcExternallyDefinedSurfaceStyle > list;
};
class IFC_PARSE_API IfcExternallyDefinedTextFont : public IfcExternalReference {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcExternallyDefinedTextFont (IfcEntityInstanceData* e);
    IfcExternallyDefinedTextFont (boost::optional< std::string > v1_Location, boost::optional< std::string > v2_Identification, boost::optional< std::string > v3_Name);
    typedef IfcTemplatedEntityList< IfcExternallyDefinedTextFont > list;
};
class IFC_PARSE_API IfcGridAxis : public IfcUtil::IfcBaseEntity {
public:
    bool hasAxisTag() const;
    std::string AxisTag() const;
    void setAxisTag(std::string v);
    ::Ifc4::IfcCurve* AxisCurve() const;
    void setAxisCurve(::Ifc4::IfcCurve* v);
    bool SameSense() const;
    void setSameSense(bool v);
        IfcTemplatedEntityList< IfcGrid >::ptr PartOfW() const; // INVERSE IfcGrid::WAxes
    IfcTemplatedEntityList< IfcGrid >::ptr PartOfV() const; // INVERSE IfcGrid::VAxes
    IfcTemplatedEntityList< IfcGrid >::ptr PartOfU() const; // INVERSE IfcGrid::UAxes
    IfcTemplatedEntityList< IfcVirtualGridIntersection >::ptr HasIntersections() const; // INVERSE IfcVirtualGridIntersection::IntersectingAxes
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcGridAxis (IfcEntityInstanceData* e);
    IfcGridAxis (boost::optional< std::string > v1_AxisTag, ::Ifc4::IfcCurve* v2_AxisCurve, bool v3_SameSense);
    typedef IfcTemplatedEntityList< IfcGridAxis > list;
};
class IFC_PARSE_API IfcIrregularTimeSeriesValue : public IfcUtil::IfcBaseEntity {
public:
    std::string TimeStamp() const;
    void setTimeStamp(std::string v);
    IfcEntityList::ptr ListValues() const;
    void setListValues(IfcEntityList::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcIrregularTimeSeriesValue (IfcEntityInstanceData* e);
    IfcIrregularTimeSeriesValue (std::string v1_TimeStamp, IfcEntityList::ptr v2_ListValues);
    typedef IfcTemplatedEntityList< IfcIrregularTimeSeriesValue > list;
};
class IFC_PARSE_API IfcLibraryInformation : public IfcExternalInformation {
public:
    std::string Name() const;
    void setName(std::string v);
    bool hasVersion() const;
    std::string Version() const;
    void setVersion(std::string v);
    bool hasPublisher() const;
    ::Ifc4::IfcActorSelect* Publisher() const;
    void setPublisher(::Ifc4::IfcActorSelect* v);
    bool hasVersionDate() const;
    std::string VersionDate() const;
    void setVersionDate(std::string v);
    bool hasLocation() const;
    std::string Location() const;
    void setLocation(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
        IfcTemplatedEntityList< IfcRelAssociatesLibrary >::ptr LibraryInfoForObjects() const; // INVERSE IfcRelAssociatesLibrary::RelatingLibrary
    IfcTemplatedEntityList< IfcLibraryReference >::ptr HasLibraryReferences() const; // INVERSE IfcLibraryReference::ReferencedLibrary
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLibraryInformation (IfcEntityInstanceData* e);
    IfcLibraryInformation (std::string v1_Name, boost::optional< std::string > v2_Version, ::Ifc4::IfcActorSelect* v3_Publisher, boost::optional< std::string > v4_VersionDate, boost::optional< std::string > v5_Location, boost::optional< std::string > v6_Description);
    typedef IfcTemplatedEntityList< IfcLibraryInformation > list;
};
class IFC_PARSE_API IfcLibraryReference : public IfcExternalReference {
public:
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
    bool hasLanguage() const;
    std::string Language() const;
    void setLanguage(std::string v);
    bool hasReferencedLibrary() const;
    ::Ifc4::IfcLibraryInformation* ReferencedLibrary() const;
    void setReferencedLibrary(::Ifc4::IfcLibraryInformation* v);
        IfcTemplatedEntityList< IfcRelAssociatesLibrary >::ptr LibraryRefForObjects() const; // INVERSE IfcRelAssociatesLibrary::RelatingLibrary
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLibraryReference (IfcEntityInstanceData* e);
    IfcLibraryReference (boost::optional< std::string > v1_Location, boost::optional< std::string > v2_Identification, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_Language, ::Ifc4::IfcLibraryInformation* v6_ReferencedLibrary);
    typedef IfcTemplatedEntityList< IfcLibraryReference > list;
};
class IFC_PARSE_API IfcLightDistributionData : public IfcUtil::IfcBaseEntity {
public:
    double MainPlaneAngle() const;
    void setMainPlaneAngle(double v);
    std::vector< double > /*[1:?]*/ SecondaryPlaneAngle() const;
    void setSecondaryPlaneAngle(std::vector< double > /*[1:?]*/ v);
    std::vector< double > /*[1:?]*/ LuminousIntensity() const;
    void setLuminousIntensity(std::vector< double > /*[1:?]*/ v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLightDistributionData (IfcEntityInstanceData* e);
    IfcLightDistributionData (double v1_MainPlaneAngle, std::vector< double > /*[1:?]*/ v2_SecondaryPlaneAngle, std::vector< double > /*[1:?]*/ v3_LuminousIntensity);
    typedef IfcTemplatedEntityList< IfcLightDistributionData > list;
};
class IFC_PARSE_API IfcLightIntensityDistribution : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc4::IfcLightDistributionCurveEnum::Value LightDistributionCurve() const;
    void setLightDistributionCurve(::Ifc4::IfcLightDistributionCurveEnum::Value v);
    IfcTemplatedEntityList< ::Ifc4::IfcLightDistributionData >::ptr DistributionData() const;
    void setDistributionData(IfcTemplatedEntityList< ::Ifc4::IfcLightDistributionData >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLightIntensityDistribution (IfcEntityInstanceData* e);
    IfcLightIntensityDistribution (::Ifc4::IfcLightDistributionCurveEnum::Value v1_LightDistributionCurve, IfcTemplatedEntityList< ::Ifc4::IfcLightDistributionData >::ptr v2_DistributionData);
    typedef IfcTemplatedEntityList< IfcLightIntensityDistribution > list;
};
class IFC_PARSE_API IfcMapConversion : public IfcCoordinateOperation {
public:
    double Eastings() const;
    void setEastings(double v);
    double Northings() const;
    void setNorthings(double v);
    double OrthogonalHeight() const;
    void setOrthogonalHeight(double v);
    bool hasXAxisAbscissa() const;
    double XAxisAbscissa() const;
    void setXAxisAbscissa(double v);
    bool hasXAxisOrdinate() const;
    double XAxisOrdinate() const;
    void setXAxisOrdinate(double v);
    bool hasScale() const;
    double Scale() const;
    void setScale(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMapConversion (IfcEntityInstanceData* e);
    IfcMapConversion (::Ifc4::IfcCoordinateReferenceSystemSelect* v1_SourceCRS, ::Ifc4::IfcCoordinateReferenceSystem* v2_TargetCRS, double v3_Eastings, double v4_Northings, double v5_OrthogonalHeight, boost::optional< double > v6_XAxisAbscissa, boost::optional< double > v7_XAxisOrdinate, boost::optional< double > v8_Scale);
    typedef IfcTemplatedEntityList< IfcMapConversion > list;
};
class IFC_PARSE_API IfcMaterialClassificationRelationship : public IfcUtil::IfcBaseEntity {
public:
    IfcEntityList::ptr MaterialClassifications() const;
    void setMaterialClassifications(IfcEntityList::ptr v);
    ::Ifc4::IfcMaterial* ClassifiedMaterial() const;
    void setClassifiedMaterial(::Ifc4::IfcMaterial* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMaterialClassificationRelationship (IfcEntityInstanceData* e);
    IfcMaterialClassificationRelationship (IfcEntityList::ptr v1_MaterialClassifications, ::Ifc4::IfcMaterial* v2_ClassifiedMaterial);
    typedef IfcTemplatedEntityList< IfcMaterialClassificationRelationship > list;
};
class IFC_PARSE_API IfcMaterialDefinition : public IfcUtil::IfcBaseEntity {
public:
        IfcTemplatedEntityList< IfcRelAssociatesMaterial >::ptr AssociatedTo() const; // INVERSE IfcRelAssociatesMaterial::RelatingMaterial
    IfcTemplatedEntityList< IfcExternalReferenceRelationship >::ptr HasExternalReferences() const; // INVERSE IfcExternalReferenceRelationship::RelatedResourceObjects
    IfcTemplatedEntityList< IfcMaterialProperties >::ptr HasProperties() const; // INVERSE IfcMaterialProperties::Material
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMaterialDefinition (IfcEntityInstanceData* e);
    IfcMaterialDefinition ();
    typedef IfcTemplatedEntityList< IfcMaterialDefinition > list;
};
class IFC_PARSE_API IfcMaterialLayer : public IfcMaterialDefinition {
public:
    bool hasMaterial() const;
    ::Ifc4::IfcMaterial* Material() const;
    void setMaterial(::Ifc4::IfcMaterial* v);
    double LayerThickness() const;
    void setLayerThickness(double v);
    bool hasIsVentilated() const;
    bool IsVentilated() const;
    void setIsVentilated(bool v);
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
    bool hasCategory() const;
    std::string Category() const;
    void setCategory(std::string v);
    bool hasPriority() const;
    int Priority() const;
    void setPriority(int v);
        IfcTemplatedEntityList< IfcMaterialLayerSet >::ptr ToMaterialLayerSet() const; // INVERSE IfcMaterialLayerSet::MaterialLayers
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMaterialLayer (IfcEntityInstanceData* e);
    IfcMaterialLayer (::Ifc4::IfcMaterial* v1_Material, double v2_LayerThickness, boost::optional< bool > v3_IsVentilated, boost::optional< std::string > v4_Name, boost::optional< std::string > v5_Description, boost::optional< std::string > v6_Category, boost::optional< int > v7_Priority);
    typedef IfcTemplatedEntityList< IfcMaterialLayer > list;
};
class IFC_PARSE_API IfcMaterialLayerSet : public IfcMaterialDefinition {
public:
    IfcTemplatedEntityList< ::Ifc4::IfcMaterialLayer >::ptr MaterialLayers() const;
    void setMaterialLayers(IfcTemplatedEntityList< ::Ifc4::IfcMaterialLayer >::ptr v);
    bool hasLayerSetName() const;
    std::string LayerSetName() const;
    void setLayerSetName(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMaterialLayerSet (IfcEntityInstanceData* e);
    IfcMaterialLayerSet (IfcTemplatedEntityList< ::Ifc4::IfcMaterialLayer >::ptr v1_MaterialLayers, boost::optional< std::string > v2_LayerSetName, boost::optional< std::string > v3_Description);
    typedef IfcTemplatedEntityList< IfcMaterialLayerSet > list;
};
class IFC_PARSE_API IfcMaterialLayerWithOffsets : public IfcMaterialLayer {
public:
    ::Ifc4::IfcLayerSetDirectionEnum::Value OffsetDirection() const;
    void setOffsetDirection(::Ifc4::IfcLayerSetDirectionEnum::Value v);
    std::vector< double > /*[1:2]*/ OffsetValues() const;
    void setOffsetValues(std::vector< double > /*[1:2]*/ v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMaterialLayerWithOffsets (IfcEntityInstanceData* e);
    IfcMaterialLayerWithOffsets (::Ifc4::IfcMaterial* v1_Material, double v2_LayerThickness, boost::optional< bool > v3_IsVentilated, boost::optional< std::string > v4_Name, boost::optional< std::string > v5_Description, boost::optional< std::string > v6_Category, boost::optional< int > v7_Priority, ::Ifc4::IfcLayerSetDirectionEnum::Value v8_OffsetDirection, std::vector< double > /*[1:2]*/ v9_OffsetValues);
    typedef IfcTemplatedEntityList< IfcMaterialLayerWithOffsets > list;
};
class IFC_PARSE_API IfcMaterialList : public IfcUtil::IfcBaseEntity {
public:
    IfcTemplatedEntityList< ::Ifc4::IfcMaterial >::ptr Materials() const;
    void setMaterials(IfcTemplatedEntityList< ::Ifc4::IfcMaterial >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMaterialList (IfcEntityInstanceData* e);
    IfcMaterialList (IfcTemplatedEntityList< ::Ifc4::IfcMaterial >::ptr v1_Materials);
    typedef IfcTemplatedEntityList< IfcMaterialList > list;
};
class IFC_PARSE_API IfcMaterialProfile : public IfcMaterialDefinition {
public:
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
    bool hasMaterial() const;
    ::Ifc4::IfcMaterial* Material() const;
    void setMaterial(::Ifc4::IfcMaterial* v);
    ::Ifc4::IfcProfileDef* Profile() const;
    void setProfile(::Ifc4::IfcProfileDef* v);
    bool hasPriority() const;
    int Priority() const;
    void setPriority(int v);
    bool hasCategory() const;
    std::string Category() const;
    void setCategory(std::string v);
        IfcTemplatedEntityList< IfcMaterialProfileSet >::ptr ToMaterialProfileSet() const; // INVERSE IfcMaterialProfileSet::MaterialProfiles
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMaterialProfile (IfcEntityInstanceData* e);
    IfcMaterialProfile (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4::IfcMaterial* v3_Material, ::Ifc4::IfcProfileDef* v4_Profile, boost::optional< int > v5_Priority, boost::optional< std::string > v6_Category);
    typedef IfcTemplatedEntityList< IfcMaterialProfile > list;
};
class IFC_PARSE_API IfcMaterialProfileSet : public IfcMaterialDefinition {
public:
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
    IfcTemplatedEntityList< ::Ifc4::IfcMaterialProfile >::ptr MaterialProfiles() const;
    void setMaterialProfiles(IfcTemplatedEntityList< ::Ifc4::IfcMaterialProfile >::ptr v);
    bool hasCompositeProfile() const;
    ::Ifc4::IfcCompositeProfileDef* CompositeProfile() const;
    void setCompositeProfile(::Ifc4::IfcCompositeProfileDef* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMaterialProfileSet (IfcEntityInstanceData* e);
    IfcMaterialProfileSet (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, IfcTemplatedEntityList< ::Ifc4::IfcMaterialProfile >::ptr v3_MaterialProfiles, ::Ifc4::IfcCompositeProfileDef* v4_CompositeProfile);
    typedef IfcTemplatedEntityList< IfcMaterialProfileSet > list;
};
class IFC_PARSE_API IfcMaterialProfileWithOffsets : public IfcMaterialProfile {
public:
    std::vector< double > /*[1:2]*/ OffsetValues() const;
    void setOffsetValues(std::vector< double > /*[1:2]*/ v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMaterialProfileWithOffsets (IfcEntityInstanceData* e);
    IfcMaterialProfileWithOffsets (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4::IfcMaterial* v3_Material, ::Ifc4::IfcProfileDef* v4_Profile, boost::optional< int > v5_Priority, boost::optional< std::string > v6_Category, std::vector< double > /*[1:2]*/ v7_OffsetValues);
    typedef IfcTemplatedEntityList< IfcMaterialProfileWithOffsets > list;
};
class IFC_PARSE_API IfcMaterialUsageDefinition : public IfcUtil::IfcBaseEntity {
public:
        IfcTemplatedEntityList< IfcRelAssociatesMaterial >::ptr AssociatedTo() const; // INVERSE IfcRelAssociatesMaterial::RelatingMaterial
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMaterialUsageDefinition (IfcEntityInstanceData* e);
    IfcMaterialUsageDefinition ();
    typedef IfcTemplatedEntityList< IfcMaterialUsageDefinition > list;
};
class IFC_PARSE_API IfcMeasureWithUnit : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc4::IfcValue* ValueComponent() const;
    void setValueComponent(::Ifc4::IfcValue* v);
    ::Ifc4::IfcUnit* UnitComponent() const;
    void setUnitComponent(::Ifc4::IfcUnit* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMeasureWithUnit (IfcEntityInstanceData* e);
    IfcMeasureWithUnit (::Ifc4::IfcValue* v1_ValueComponent, ::Ifc4::IfcUnit* v2_UnitComponent);
    typedef IfcTemplatedEntityList< IfcMeasureWithUnit > list;
};
class IFC_PARSE_API IfcMetric : public IfcConstraint {
public:
    ::Ifc4::IfcBenchmarkEnum::Value Benchmark() const;
    void setBenchmark(::Ifc4::IfcBenchmarkEnum::Value v);
    bool hasValueSource() const;
    std::string ValueSource() const;
    void setValueSource(std::string v);
    bool hasDataValue() const;
    ::Ifc4::IfcMetricValueSelect* DataValue() const;
    void setDataValue(::Ifc4::IfcMetricValueSelect* v);
    bool hasReferencePath() const;
    ::Ifc4::IfcReference* ReferencePath() const;
    void setReferencePath(::Ifc4::IfcReference* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMetric (IfcEntityInstanceData* e);
    IfcMetric (std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4::IfcConstraintEnum::Value v3_ConstraintGrade, boost::optional< std::string > v4_ConstraintSource, ::Ifc4::IfcActorSelect* v5_CreatingActor, boost::optional< std::string > v6_CreationTime, boost::optional< std::string > v7_UserDefinedGrade, ::Ifc4::IfcBenchmarkEnum::Value v8_Benchmark, boost::optional< std::string > v9_ValueSource, ::Ifc4::IfcMetricValueSelect* v10_DataValue, ::Ifc4::IfcReference* v11_ReferencePath);
    typedef IfcTemplatedEntityList< IfcMetric > list;
};
class IFC_PARSE_API IfcMonetaryUnit : public IfcUtil::IfcBaseEntity {
public:
    std::string Currency() const;
    void setCurrency(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMonetaryUnit (IfcEntityInstanceData* e);
    IfcMonetaryUnit (std::string v1_Currency);
    typedef IfcTemplatedEntityList< IfcMonetaryUnit > list;
};
class IFC_PARSE_API IfcNamedUnit : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc4::IfcDimensionalExponents* Dimensions() const;
    void setDimensions(::Ifc4::IfcDimensionalExponents* v);
    ::Ifc4::IfcUnitEnum::Value UnitType() const;
    void setUnitType(::Ifc4::IfcUnitEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcNamedUnit (IfcEntityInstanceData* e);
    IfcNamedUnit (::Ifc4::IfcDimensionalExponents* v1_Dimensions, ::Ifc4::IfcUnitEnum::Value v2_UnitType);
    typedef IfcTemplatedEntityList< IfcNamedUnit > list;
};
class IFC_PARSE_API IfcObjectPlacement : public IfcUtil::IfcBaseEntity {
public:
        IfcTemplatedEntityList< IfcProduct >::ptr PlacesObject() const; // INVERSE IfcProduct::ObjectPlacement
    IfcTemplatedEntityList< IfcLocalPlacement >::ptr ReferencedByPlacements() const; // INVERSE IfcLocalPlacement::PlacementRelTo
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcObjectPlacement (IfcEntityInstanceData* e);
    IfcObjectPlacement ();
    typedef IfcTemplatedEntityList< IfcObjectPlacement > list;
};
class IFC_PARSE_API IfcObjective : public IfcConstraint {
public:
    bool hasBenchmarkValues() const;
    IfcTemplatedEntityList< ::Ifc4::IfcConstraint >::ptr BenchmarkValues() const;
    void setBenchmarkValues(IfcTemplatedEntityList< ::Ifc4::IfcConstraint >::ptr v);
    bool hasLogicalAggregator() const;
    ::Ifc4::IfcLogicalOperatorEnum::Value LogicalAggregator() const;
    void setLogicalAggregator(::Ifc4::IfcLogicalOperatorEnum::Value v);
    ::Ifc4::IfcObjectiveEnum::Value ObjectiveQualifier() const;
    void setObjectiveQualifier(::Ifc4::IfcObjectiveEnum::Value v);
    bool hasUserDefinedQualifier() const;
    std::string UserDefinedQualifier() const;
    void setUserDefinedQualifier(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcObjective (IfcEntityInstanceData* e);
    IfcObjective (std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4::IfcConstraintEnum::Value v3_ConstraintGrade, boost::optional< std::string > v4_ConstraintSource, ::Ifc4::IfcActorSelect* v5_CreatingActor, boost::optional< std::string > v6_CreationTime, boost::optional< std::string > v7_UserDefinedGrade, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcConstraint >::ptr > v8_BenchmarkValues, boost::optional< ::Ifc4::IfcLogicalOperatorEnum::Value > v9_LogicalAggregator, ::Ifc4::IfcObjectiveEnum::Value v10_ObjectiveQualifier, boost::optional< std::string > v11_UserDefinedQualifier);
    typedef IfcTemplatedEntityList< IfcObjective > list;
};
class IFC_PARSE_API IfcOrganization : public IfcUtil::IfcBaseEntity {
public:
    bool hasIdentification() const;
    std::string Identification() const;
    void setIdentification(std::string v);
    std::string Name() const;
    void setName(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
    bool hasRoles() const;
    IfcTemplatedEntityList< ::Ifc4::IfcActorRole >::ptr Roles() const;
    void setRoles(IfcTemplatedEntityList< ::Ifc4::IfcActorRole >::ptr v);
    bool hasAddresses() const;
    IfcTemplatedEntityList< ::Ifc4::IfcAddress >::ptr Addresses() const;
    void setAddresses(IfcTemplatedEntityList< ::Ifc4::IfcAddress >::ptr v);
        IfcTemplatedEntityList< IfcOrganizationRelationship >::ptr IsRelatedBy() const; // INVERSE IfcOrganizationRelationship::RelatedOrganizations
    IfcTemplatedEntityList< IfcOrganizationRelationship >::ptr Relates() const; // INVERSE IfcOrganizationRelationship::RelatingOrganization
    IfcTemplatedEntityList< IfcPersonAndOrganization >::ptr Engages() const; // INVERSE IfcPersonAndOrganization::TheOrganization
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcOrganization (IfcEntityInstanceData* e);
    IfcOrganization (boost::optional< std::string > v1_Identification, std::string v2_Name, boost::optional< std::string > v3_Description, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcActorRole >::ptr > v4_Roles, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcAddress >::ptr > v5_Addresses);
    typedef IfcTemplatedEntityList< IfcOrganization > list;
};
class IFC_PARSE_API IfcOwnerHistory : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc4::IfcPersonAndOrganization* OwningUser() const;
    void setOwningUser(::Ifc4::IfcPersonAndOrganization* v);
    ::Ifc4::IfcApplication* OwningApplication() const;
    void setOwningApplication(::Ifc4::IfcApplication* v);
    bool hasState() const;
    ::Ifc4::IfcStateEnum::Value State() const;
    void setState(::Ifc4::IfcStateEnum::Value v);
    bool hasChangeAction() const;
    ::Ifc4::IfcChangeActionEnum::Value ChangeAction() const;
    void setChangeAction(::Ifc4::IfcChangeActionEnum::Value v);
    bool hasLastModifiedDate() const;
    int LastModifiedDate() const;
    void setLastModifiedDate(int v);
    bool hasLastModifyingUser() const;
    ::Ifc4::IfcPersonAndOrganization* LastModifyingUser() const;
    void setLastModifyingUser(::Ifc4::IfcPersonAndOrganization* v);
    bool hasLastModifyingApplication() const;
    ::Ifc4::IfcApplication* LastModifyingApplication() const;
    void setLastModifyingApplication(::Ifc4::IfcApplication* v);
    int CreationDate() const;
    void setCreationDate(int v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcOwnerHistory (IfcEntityInstanceData* e);
    IfcOwnerHistory (::Ifc4::IfcPersonAndOrganization* v1_OwningUser, ::Ifc4::IfcApplication* v2_OwningApplication, boost::optional< ::Ifc4::IfcStateEnum::Value > v3_State, boost::optional< ::Ifc4::IfcChangeActionEnum::Value > v4_ChangeAction, boost::optional< int > v5_LastModifiedDate, ::Ifc4::IfcPersonAndOrganization* v6_LastModifyingUser, ::Ifc4::IfcApplication* v7_LastModifyingApplication, int v8_CreationDate);
    typedef IfcTemplatedEntityList< IfcOwnerHistory > list;
};
class IFC_PARSE_API IfcPerson : public IfcUtil::IfcBaseEntity {
public:
    bool hasIdentification() const;
    std::string Identification() const;
    void setIdentification(std::string v);
    bool hasFamilyName() const;
    std::string FamilyName() const;
    void setFamilyName(std::string v);
    bool hasGivenName() const;
    std::string GivenName() const;
    void setGivenName(std::string v);
    bool hasMiddleNames() const;
    std::vector< std::string > /*[1:?]*/ MiddleNames() const;
    void setMiddleNames(std::vector< std::string > /*[1:?]*/ v);
    bool hasPrefixTitles() const;
    std::vector< std::string > /*[1:?]*/ PrefixTitles() const;
    void setPrefixTitles(std::vector< std::string > /*[1:?]*/ v);
    bool hasSuffixTitles() const;
    std::vector< std::string > /*[1:?]*/ SuffixTitles() const;
    void setSuffixTitles(std::vector< std::string > /*[1:?]*/ v);
    bool hasRoles() const;
    IfcTemplatedEntityList< ::Ifc4::IfcActorRole >::ptr Roles() const;
    void setRoles(IfcTemplatedEntityList< ::Ifc4::IfcActorRole >::ptr v);
    bool hasAddresses() const;
    IfcTemplatedEntityList< ::Ifc4::IfcAddress >::ptr Addresses() const;
    void setAddresses(IfcTemplatedEntityList< ::Ifc4::IfcAddress >::ptr v);
        IfcTemplatedEntityList< IfcPersonAndOrganization >::ptr EngagedIn() const; // INVERSE IfcPersonAndOrganization::ThePerson
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPerson (IfcEntityInstanceData* e);
    IfcPerson (boost::optional< std::string > v1_Identification, boost::optional< std::string > v2_FamilyName, boost::optional< std::string > v3_GivenName, boost::optional< std::vector< std::string > /*[1:?]*/ > v4_MiddleNames, boost::optional< std::vector< std::string > /*[1:?]*/ > v5_PrefixTitles, boost::optional< std::vector< std::string > /*[1:?]*/ > v6_SuffixTitles, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcActorRole >::ptr > v7_Roles, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcAddress >::ptr > v8_Addresses);
    typedef IfcTemplatedEntityList< IfcPerson > list;
};
class IFC_PARSE_API IfcPersonAndOrganization : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc4::IfcPerson* ThePerson() const;
    void setThePerson(::Ifc4::IfcPerson* v);
    ::Ifc4::IfcOrganization* TheOrganization() const;
    void setTheOrganization(::Ifc4::IfcOrganization* v);
    bool hasRoles() const;
    IfcTemplatedEntityList< ::Ifc4::IfcActorRole >::ptr Roles() const;
    void setRoles(IfcTemplatedEntityList< ::Ifc4::IfcActorRole >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPersonAndOrganization (IfcEntityInstanceData* e);
    IfcPersonAndOrganization (::Ifc4::IfcPerson* v1_ThePerson, ::Ifc4::IfcOrganization* v2_TheOrganization, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcActorRole >::ptr > v3_Roles);
    typedef IfcTemplatedEntityList< IfcPersonAndOrganization > list;
};
class IFC_PARSE_API IfcPhysicalQuantity : public IfcUtil::IfcBaseEntity {
public:
    std::string Name() const;
    void setName(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
        IfcTemplatedEntityList< IfcExternalReferenceRelationship >::ptr HasExternalReferences() const; // INVERSE IfcExternalReferenceRelationship::RelatedResourceObjects
    IfcTemplatedEntityList< IfcPhysicalComplexQuantity >::ptr PartOfComplex() const; // INVERSE IfcPhysicalComplexQuantity::HasQuantities
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPhysicalQuantity (IfcEntityInstanceData* e);
    IfcPhysicalQuantity (std::string v1_Name, boost::optional< std::string > v2_Description);
    typedef IfcTemplatedEntityList< IfcPhysicalQuantity > list;
};
class IFC_PARSE_API IfcPhysicalSimpleQuantity : public IfcPhysicalQuantity {
public:
    bool hasUnit() const;
    ::Ifc4::IfcNamedUnit* Unit() const;
    void setUnit(::Ifc4::IfcNamedUnit* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPhysicalSimpleQuantity (IfcEntityInstanceData* e);
    IfcPhysicalSimpleQuantity (std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4::IfcNamedUnit* v3_Unit);
    typedef IfcTemplatedEntityList< IfcPhysicalSimpleQuantity > list;
};
class IFC_PARSE_API IfcPostalAddress : public IfcAddress {
public:
    bool hasInternalLocation() const;
    std::string InternalLocation() const;
    void setInternalLocation(std::string v);
    bool hasAddressLines() const;
    std::vector< std::string > /*[1:?]*/ AddressLines() const;
    void setAddressLines(std::vector< std::string > /*[1:?]*/ v);
    bool hasPostalBox() const;
    std::string PostalBox() const;
    void setPostalBox(std::string v);
    bool hasTown() const;
    std::string Town() const;
    void setTown(std::string v);
    bool hasRegion() const;
    std::string Region() const;
    void setRegion(std::string v);
    bool hasPostalCode() const;
    std::string PostalCode() const;
    void setPostalCode(std::string v);
    bool hasCountry() const;
    std::string Country() const;
    void setCountry(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPostalAddress (IfcEntityInstanceData* e);
    IfcPostalAddress (boost::optional< ::Ifc4::IfcAddressTypeEnum::Value > v1_Purpose, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_UserDefinedPurpose, boost::optional< std::string > v4_InternalLocation, boost::optional< std::vector< std::string > /*[1:?]*/ > v5_AddressLines, boost::optional< std::string > v6_PostalBox, boost::optional< std::string > v7_Town, boost::optional< std::string > v8_Region, boost::optional< std::string > v9_PostalCode, boost::optional< std::string > v10_Country);
    typedef IfcTemplatedEntityList< IfcPostalAddress > list;
};

class IFC_PARSE_API IfcPresentationItem : public IfcUtil::IfcBaseEntity {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPresentationItem (IfcEntityInstanceData* e);
    IfcPresentationItem ();
    typedef IfcTemplatedEntityList< IfcPresentationItem > list;
};
class IFC_PARSE_API IfcPresentationLayerAssignment : public IfcUtil::IfcBaseEntity {
public:
    std::string Name() const;
    void setName(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
    IfcEntityList::ptr AssignedItems() const;
    void setAssignedItems(IfcEntityList::ptr v);
    bool hasIdentifier() const;
    std::string Identifier() const;
    void setIdentifier(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPresentationLayerAssignment (IfcEntityInstanceData* e);
    IfcPresentationLayerAssignment (std::string v1_Name, boost::optional< std::string > v2_Description, IfcEntityList::ptr v3_AssignedItems, boost::optional< std::string > v4_Identifier);
    typedef IfcTemplatedEntityList< IfcPresentationLayerAssignment > list;
};
class IFC_PARSE_API IfcPresentationLayerWithStyle : public IfcPresentationLayerAssignment {
public:
    bool LayerOn() const;
    void setLayerOn(bool v);
    bool LayerFrozen() const;
    void setLayerFrozen(bool v);
    bool LayerBlocked() const;
    void setLayerBlocked(bool v);
    IfcTemplatedEntityList< ::Ifc4::IfcPresentationStyle >::ptr LayerStyles() const;
    void setLayerStyles(IfcTemplatedEntityList< ::Ifc4::IfcPresentationStyle >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPresentationLayerWithStyle (IfcEntityInstanceData* e);
    IfcPresentationLayerWithStyle (std::string v1_Name, boost::optional< std::string > v2_Description, IfcEntityList::ptr v3_AssignedItems, boost::optional< std::string > v4_Identifier, bool v5_LayerOn, bool v6_LayerFrozen, bool v7_LayerBlocked, IfcTemplatedEntityList< ::Ifc4::IfcPresentationStyle >::ptr v8_LayerStyles);
    typedef IfcTemplatedEntityList< IfcPresentationLayerWithStyle > list;
};
class IFC_PARSE_API IfcPresentationStyle : public IfcUtil::IfcBaseEntity {
public:
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPresentationStyle (IfcEntityInstanceData* e);
    IfcPresentationStyle (boost::optional< std::string > v1_Name);
    typedef IfcTemplatedEntityList< IfcPresentationStyle > list;
};
class IFC_PARSE_API IfcPresentationStyleAssignment : public IfcUtil::IfcBaseEntity {
public:
    IfcEntityList::ptr Styles() const;
    void setStyles(IfcEntityList::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPresentationStyleAssignment (IfcEntityInstanceData* e);
    IfcPresentationStyleAssignment (IfcEntityList::ptr v1_Styles);
    typedef IfcTemplatedEntityList< IfcPresentationStyleAssignment > list;
};
class IFC_PARSE_API IfcProductRepresentation : public IfcUtil::IfcBaseEntity {
public:
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
    IfcTemplatedEntityList< ::Ifc4::IfcRepresentation >::ptr Representations() const;
    void setRepresentations(IfcTemplatedEntityList< ::Ifc4::IfcRepresentation >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcProductRepresentation (IfcEntityInstanceData* e);
    IfcProductRepresentation (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, IfcTemplatedEntityList< ::Ifc4::IfcRepresentation >::ptr v3_Representations);
    typedef IfcTemplatedEntityList< IfcProductRepresentation > list;
};
class IFC_PARSE_API IfcProfileDef : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc4::IfcProfileTypeEnum::Value ProfileType() const;
    void setProfileType(::Ifc4::IfcProfileTypeEnum::Value v);
    bool hasProfileName() const;
    std::string ProfileName() const;
    void setProfileName(std::string v);
        IfcTemplatedEntityList< IfcExternalReferenceRelationship >::ptr HasExternalReference() const; // INVERSE IfcExternalReferenceRelationship::RelatedResourceObjects
    IfcTemplatedEntityList< IfcProfileProperties >::ptr HasProperties() const; // INVERSE IfcProfileProperties::ProfileDefinition
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcProfileDef (IfcEntityInstanceData* e);
    IfcProfileDef (::Ifc4::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName);
    typedef IfcTemplatedEntityList< IfcProfileDef > list;
};
class IFC_PARSE_API IfcProjectedCRS : public IfcCoordinateReferenceSystem {
public:
    bool hasMapProjection() const;
    std::string MapProjection() const;
    void setMapProjection(std::string v);
    bool hasMapZone() const;
    std::string MapZone() const;
    void setMapZone(std::string v);
    bool hasMapUnit() const;
    ::Ifc4::IfcNamedUnit* MapUnit() const;
    void setMapUnit(::Ifc4::IfcNamedUnit* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcProjectedCRS (IfcEntityInstanceData* e);
    IfcProjectedCRS (std::string v1_Name, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_GeodeticDatum, boost::optional< std::string > v4_VerticalDatum, boost::optional< std::string > v5_MapProjection, boost::optional< std::string > v6_MapZone, ::Ifc4::IfcNamedUnit* v7_MapUnit);
    typedef IfcTemplatedEntityList< IfcProjectedCRS > list;
};

class IFC_PARSE_API IfcPropertyAbstraction : public IfcUtil::IfcBaseEntity {
public:
        IfcTemplatedEntityList< IfcExternalReferenceRelationship >::ptr HasExternalReferences() const; // INVERSE IfcExternalReferenceRelationship::RelatedResourceObjects
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPropertyAbstraction (IfcEntityInstanceData* e);
    IfcPropertyAbstraction ();
    typedef IfcTemplatedEntityList< IfcPropertyAbstraction > list;
};
class IFC_PARSE_API IfcPropertyEnumeration : public IfcPropertyAbstraction {
public:
    std::string Name() const;
    void setName(std::string v);
    IfcEntityList::ptr EnumerationValues() const;
    void setEnumerationValues(IfcEntityList::ptr v);
    bool hasUnit() const;
    ::Ifc4::IfcUnit* Unit() const;
    void setUnit(::Ifc4::IfcUnit* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPropertyEnumeration (IfcEntityInstanceData* e);
    IfcPropertyEnumeration (std::string v1_Name, IfcEntityList::ptr v2_EnumerationValues, ::Ifc4::IfcUnit* v3_Unit);
    typedef IfcTemplatedEntityList< IfcPropertyEnumeration > list;
};
class IFC_PARSE_API IfcQuantityArea : public IfcPhysicalSimpleQuantity {
public:
    double AreaValue() const;
    void setAreaValue(double v);
    bool hasFormula() const;
    std::string Formula() const;
    void setFormula(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcQuantityArea (IfcEntityInstanceData* e);
    IfcQuantityArea (std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4::IfcNamedUnit* v3_Unit, double v4_AreaValue, boost::optional< std::string > v5_Formula);
    typedef IfcTemplatedEntityList< IfcQuantityArea > list;
};
class IFC_PARSE_API IfcQuantityCount : public IfcPhysicalSimpleQuantity {
public:
    double CountValue() const;
    void setCountValue(double v);
    bool hasFormula() const;
    std::string Formula() const;
    void setFormula(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcQuantityCount (IfcEntityInstanceData* e);
    IfcQuantityCount (std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4::IfcNamedUnit* v3_Unit, double v4_CountValue, boost::optional< std::string > v5_Formula);
    typedef IfcTemplatedEntityList< IfcQuantityCount > list;
};
class IFC_PARSE_API IfcQuantityLength : public IfcPhysicalSimpleQuantity {
public:
    double LengthValue() const;
    void setLengthValue(double v);
    bool hasFormula() const;
    std::string Formula() const;
    void setFormula(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcQuantityLength (IfcEntityInstanceData* e);
    IfcQuantityLength (std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4::IfcNamedUnit* v3_Unit, double v4_LengthValue, boost::optional< std::string > v5_Formula);
    typedef IfcTemplatedEntityList< IfcQuantityLength > list;
};
class IFC_PARSE_API IfcQuantityTime : public IfcPhysicalSimpleQuantity {
public:
    double TimeValue() const;
    void setTimeValue(double v);
    bool hasFormula() const;
    std::string Formula() const;
    void setFormula(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcQuantityTime (IfcEntityInstanceData* e);
    IfcQuantityTime (std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4::IfcNamedUnit* v3_Unit, double v4_TimeValue, boost::optional< std::string > v5_Formula);
    typedef IfcTemplatedEntityList< IfcQuantityTime > list;
};
class IFC_PARSE_API IfcQuantityVolume : public IfcPhysicalSimpleQuantity {
public:
    double VolumeValue() const;
    void setVolumeValue(double v);
    bool hasFormula() const;
    std::string Formula() const;
    void setFormula(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcQuantityVolume (IfcEntityInstanceData* e);
    IfcQuantityVolume (std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4::IfcNamedUnit* v3_Unit, double v4_VolumeValue, boost::optional< std::string > v5_Formula);
    typedef IfcTemplatedEntityList< IfcQuantityVolume > list;
};
class IFC_PARSE_API IfcQuantityWeight : public IfcPhysicalSimpleQuantity {
public:
    double WeightValue() const;
    void setWeightValue(double v);
    bool hasFormula() const;
    std::string Formula() const;
    void setFormula(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcQuantityWeight (IfcEntityInstanceData* e);
    IfcQuantityWeight (std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4::IfcNamedUnit* v3_Unit, double v4_WeightValue, boost::optional< std::string > v5_Formula);
    typedef IfcTemplatedEntityList< IfcQuantityWeight > list;
};
class IFC_PARSE_API IfcRecurrencePattern : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc4::IfcRecurrenceTypeEnum::Value RecurrenceType() const;
    void setRecurrenceType(::Ifc4::IfcRecurrenceTypeEnum::Value v);
    bool hasDayComponent() const;
    std::vector< int > /*[1:?]*/ DayComponent() const;
    void setDayComponent(std::vector< int > /*[1:?]*/ v);
    bool hasWeekdayComponent() const;
    std::vector< int > /*[1:?]*/ WeekdayComponent() const;
    void setWeekdayComponent(std::vector< int > /*[1:?]*/ v);
    bool hasMonthComponent() const;
    std::vector< int > /*[1:?]*/ MonthComponent() const;
    void setMonthComponent(std::vector< int > /*[1:?]*/ v);
    bool hasPosition() const;
    int Position() const;
    void setPosition(int v);
    bool hasInterval() const;
    int Interval() const;
    void setInterval(int v);
    bool hasOccurrences() const;
    int Occurrences() const;
    void setOccurrences(int v);
    bool hasTimePeriods() const;
    IfcTemplatedEntityList< ::Ifc4::IfcTimePeriod >::ptr TimePeriods() const;
    void setTimePeriods(IfcTemplatedEntityList< ::Ifc4::IfcTimePeriod >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRecurrencePattern (IfcEntityInstanceData* e);
    IfcRecurrencePattern (::Ifc4::IfcRecurrenceTypeEnum::Value v1_RecurrenceType, boost::optional< std::vector< int > /*[1:?]*/ > v2_DayComponent, boost::optional< std::vector< int > /*[1:?]*/ > v3_WeekdayComponent, boost::optional< std::vector< int > /*[1:?]*/ > v4_MonthComponent, boost::optional< int > v5_Position, boost::optional< int > v6_Interval, boost::optional< int > v7_Occurrences, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcTimePeriod >::ptr > v8_TimePeriods);
    typedef IfcTemplatedEntityList< IfcRecurrencePattern > list;
};

class IFC_PARSE_API IfcReference : public IfcUtil::IfcBaseEntity {
public:
    bool hasTypeIdentifier() const;
    std::string TypeIdentifier() const;
    void setTypeIdentifier(std::string v);
    bool hasAttributeIdentifier() const;
    std::string AttributeIdentifier() const;
    void setAttributeIdentifier(std::string v);
    bool hasInstanceName() const;
    std::string InstanceName() const;
    void setInstanceName(std::string v);
    bool hasListPositions() const;
    std::vector< int > /*[1:?]*/ ListPositions() const;
    void setListPositions(std::vector< int > /*[1:?]*/ v);
    bool hasInnerReference() const;
    ::Ifc4::IfcReference* InnerReference() const;
    void setInnerReference(::Ifc4::IfcReference* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcReference (IfcEntityInstanceData* e);
    IfcReference (boost::optional< std::string > v1_TypeIdentifier, boost::optional< std::string > v2_AttributeIdentifier, boost::optional< std::string > v3_InstanceName, boost::optional< std::vector< int > /*[1:?]*/ > v4_ListPositions, ::Ifc4::IfcReference* v5_InnerReference);
    typedef IfcTemplatedEntityList< IfcReference > list;
};
class IFC_PARSE_API IfcRepresentation : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc4::IfcRepresentationContext* ContextOfItems() const;
    void setContextOfItems(::Ifc4::IfcRepresentationContext* v);
    bool hasRepresentationIdentifier() const;
    std::string RepresentationIdentifier() const;
    void setRepresentationIdentifier(std::string v);
    bool hasRepresentationType() const;
    std::string RepresentationType() const;
    void setRepresentationType(std::string v);
    IfcTemplatedEntityList< ::Ifc4::IfcRepresentationItem >::ptr Items() const;
    void setItems(IfcTemplatedEntityList< ::Ifc4::IfcRepresentationItem >::ptr v);
        IfcTemplatedEntityList< IfcRepresentationMap >::ptr RepresentationMap() const; // INVERSE IfcRepresentationMap::MappedRepresentation
    IfcTemplatedEntityList< IfcPresentationLayerAssignment >::ptr LayerAssignments() const; // INVERSE IfcPresentationLayerAssignment::AssignedItems
    IfcTemplatedEntityList< IfcProductRepresentation >::ptr OfProductRepresentation() const; // INVERSE IfcProductRepresentation::Representations
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRepresentation (IfcEntityInstanceData* e);
    IfcRepresentation (::Ifc4::IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, IfcTemplatedEntityList< ::Ifc4::IfcRepresentationItem >::ptr v4_Items);
    typedef IfcTemplatedEntityList< IfcRepresentation > list;
};
class IFC_PARSE_API IfcRepresentationContext : public IfcUtil::IfcBaseEntity {
public:
    bool hasContextIdentifier() const;
    std::string ContextIdentifier() const;
    void setContextIdentifier(std::string v);
    bool hasContextType() const;
    std::string ContextType() const;
    void setContextType(std::string v);
        IfcTemplatedEntityList< IfcRepresentation >::ptr RepresentationsInContext() const; // INVERSE IfcRepresentation::ContextOfItems
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRepresentationContext (IfcEntityInstanceData* e);
    IfcRepresentationContext (boost::optional< std::string > v1_ContextIdentifier, boost::optional< std::string > v2_ContextType);
    typedef IfcTemplatedEntityList< IfcRepresentationContext > list;
};
class IFC_PARSE_API IfcRepresentationItem : public IfcUtil::IfcBaseEntity {
public:
        IfcTemplatedEntityList< IfcPresentationLayerAssignment >::ptr LayerAssignment() const; // INVERSE IfcPresentationLayerAssignment::AssignedItems
    IfcTemplatedEntityList< IfcStyledItem >::ptr StyledByItem() const; // INVERSE IfcStyledItem::Item
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRepresentationItem (IfcEntityInstanceData* e);
    IfcRepresentationItem ();
    typedef IfcTemplatedEntityList< IfcRepresentationItem > list;
};
class IFC_PARSE_API IfcRepresentationMap : public IfcUtil::IfcBaseEntity {
public:
    ::Ifc4::IfcAxis2Placement* MappingOrigin() const;
    void setMappingOrigin(::Ifc4::IfcAxis2Placement* v);
    ::Ifc4::IfcRepresentation* MappedRepresentation() const;
    void setMappedRepresentation(::Ifc4::IfcRepresentation* v);
        IfcTemplatedEntityList< IfcShapeAspect >::ptr HasShapeAspects() const; // INVERSE IfcShapeAspect::PartOfProductDefinitionShape
    IfcTemplatedEntityList< IfcMappedItem >::ptr MapUsage() const; // INVERSE IfcMappedItem::MappingSource
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRepresentationMap (IfcEntityInstanceData* e);
    IfcRepresentationMap (::Ifc4::IfcAxis2Placement* v1_MappingOrigin, ::Ifc4::IfcRepresentation* v2_MappedRepresentation);
    typedef IfcTemplatedEntityList< IfcRepresentationMap > list;
};
class IFC_PARSE_API IfcResourceLevelRelationship : public IfcUtil::IfcBaseEntity {
public:
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcResourceLevelRelationship (IfcEntityInstanceData* e);
    IfcResourceLevelRelationship (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description);
    typedef IfcTemplatedEntityList< IfcResourceLevelRelationship > list;
};
class IFC_PARSE_API IfcRoot : public IfcUtil::IfcBaseEntity {
public:
    std::string GlobalId() const;
    void setGlobalId(std::string v);
    bool hasOwnerHistory() const;
    ::Ifc4::IfcOwnerHistory* OwnerHistory() const;
    void setOwnerHistory(::Ifc4::IfcOwnerHistory* v);
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRoot (IfcEntityInstanceData* e);
    IfcRoot (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description);
    typedef IfcTemplatedEntityList< IfcRoot > list;
};
class IFC_PARSE_API IfcSIUnit : public IfcNamedUnit {
public:
    bool hasPrefix() const;
    ::Ifc4::IfcSIPrefix::Value Prefix() const;
    void setPrefix(::Ifc4::IfcSIPrefix::Value v);
    ::Ifc4::IfcSIUnitName::Value Name() const;
    void setName(::Ifc4::IfcSIUnitName::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSIUnit (IfcEntityInstanceData* e);
    IfcSIUnit (::Ifc4::IfcUnitEnum::Value v2_UnitType, boost::optional< ::Ifc4::IfcSIPrefix::Value > v3_Prefix, ::Ifc4::IfcSIUnitName::Value v4_Name);
    typedef IfcTemplatedEntityList< IfcSIUnit > list;
};
class IFC_PARSE_API IfcSchedulingTime : public IfcUtil::IfcBaseEntity {
public:
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
    bool hasDataOrigin() const;
    ::Ifc4::IfcDataOriginEnum::Value DataOrigin() const;
    void setDataOrigin(::Ifc4::IfcDataOriginEnum::Value v);
    bool hasUserDefinedDataOrigin() const;
    std::string UserDefinedDataOrigin() const;
    void setUserDefinedDataOrigin(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSchedulingTime (IfcEntityInstanceData* e);
    IfcSchedulingTime (boost::optional< std::string > v1_Name, boost::optional< ::Ifc4::IfcDataOriginEnum::Value > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin);
    typedef IfcTemplatedEntityList< IfcSchedulingTime > list;
};
class IFC_PARSE_API IfcShapeAspect : public IfcUtil::IfcBaseEntity {
public:
    IfcTemplatedEntityList< ::Ifc4::IfcShapeModel >::ptr ShapeRepresentations() const;
    void setShapeRepresentations(IfcTemplatedEntityList< ::Ifc4::IfcShapeModel >::ptr v);
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
    bool ProductDefinitional() const;
    void setProductDefinitional(bool v);
    bool hasPartOfProductDefinitionShape() const;
    ::Ifc4::IfcProductRepresentationSelect* PartOfProductDefinitionShape() const;
    void setPartOfProductDefinitionShape(::Ifc4::IfcProductRepresentationSelect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcShapeAspect (IfcEntityInstanceData* e);
    IfcShapeAspect (IfcTemplatedEntityList< ::Ifc4::IfcShapeModel >::ptr v1_ShapeRepresentations, boost::optional< std::string > v2_Name, boost::optional< std::string > v3_Description, bool v4_ProductDefinitional, ::Ifc4::IfcProductRepresentationSelect* v5_PartOfProductDefinitionShape);
    typedef IfcTemplatedEntityList< IfcShapeAspect > list;
};
class IFC_PARSE_API IfcShapeModel : public IfcRepresentation {
public:
        IfcTemplatedEntityList< IfcShapeAspect >::ptr OfShapeAspect() const; // INVERSE IfcShapeAspect::ShapeRepresentations
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcShapeModel (IfcEntityInstanceData* e);
    IfcShapeModel (::Ifc4::IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, IfcTemplatedEntityList< ::Ifc4::IfcRepresentationItem >::ptr v4_Items);
    typedef IfcTemplatedEntityList< IfcShapeModel > list;
};
class IFC_PARSE_API IfcShapeRepresentation : public IfcShapeModel {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcShapeRepresentation (IfcEntityInstanceData* e);
    IfcShapeRepresentation (::Ifc4::IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, IfcTemplatedEntityList< ::Ifc4::IfcRepresentationItem >::ptr v4_Items);
    typedef IfcTemplatedEntityList< IfcShapeRepresentation > list;
};
class IFC_PARSE_API IfcStructuralConnectionCondition : public IfcUtil::IfcBaseEntity {
public:
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralConnectionCondition (IfcEntityInstanceData* e);
    IfcStructuralConnectionCondition (boost::optional< std::string > v1_Name);
    typedef IfcTemplatedEntityList< IfcStructuralConnectionCondition > list;
};
class IFC_PARSE_API IfcStructuralLoad : public IfcUtil::IfcBaseEntity {
public:
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralLoad (IfcEntityInstanceData* e);
    IfcStructuralLoad (boost::optional< std::string > v1_Name);
    typedef IfcTemplatedEntityList< IfcStructuralLoad > list;
};
class IFC_PARSE_API IfcStructuralLoadConfiguration : public IfcStructuralLoad {
public:
    IfcTemplatedEntityList< ::Ifc4::IfcStructuralLoadOrResult >::ptr Values() const;
    void setValues(IfcTemplatedEntityList< ::Ifc4::IfcStructuralLoadOrResult >::ptr v);
    bool hasLocations() const;
    std::vector< std::vector< double > > Locations() const;
    void setLocations(std::vector< std::vector< double > > v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralLoadConfiguration (IfcEntityInstanceData* e);
    IfcStructuralLoadConfiguration (boost::optional< std::string > v1_Name, IfcTemplatedEntityList< ::Ifc4::IfcStructuralLoadOrResult >::ptr v2_Values, boost::optional< std::vector< std::vector< double > > > v3_Locations);
    typedef IfcTemplatedEntityList< IfcStructuralLoadConfiguration > list;
};
class IFC_PARSE_API IfcStructuralLoadOrResult : public IfcStructuralLoad {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralLoadOrResult (IfcEntityInstanceData* e);
    IfcStructuralLoadOrResult (boost::optional< std::string > v1_Name);
    typedef IfcTemplatedEntityList< IfcStructuralLoadOrResult > list;
};
class IFC_PARSE_API IfcStructuralLoadStatic : public IfcStructuralLoadOrResult {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralLoadStatic (IfcEntityInstanceData* e);
    IfcStructuralLoadStatic (boost::optional< std::string > v1_Name);
    typedef IfcTemplatedEntityList< IfcStructuralLoadStatic > list;
};
class IFC_PARSE_API IfcStructuralLoadTemperature : public IfcStructuralLoadStatic {
public:
    bool hasDeltaTConstant() const;
    double DeltaTConstant() const;
    void setDeltaTConstant(double v);
    bool hasDeltaTY() const;
    double DeltaTY() const;
    void setDeltaTY(double v);
    bool hasDeltaTZ() const;
    double DeltaTZ() const;
    void setDeltaTZ(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralLoadTemperature (IfcEntityInstanceData* e);
    IfcStructuralLoadTemperature (boost::optional< std::string > v1_Name, boost::optional< double > v2_DeltaTConstant, boost::optional< double > v3_DeltaTY, boost::optional< double > v4_DeltaTZ);
    typedef IfcTemplatedEntityList< IfcStructuralLoadTemperature > list;
};
class IFC_PARSE_API IfcStyleModel : public IfcRepresentation {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStyleModel (IfcEntityInstanceData* e);
    IfcStyleModel (::Ifc4::IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, IfcTemplatedEntityList< ::Ifc4::IfcRepresentationItem >::ptr v4_Items);
    typedef IfcTemplatedEntityList< IfcStyleModel > list;
};
class IFC_PARSE_API IfcStyledItem : public IfcRepresentationItem {
public:
    bool hasItem() const;
    ::Ifc4::IfcRepresentationItem* Item() const;
    void setItem(::Ifc4::IfcRepresentationItem* v);
    IfcEntityList::ptr Styles() const;
    void setStyles(IfcEntityList::ptr v);
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStyledItem (IfcEntityInstanceData* e);
    IfcStyledItem (::Ifc4::IfcRepresentationItem* v1_Item, IfcEntityList::ptr v2_Styles, boost::optional< std::string > v3_Name);
    typedef IfcTemplatedEntityList< IfcStyledItem > list;
};
class IFC_PARSE_API IfcStyledRepresentation : public IfcStyleModel {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStyledRepresentation (IfcEntityInstanceData* e);
    IfcStyledRepresentation (::Ifc4::IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, IfcTemplatedEntityList< ::Ifc4::IfcRepresentationItem >::ptr v4_Items);
    typedef IfcTemplatedEntityList< IfcStyledRepresentation > list;
};
class IFC_PARSE_API IfcSurfaceReinforcementArea : public IfcStructuralLoadOrResult {
public:
    bool hasSurfaceReinforcement1() const;
    std::vector< double > /*[2:3]*/ SurfaceReinforcement1() const;
    void setSurfaceReinforcement1(std::vector< double > /*[2:3]*/ v);
    bool hasSurfaceReinforcement2() const;
    std::vector< double > /*[2:3]*/ SurfaceReinforcement2() const;
    void setSurfaceReinforcement2(std::vector< double > /*[2:3]*/ v);
    bool hasShearReinforcement() const;
    double ShearReinforcement() const;
    void setShearReinforcement(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSurfaceReinforcementArea (IfcEntityInstanceData* e);
    IfcSurfaceReinforcementArea (boost::optional< std::string > v1_Name, boost::optional< std::vector< double > /*[2:3]*/ > v2_SurfaceReinforcement1, boost::optional< std::vector< double > /*[2:3]*/ > v3_SurfaceReinforcement2, boost::optional< double > v4_ShearReinforcement);
    typedef IfcTemplatedEntityList< IfcSurfaceReinforcementArea > list;
};
class IFC_PARSE_API IfcSurfaceStyle : public IfcPresentationStyle {
public:
    ::Ifc4::IfcSurfaceSide::Value Side() const;
    void setSide(::Ifc4::IfcSurfaceSide::Value v);
    IfcEntityList::ptr Styles() const;
    void setStyles(IfcEntityList::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSurfaceStyle (IfcEntityInstanceData* e);
    IfcSurfaceStyle (boost::optional< std::string > v1_Name, ::Ifc4::IfcSurfaceSide::Value v2_Side, IfcEntityList::ptr v3_Styles);
    typedef IfcTemplatedEntityList< IfcSurfaceStyle > list;
};
class IFC_PARSE_API IfcSurfaceStyleLighting : public IfcPresentationItem {
public:
    ::Ifc4::IfcColourRgb* DiffuseTransmissionColour() const;
    void setDiffuseTransmissionColour(::Ifc4::IfcColourRgb* v);
    ::Ifc4::IfcColourRgb* DiffuseReflectionColour() const;
    void setDiffuseReflectionColour(::Ifc4::IfcColourRgb* v);
    ::Ifc4::IfcColourRgb* TransmissionColour() const;
    void setTransmissionColour(::Ifc4::IfcColourRgb* v);
    ::Ifc4::IfcColourRgb* ReflectanceColour() const;
    void setReflectanceColour(::Ifc4::IfcColourRgb* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSurfaceStyleLighting (IfcEntityInstanceData* e);
    IfcSurfaceStyleLighting (::Ifc4::IfcColourRgb* v1_DiffuseTransmissionColour, ::Ifc4::IfcColourRgb* v2_DiffuseReflectionColour, ::Ifc4::IfcColourRgb* v3_TransmissionColour, ::Ifc4::IfcColourRgb* v4_ReflectanceColour);
    typedef IfcTemplatedEntityList< IfcSurfaceStyleLighting > list;
};
class IFC_PARSE_API IfcSurfaceStyleRefraction : public IfcPresentationItem {
public:
    bool hasRefractionIndex() const;
    double RefractionIndex() const;
    void setRefractionIndex(double v);
    bool hasDispersionFactor() const;
    double DispersionFactor() const;
    void setDispersionFactor(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSurfaceStyleRefraction (IfcEntityInstanceData* e);
    IfcSurfaceStyleRefraction (boost::optional< double > v1_RefractionIndex, boost::optional< double > v2_DispersionFactor);
    typedef IfcTemplatedEntityList< IfcSurfaceStyleRefraction > list;
};
class IFC_PARSE_API IfcSurfaceStyleShading : public IfcPresentationItem {
public:
    ::Ifc4::IfcColourRgb* SurfaceColour() const;
    void setSurfaceColour(::Ifc4::IfcColourRgb* v);
    bool hasTransparency() const;
    double Transparency() const;
    void setTransparency(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSurfaceStyleShading (IfcEntityInstanceData* e);
    IfcSurfaceStyleShading (::Ifc4::IfcColourRgb* v1_SurfaceColour, boost::optional< double > v2_Transparency);
    typedef IfcTemplatedEntityList< IfcSurfaceStyleShading > list;
};
class IFC_PARSE_API IfcSurfaceStyleWithTextures : public IfcPresentationItem {
public:
    IfcTemplatedEntityList< ::Ifc4::IfcSurfaceTexture >::ptr Textures() const;
    void setTextures(IfcTemplatedEntityList< ::Ifc4::IfcSurfaceTexture >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSurfaceStyleWithTextures (IfcEntityInstanceData* e);
    IfcSurfaceStyleWithTextures (IfcTemplatedEntityList< ::Ifc4::IfcSurfaceTexture >::ptr v1_Textures);
    typedef IfcTemplatedEntityList< IfcSurfaceStyleWithTextures > list;
};
class IFC_PARSE_API IfcSurfaceTexture : public IfcPresentationItem {
public:
    bool RepeatS() const;
    void setRepeatS(bool v);
    bool RepeatT() const;
    void setRepeatT(bool v);
    bool hasMode() const;
    std::string Mode() const;
    void setMode(std::string v);
    bool hasTextureTransform() const;
    ::Ifc4::IfcCartesianTransformationOperator2D* TextureTransform() const;
    void setTextureTransform(::Ifc4::IfcCartesianTransformationOperator2D* v);
    bool hasParameter() const;
    std::vector< std::string > /*[1:?]*/ Parameter() const;
    void setParameter(std::vector< std::string > /*[1:?]*/ v);
        IfcTemplatedEntityList< IfcTextureCoordinate >::ptr IsMappedBy() const; // INVERSE IfcTextureCoordinate::Maps
    IfcTemplatedEntityList< IfcSurfaceStyleWithTextures >::ptr UsedInStyles() const; // INVERSE IfcSurfaceStyleWithTextures::Textures
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSurfaceTexture (IfcEntityInstanceData* e);
    IfcSurfaceTexture (bool v1_RepeatS, bool v2_RepeatT, boost::optional< std::string > v3_Mode, ::Ifc4::IfcCartesianTransformationOperator2D* v4_TextureTransform, boost::optional< std::vector< std::string > /*[1:?]*/ > v5_Parameter);
    typedef IfcTemplatedEntityList< IfcSurfaceTexture > list;
};
class IFC_PARSE_API IfcTable : public IfcUtil::IfcBaseEntity {
public:
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
    bool hasRows() const;
    IfcTemplatedEntityList< ::Ifc4::IfcTableRow >::ptr Rows() const;
    void setRows(IfcTemplatedEntityList< ::Ifc4::IfcTableRow >::ptr v);
    bool hasColumns() const;
    IfcTemplatedEntityList< ::Ifc4::IfcTableColumn >::ptr Columns() const;
    void setColumns(IfcTemplatedEntityList< ::Ifc4::IfcTableColumn >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTable (IfcEntityInstanceData* e);
    IfcTable (boost::optional< std::string > v1_Name, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcTableRow >::ptr > v2_Rows, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcTableColumn >::ptr > v3_Columns);
    typedef IfcTemplatedEntityList< IfcTable > list;
};
class IFC_PARSE_API IfcTableColumn : public IfcUtil::IfcBaseEntity {
public:
    bool hasIdentifier() const;
    std::string Identifier() const;
    void setIdentifier(std::string v);
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
    bool hasUnit() const;
    ::Ifc4::IfcUnit* Unit() const;
    void setUnit(::Ifc4::IfcUnit* v);
    bool hasReferencePath() const;
    ::Ifc4::IfcReference* ReferencePath() const;
    void setReferencePath(::Ifc4::IfcReference* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTableColumn (IfcEntityInstanceData* e);
    IfcTableColumn (boost::optional< std::string > v1_Identifier, boost::optional< std::string > v2_Name, boost::optional< std::string > v3_Description, ::Ifc4::IfcUnit* v4_Unit, ::Ifc4::IfcReference* v5_ReferencePath);
    typedef IfcTemplatedEntityList< IfcTableColumn > list;
};
class IFC_PARSE_API IfcTableRow : public IfcUtil::IfcBaseEntity {
public:
    bool hasRowCells() const;
    IfcEntityList::ptr RowCells() const;
    void setRowCells(IfcEntityList::ptr v);
    bool hasIsHeading() const;
    bool IsHeading() const;
    void setIsHeading(bool v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTableRow (IfcEntityInstanceData* e);
    IfcTableRow (boost::optional< IfcEntityList::ptr > v1_RowCells, boost::optional< bool > v2_IsHeading);
    typedef IfcTemplatedEntityList< IfcTableRow > list;
};
class IFC_PARSE_API IfcTaskTime : public IfcSchedulingTime {
public:
    bool hasDurationType() const;
    ::Ifc4::IfcTaskDurationEnum::Value DurationType() const;
    void setDurationType(::Ifc4::IfcTaskDurationEnum::Value v);
    bool hasScheduleDuration() const;
    std::string ScheduleDuration() const;
    void setScheduleDuration(std::string v);
    bool hasScheduleStart() const;
    std::string ScheduleStart() const;
    void setScheduleStart(std::string v);
    bool hasScheduleFinish() const;
    std::string ScheduleFinish() const;
    void setScheduleFinish(std::string v);
    bool hasEarlyStart() const;
    std::string EarlyStart() const;
    void setEarlyStart(std::string v);
    bool hasEarlyFinish() const;
    std::string EarlyFinish() const;
    void setEarlyFinish(std::string v);
    bool hasLateStart() const;
    std::string LateStart() const;
    void setLateStart(std::string v);
    bool hasLateFinish() const;
    std::string LateFinish() const;
    void setLateFinish(std::string v);
    bool hasFreeFloat() const;
    std::string FreeFloat() const;
    void setFreeFloat(std::string v);
    bool hasTotalFloat() const;
    std::string TotalFloat() const;
    void setTotalFloat(std::string v);
    bool hasIsCritical() const;
    bool IsCritical() const;
    void setIsCritical(bool v);
    bool hasStatusTime() const;
    std::string StatusTime() const;
    void setStatusTime(std::string v);
    bool hasActualDuration() const;
    std::string ActualDuration() const;
    void setActualDuration(std::string v);
    bool hasActualStart() const;
    std::string ActualStart() const;
    void setActualStart(std::string v);
    bool hasActualFinish() const;
    std::string ActualFinish() const;
    void setActualFinish(std::string v);
    bool hasRemainingTime() const;
    std::string RemainingTime() const;
    void setRemainingTime(std::string v);
    bool hasCompletion() const;
    double Completion() const;
    void setCompletion(double v);
        virtual const IfcParse::entity& declaration() const;
    static