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 const IfcParse::entity& Class();
    IfcTaskTime (IfcEntityInstanceData* e);
    IfcTaskTime (boost::optional< std::string > v1_Name, boost::optional< ::Ifc4::IfcDataOriginEnum::Value > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin, boost::optional< ::Ifc4::IfcTaskDurationEnum::Value > v4_DurationType, boost::optional< std::string > v5_ScheduleDuration, boost::optional< std::string > v6_ScheduleStart, boost::optional< std::string > v7_ScheduleFinish, boost::optional< std::string > v8_EarlyStart, boost::optional< std::string > v9_EarlyFinish, boost::optional< std::string > v10_LateStart, boost::optional< std::string > v11_LateFinish, boost::optional< std::string > v12_FreeFloat, boost::optional< std::string > v13_TotalFloat, boost::optional< bool > v14_IsCritical, boost::optional< std::string > v15_StatusTime, boost::optional< std::string > v16_ActualDuration, boost::optional< std::string > v17_ActualStart, boost::optional< std::string > v18_ActualFinish, boost::optional< std::string > v19_RemainingTime, boost::optional< double > v20_Completion);
    typedef IfcTemplatedEntityList< IfcTaskTime > list;
};
class IFC_PARSE_API IfcTaskTimeRecurring : public IfcTaskTime {
public:
    ::Ifc4::IfcRecurrencePattern* Recurrence() const;
    void setRecurrence(::Ifc4::IfcRecurrencePattern* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTaskTimeRecurring (IfcEntityInstanceData* e);
    IfcTaskTimeRecurring (boost::optional< std::string > v1_Name, boost::optional< ::Ifc4::IfcDataOriginEnum::Value > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin, boost::optional< ::Ifc4::IfcTaskDurationEnum::Value > v4_DurationType, boost::optional< std::string > v5_ScheduleDuration, boost::optional< std::string > v6_ScheduleStart, boost::optional< std::string > v7_ScheduleFinish, boost::optional< std::string > v8_EarlyStart, boost::optional< std::string > v9_EarlyFinish, boost::optional< std::string > v10_LateStart, boost::optional< std::string > v11_LateFinish, boost::optional< std::string > v12_FreeFloat, boost::optional< std::string > v13_TotalFloat, boost::optional< bool > v14_IsCritical, boost::optional< std::string > v15_StatusTime, boost::optional< std::string > v16_ActualDuration, boost::optional< std::string > v17_ActualStart, boost::optional< std::string > v18_ActualFinish, boost::optional< std::string > v19_RemainingTime, boost::optional< double > v20_Completion, ::Ifc4::IfcRecurrencePattern* v21_Recurrence);
    typedef IfcTemplatedEntityList< IfcTaskTimeRecurring > list;
};
class IFC_PARSE_API IfcTelecomAddress : public IfcAddress {
public:
    bool hasTelephoneNumbers() const;
    std::vector< std::string > /*[1:?]*/ TelephoneNumbers() const;
    void setTelephoneNumbers(std::vector< std::string > /*[1:?]*/ v);
    bool hasFacsimileNumbers() const;
    std::vector< std::string > /*[1:?]*/ FacsimileNumbers() const;
    void setFacsimileNumbers(std::vector< std::string > /*[1:?]*/ v);
    bool hasPagerNumber() const;
    std::string PagerNumber() const;
    void setPagerNumber(std::string v);
    bool hasElectronicMailAddresses() const;
    std::vector< std::string > /*[1:?]*/ ElectronicMailAddresses() const;
    void setElectronicMailAddresses(std::vector< std::string > /*[1:?]*/ v);
    bool hasWWWHomePageURL() const;
    std::string WWWHomePageURL() const;
    void setWWWHomePageURL(std::string v);
    bool hasMessagingIDs() const;
    std::vector< std::string > /*[1:?]*/ MessagingIDs() const;
    void setMessagingIDs(std::vector< std::string > /*[1:?]*/ v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTelecomAddress (IfcEntityInstanceData* e);
    IfcTelecomAddress (boost::optional< ::Ifc4::IfcAddressTypeEnum::Value > v1_Purpose, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_UserDefinedPurpose, boost::optional< std::vector< std::string > /*[1:?]*/ > v4_TelephoneNumbers, boost::optional< std::vector< std::string > /*[1:?]*/ > v5_FacsimileNumbers, boost::optional< std::string > v6_PagerNumber, boost::optional< std::vector< std::string > /*[1:?]*/ > v7_ElectronicMailAddresses, boost::optional< std::string > v8_WWWHomePageURL, boost::optional< std::vector< std::string > /*[1:?]*/ > v9_MessagingIDs);
    typedef IfcTemplatedEntityList< IfcTelecomAddress > list;
};
class IFC_PARSE_API IfcTextStyle : public IfcPresentationStyle {
public:
    bool hasTextCharacterAppearance() const;
    ::Ifc4::IfcTextStyleForDefinedFont* TextCharacterAppearance() const;
    void setTextCharacterAppearance(::Ifc4::IfcTextStyleForDefinedFont* v);
    bool hasTextStyle() const;
    ::Ifc4::IfcTextStyleTextModel* TextStyle() const;
    void setTextStyle(::Ifc4::IfcTextStyleTextModel* v);
    ::Ifc4::IfcTextFontSelect* TextFontStyle() const;
    void setTextFontStyle(::Ifc4::IfcTextFontSelect* v);
    bool hasModelOrDraughting() const;
    bool ModelOrDraughting() const;
    void setModelOrDraughting(bool v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTextStyle (IfcEntityInstanceData* e);
    IfcTextStyle (boost::optional< std::string > v1_Name, ::Ifc4::IfcTextStyleForDefinedFont* v2_TextCharacterAppearance, ::Ifc4::IfcTextStyleTextModel* v3_TextStyle, ::Ifc4::IfcTextFontSelect* v4_TextFontStyle, boost::optional< bool > v5_ModelOrDraughting);
    typedef IfcTemplatedEntityList< IfcTextStyle > list;
};
class IFC_PARSE_API IfcTextStyleForDefinedFont : public IfcPresentationItem {
public:
    ::Ifc4::IfcColour* Colour() const;
    void setColour(::Ifc4::IfcColour* v);
    bool hasBackgroundColour() const;
    ::Ifc4::IfcColour* BackgroundColour() const;
    void setBackgroundColour(::Ifc4::IfcColour* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTextStyleForDefinedFont (IfcEntityInstanceData* e);
    IfcTextStyleForDefinedFont (::Ifc4::IfcColour* v1_Colour, ::Ifc4::IfcColour* v2_BackgroundColour);
    typedef IfcTemplatedEntityList< IfcTextStyleForDefinedFont > list;
};
class IFC_PARSE_API IfcTextStyleTextModel : public IfcPresentationItem {
public:
    bool hasTextIndent() const;
    ::Ifc4::IfcSizeSelect* TextIndent() const;
    void setTextIndent(::Ifc4::IfcSizeSelect* v);
    bool hasTextAlign() const;
    std::string TextAlign() const;
    void setTextAlign(std::string v);
    bool hasTextDecoration() const;
    std::string TextDecoration() const;
    void setTextDecoration(std::string v);
    bool hasLetterSpacing() const;
    ::Ifc4::IfcSizeSelect* LetterSpacing() const;
    void setLetterSpacing(::Ifc4::IfcSizeSelect* v);
    bool hasWordSpacing() const;
    ::Ifc4::IfcSizeSelect* WordSpacing() const;
    void setWordSpacing(::Ifc4::IfcSizeSelect* v);
    bool hasTextTransform() const;
    std::string TextTransform() const;
    void setTextTransform(std::string v);
    bool hasLineHeight() const;
    ::Ifc4::IfcSizeSelect* LineHeight() const;
    void setLineHeight(::Ifc4::IfcSizeSelect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTextStyleTextModel (IfcEntityInstanceData* e);
    IfcTextStyleTextModel (::Ifc4::IfcSizeSelect* v1_TextIndent, boost::optional< std::string > v2_TextAlign, boost::optional< std::string > v3_TextDecoration, ::Ifc4::IfcSizeSelect* v4_LetterSpacing, ::Ifc4::IfcSizeSelect* v5_WordSpacing, boost::optional< std::string > v6_TextTransform, ::Ifc4::IfcSizeSelect* v7_LineHeight);
    typedef IfcTemplatedEntityList< IfcTextStyleTextModel > list;
};
class IFC_PARSE_API IfcTextureCoordinate : public IfcPresentationItem {
public:
    IfcTemplatedEntityList< ::Ifc4::IfcSurfaceTexture >::ptr Maps() const;
    void setMaps(IfcTemplatedEntityList< ::Ifc4::IfcSurfaceTexture >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTextureCoordinate (IfcEntityInstanceData* e);
    IfcTextureCoordinate (IfcTemplatedEntityList< ::Ifc4::IfcSurfaceTexture >::ptr v1_Maps);
    typedef IfcTemplatedEntityList< IfcTextureCoordinate > list;
};
class IFC_PARSE_API IfcTextureCoordinateGenerator : public IfcTextureCoordinate {
public:
    std::string Mode() const;
    void setMode(std::string v);
    bool hasParameter() const;
    std::vector< double > /*[1:?]*/ Parameter() const;
    void setParameter(std::vector< double > /*[1:?]*/ v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTextureCoordinateGenerator (IfcEntityInstanceData* e);
    IfcTextureCoordinateGenerator (IfcTemplatedEntityList< ::Ifc4::IfcSurfaceTexture >::ptr v1_Maps, std::string v2_Mode, boost::optional< std::vector< double > /*[1:?]*/ > v3_Parameter);
    typedef IfcTemplatedEntityList< IfcTextureCoordinateGenerator > list;
};
class IFC_PARSE_API IfcTextureMap : public IfcTextureCoordinate {
public:
    IfcTemplatedEntityList< ::Ifc4::IfcTextureVertex >::ptr Vertices() const;
    void setVertices(IfcTemplatedEntityList< ::Ifc4::IfcTextureVertex >::ptr v);
    ::Ifc4::IfcFace* MappedTo() const;
    void setMappedTo(::Ifc4::IfcFace* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTextureMap (IfcEntityInstanceData* e);
    IfcTextureMap (IfcTemplatedEntityList< ::Ifc4::IfcSurfaceTexture >::ptr v1_Maps, IfcTemplatedEntityList< ::Ifc4::IfcTextureVertex >::ptr v2_Vertices, ::Ifc4::IfcFace* v3_MappedTo);
    typedef IfcTemplatedEntityList< IfcTextureMap > list;
};
class IFC_PARSE_API IfcTextureVertex : public IfcPresentationItem {
public:
    std::vector< double > /*[2:2]*/ Coordinates() const;
    void setCoordinates(std::vector< double > /*[2:2]*/ v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTextureVertex (IfcEntityInstanceData* e);
    IfcTextureVertex (std::vector< double > /*[2:2]*/ v1_Coordinates);
    typedef IfcTemplatedEntityList< IfcTextureVertex > list;
};

class IFC_PARSE_API IfcTextureVertexList : public IfcPresentationItem {
public:
    std::vector< std::vector< double > > TexCoordsList() const;
    void setTexCoordsList(std::vector< std::vector< double > > v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTextureVertexList (IfcEntityInstanceData* e);
    IfcTextureVertexList (std::vector< std::vector< double > > v1_TexCoordsList);
    typedef IfcTemplatedEntityList< IfcTextureVertexList > list;
};
class IFC_PARSE_API IfcTimePeriod : public IfcUtil::IfcBaseEntity {
public:
    std::string StartTime() const;
    void setStartTime(std::string v);
    std::string EndTime() const;
    void setEndTime(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTimePeriod (IfcEntityInstanceData* e);
    IfcTimePeriod (std::string v1_StartTime, std::string v2_EndTime);
    typedef IfcTemplatedEntityList< IfcTimePeriod > list;
};
class IFC_PARSE_API IfcTimeSeries : 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);
    std::string StartTime() const;
    void setStartTime(std::string v);
    std::string EndTime() const;
    void setEndTime(std::string v);
    ::Ifc4::IfcTimeSeriesDataTypeEnum::Value TimeSeriesDataType() const;
    void setTimeSeriesDataType(::Ifc4::IfcTimeSeriesDataTypeEnum::Value v);
    ::Ifc4::IfcDataOriginEnum::Value DataOrigin() const;
    void setDataOrigin(::Ifc4::IfcDataOriginEnum::Value v);
    bool hasUserDefinedDataOrigin() const;
    std::string UserDefinedDataOrigin() const;
    void setUserDefinedDataOrigin(std::string v);
    bool hasUnit() const;
    ::Ifc4::IfcUnit* Unit() const;
    void setUnit(::Ifc4::IfcUnit* v);
        IfcTemplatedEntityList< IfcExternalReferenceRelationship >::ptr HasExternalReference() const; // INVERSE IfcExternalReferenceRelationship::RelatedResourceObjects
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTimeSeries (IfcEntityInstanceData* e);
    IfcTimeSeries (std::string v1_Name, boost::optional< std::string > v2_Description, std::string v3_StartTime, std::string v4_EndTime, ::Ifc4::IfcTimeSeriesDataTypeEnum::Value v5_TimeSeriesDataType, ::Ifc4::IfcDataOriginEnum::Value v6_DataOrigin, boost::optional< std::string > v7_UserDefinedDataOrigin, ::Ifc4::IfcUnit* v8_Unit);
    typedef IfcTemplatedEntityList< IfcTimeSeries > list;
};
class IFC_PARSE_API IfcTimeSeriesValue : public IfcUtil::IfcBaseEntity {
public:
    IfcEntityList::ptr ListValues() const;
    void setListValues(IfcEntityList::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTimeSeriesValue (IfcEntityInstanceData* e);
    IfcTimeSeriesValue (IfcEntityList::ptr v1_ListValues);
    typedef IfcTemplatedEntityList< IfcTimeSeriesValue > list;
};
class IFC_PARSE_API IfcTopologicalRepresentationItem : public IfcRepresentationItem {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTopologicalRepresentationItem (IfcEntityInstanceData* e);
    IfcTopologicalRepresentationItem ();
    typedef IfcTemplatedEntityList< IfcTopologicalRepresentationItem > list;
};
class IFC_PARSE_API IfcTopologyRepresentation : public IfcShapeModel {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTopologyRepresentation (IfcEntityInstanceData* e);
    IfcTopologyRepresentation (::Ifc4::IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, IfcTemplatedEntityList< ::Ifc4::IfcRepresentationItem >::ptr v4_Items);
    typedef IfcTemplatedEntityList< IfcTopologyRepresentation > list;
};
class IFC_PARSE_API IfcUnitAssignment : public IfcUtil::IfcBaseEntity {
public:
    IfcEntityList::ptr Units() const;
    void setUnits(IfcEntityList::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcUnitAssignment (IfcEntityInstanceData* e);
    IfcUnitAssignment (IfcEntityList::ptr v1_Units);
    typedef IfcTemplatedEntityList< IfcUnitAssignment > list;
};
class IFC_PARSE_API IfcVertex : public IfcTopologicalRepresentationItem {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcVertex (IfcEntityInstanceData* e);
    IfcVertex ();
    typedef IfcTemplatedEntityList< IfcVertex > list;
};
class IFC_PARSE_API IfcVertexPoint : public IfcVertex {
public:
    ::Ifc4::IfcPoint* VertexGeometry() const;
    void setVertexGeometry(::Ifc4::IfcPoint* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcVertexPoint (IfcEntityInstanceData* e);
    IfcVertexPoint (::Ifc4::IfcPoint* v1_VertexGeometry);
    typedef IfcTemplatedEntityList< IfcVertexPoint > list;
};
class IFC_PARSE_API IfcVirtualGridIntersection : public IfcUtil::IfcBaseEntity {
public:
    IfcTemplatedEntityList< ::Ifc4::IfcGridAxis >::ptr IntersectingAxes() const;
    void setIntersectingAxes(IfcTemplatedEntityList< ::Ifc4::IfcGridAxis >::ptr v);
    std::vector< double > /*[2:3]*/ OffsetDistances() const;
    void setOffsetDistances(std::vector< double > /*[2:3]*/ v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcVirtualGridIntersection (IfcEntityInstanceData* e);
    IfcVirtualGridIntersection (IfcTemplatedEntityList< ::Ifc4::IfcGridAxis >::ptr v1_IntersectingAxes, std::vector< double > /*[2:3]*/ v2_OffsetDistances);
    typedef IfcTemplatedEntityList< IfcVirtualGridIntersection > list;
};
class IFC_PARSE_API IfcWorkTime : public IfcSchedulingTime {
public:
    bool hasRecurrencePattern() const;
    ::Ifc4::IfcRecurrencePattern* RecurrencePattern() const;
    void setRecurrencePattern(::Ifc4::IfcRecurrencePattern* v);
    bool hasStart() const;
    std::string Start() const;
    void setStart(std::string v);
    bool hasFinish() const;
    std::string Finish() const;
    void setFinish(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcWorkTime (IfcEntityInstanceData* e);
    IfcWorkTime (boost::optional< std::string > v1_Name, boost::optional< ::Ifc4::IfcDataOriginEnum::Value > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin, ::Ifc4::IfcRecurrencePattern* v4_RecurrencePattern, boost::optional< std::string > v5_Start, boost::optional< std::string > v6_Finish);
    typedef IfcTemplatedEntityList< IfcWorkTime > list;
};
class IFC_PARSE_API IfcApprovalRelationship : public IfcResourceLevelRelationship {
public:
    ::Ifc4::IfcApproval* RelatingApproval() const;
    void setRelatingApproval(::Ifc4::IfcApproval* v);
    IfcTemplatedEntityList< ::Ifc4::IfcApproval >::ptr RelatedApprovals() const;
    void setRelatedApprovals(IfcTemplatedEntityList< ::Ifc4::IfcApproval >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcApprovalRelationship (IfcEntityInstanceData* e);
    IfcApprovalRelationship (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4::IfcApproval* v3_RelatingApproval, IfcTemplatedEntityList< ::Ifc4::IfcApproval >::ptr v4_RelatedApprovals);
    typedef IfcTemplatedEntityList< IfcApprovalRelationship > list;
};
class IFC_PARSE_API IfcArbitraryClosedProfileDef : public IfcProfileDef {
public:
    ::Ifc4::IfcCurve* OuterCurve() const;
    void setOuterCurve(::Ifc4::IfcCurve* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcArbitraryClosedProfileDef (IfcEntityInstanceData* e);
    IfcArbitraryClosedProfileDef (::Ifc4::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4::IfcCurve* v3_OuterCurve);
    typedef IfcTemplatedEntityList< IfcArbitraryClosedProfileDef > list;
};
class IFC_PARSE_API IfcArbitraryOpenProfileDef : public IfcProfileDef {
public:
    ::Ifc4::IfcBoundedCurve* Curve() const;
    void setCurve(::Ifc4::IfcBoundedCurve* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcArbitraryOpenProfileDef (IfcEntityInstanceData* e);
    IfcArbitraryOpenProfileDef (::Ifc4::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4::IfcBoundedCurve* v3_Curve);
    typedef IfcTemplatedEntityList< IfcArbitraryOpenProfileDef > list;
};
class IFC_PARSE_API IfcArbitraryProfileDefWithVoids : public IfcArbitraryClosedProfileDef {
public:
    IfcTemplatedEntityList< ::Ifc4::IfcCurve >::ptr InnerCurves() const;
    void setInnerCurves(IfcTemplatedEntityList< ::Ifc4::IfcCurve >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcArbitraryProfileDefWithVoids (IfcEntityInstanceData* e);
    IfcArbitraryProfileDefWithVoids (::Ifc4::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4::IfcCurve* v3_OuterCurve, IfcTemplatedEntityList< ::Ifc4::IfcCurve >::ptr v4_InnerCurves);
    typedef IfcTemplatedEntityList< IfcArbitraryProfileDefWithVoids > list;
};
class IFC_PARSE_API IfcBlobTexture : public IfcSurfaceTexture {
public:
    std::string RasterFormat() const;
    void setRasterFormat(std::string v);
    boost::dynamic_bitset<> RasterCode() const;
    void setRasterCode(boost::dynamic_bitset<> v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBlobTexture (IfcEntityInstanceData* e);
    IfcBlobTexture (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, std::string v6_RasterFormat, boost::dynamic_bitset<> v7_RasterCode);
    typedef IfcTemplatedEntityList< IfcBlobTexture > list;
};
class IFC_PARSE_API IfcCenterLineProfileDef : public IfcArbitraryOpenProfileDef {
public:
    double Thickness() const;
    void setThickness(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCenterLineProfileDef (IfcEntityInstanceData* e);
    IfcCenterLineProfileDef (::Ifc4::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4::IfcBoundedCurve* v3_Curve, double v4_Thickness);
    typedef IfcTemplatedEntityList< IfcCenterLineProfileDef > list;
};
class IFC_PARSE_API IfcClassification : public IfcExternalInformation {
public:
    bool hasSource() const;
    std::string Source() const;
    void setSource(std::string v);
    bool hasEdition() const;
    std::string Edition() const;
    void setEdition(std::string v);
    bool hasEditionDate() const;
    std::string EditionDate() const;
    void setEditionDate(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 hasLocation() const;
    std::string Location() const;
    void setLocation(std::string v);
    bool hasReferenceTokens() const;
    std::vector< std::string > /*[1:?]*/ ReferenceTokens() const;
    void setReferenceTokens(std::vector< std::string > /*[1:?]*/ v);
        IfcTemplatedEntityList< IfcRelAssociatesClassification >::ptr ClassificationForObjects() const; // INVERSE IfcRelAssociatesClassification::RelatingClassification
    IfcTemplatedEntityList< IfcClassificationReference >::ptr HasReferences() const; // INVERSE IfcClassificationReference::ReferencedSource
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcClassification (IfcEntityInstanceData* e);
    IfcClassification (boost::optional< std::string > v1_Source, boost::optional< std::string > v2_Edition, boost::optional< std::string > v3_EditionDate, std::string v4_Name, boost::optional< std::string > v5_Description, boost::optional< std::string > v6_Location, boost::optional< std::vector< std::string > /*[1:?]*/ > v7_ReferenceTokens);
    typedef IfcTemplatedEntityList< IfcClassification > list;
};
class IFC_PARSE_API IfcClassificationReference : public IfcExternalReference {
public:
    bool hasReferencedSource() const;
    ::Ifc4::IfcClassificationReferenceSelect* ReferencedSource() const;
    void setReferencedSource(::Ifc4::IfcClassificationReferenceSelect* v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
    bool hasSort() const;
    std::string Sort() const;
    void setSort(std::string v);
        IfcTemplatedEntityList< IfcRelAssociatesClassification >::ptr ClassificationRefForObjects() const; // INVERSE IfcRelAssociatesClassification::RelatingClassification
    IfcTemplatedEntityList< IfcClassificationReference >::ptr HasReferences() const; // INVERSE IfcClassificationReference::ReferencedSource
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcClassificationReference (IfcEntityInstanceData* e);
    IfcClassificationReference (boost::optional< std::string > v1_Location, boost::optional< std::string > v2_Identification, boost::optional< std::string > v3_Name, ::Ifc4::IfcClassificationReferenceSelect* v4_ReferencedSource, boost::optional< std::string > v5_Description, boost::optional< std::string > v6_Sort);
    typedef IfcTemplatedEntityList< IfcClassificationReference > list;
};

class IFC_PARSE_API IfcColourRgbList : public IfcPresentationItem {
public:
    std::vector< std::vector< double > > ColourList() const;
    void setColourList(std::vector< std::vector< double > > v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcColourRgbList (IfcEntityInstanceData* e);
    IfcColourRgbList (std::vector< std::vector< double > > v1_ColourList);
    typedef IfcTemplatedEntityList< IfcColourRgbList > list;
};
class IFC_PARSE_API IfcColourSpecification : public IfcPresentationItem {
public:
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcColourSpecification (IfcEntityInstanceData* e);
    IfcColourSpecification (boost::optional< std::string > v1_Name);
    typedef IfcTemplatedEntityList< IfcColourSpecification > list;
};
class IFC_PARSE_API IfcCompositeProfileDef : public IfcProfileDef {
public:
    IfcTemplatedEntityList< ::Ifc4::IfcProfileDef >::ptr Profiles() const;
    void setProfiles(IfcTemplatedEntityList< ::Ifc4::IfcProfileDef >::ptr v);
    bool hasLabel() const;
    std::string Label() const;
    void setLabel(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCompositeProfileDef (IfcEntityInstanceData* e);
    IfcCompositeProfileDef (::Ifc4::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, IfcTemplatedEntityList< ::Ifc4::IfcProfileDef >::ptr v3_Profiles, boost::optional< std::string > v4_Label);
    typedef IfcTemplatedEntityList< IfcCompositeProfileDef > list;
};
class IFC_PARSE_API IfcConnectedFaceSet : public IfcTopologicalRepresentationItem {
public:
    IfcTemplatedEntityList< ::Ifc4::IfcFace >::ptr CfsFaces() const;
    void setCfsFaces(IfcTemplatedEntityList< ::Ifc4::IfcFace >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcConnectedFaceSet (IfcEntityInstanceData* e);
    IfcConnectedFaceSet (IfcTemplatedEntityList< ::Ifc4::IfcFace >::ptr v1_CfsFaces);
    typedef IfcTemplatedEntityList< IfcConnectedFaceSet > list;
};
class IFC_PARSE_API IfcConnectionCurveGeometry : public IfcConnectionGeometry {
public:
    ::Ifc4::IfcCurveOrEdgeCurve* CurveOnRelatingElement() const;
    void setCurveOnRelatingElement(::Ifc4::IfcCurveOrEdgeCurve* v);
    bool hasCurveOnRelatedElement() const;
    ::Ifc4::IfcCurveOrEdgeCurve* CurveOnRelatedElement() const;
    void setCurveOnRelatedElement(::Ifc4::IfcCurveOrEdgeCurve* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcConnectionCurveGeometry (IfcEntityInstanceData* e);
    IfcConnectionCurveGeometry (::Ifc4::IfcCurveOrEdgeCurve* v1_CurveOnRelatingElement, ::Ifc4::IfcCurveOrEdgeCurve* v2_CurveOnRelatedElement);
    typedef IfcTemplatedEntityList< IfcConnectionCurveGeometry > list;
};
class IFC_PARSE_API IfcConnectionPointEccentricity : public IfcConnectionPointGeometry {
public:
    bool hasEccentricityInX() const;
    double EccentricityInX() const;
    void setEccentricityInX(double v);
    bool hasEccentricityInY() const;
    double EccentricityInY() const;
    void setEccentricityInY(double v);
    bool hasEccentricityInZ() const;
    double EccentricityInZ() const;
    void setEccentricityInZ(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcConnectionPointEccentricity (IfcEntityInstanceData* e);
    IfcConnectionPointEccentricity (::Ifc4::IfcPointOrVertexPoint* v1_PointOnRelatingElement, ::Ifc4::IfcPointOrVertexPoint* v2_PointOnRelatedElement, boost::optional< double > v3_EccentricityInX, boost::optional< double > v4_EccentricityInY, boost::optional< double > v5_EccentricityInZ);
    typedef IfcTemplatedEntityList< IfcConnectionPointEccentricity > list;
};
class IFC_PARSE_API IfcContextDependentUnit : public IfcNamedUnit {
public:
    std::string Name() const;
    void setName(std::string v);
        IfcTemplatedEntityList< IfcExternalReferenceRelationship >::ptr HasExternalReference() const; // INVERSE IfcExternalReferenceRelationship::RelatedResourceObjects
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcContextDependentUnit (IfcEntityInstanceData* e);
    IfcContextDependentUnit (::Ifc4::IfcDimensionalExponents* v1_Dimensions, ::Ifc4::IfcUnitEnum::Value v2_UnitType, std::string v3_Name);
    typedef IfcTemplatedEntityList< IfcContextDependentUnit > list;
};
class IFC_PARSE_API IfcConversionBasedUnit : public IfcNamedUnit {
public:
    std::string Name() const;
    void setName(std::string v);
    ::Ifc4::IfcMeasureWithUnit* ConversionFactor() const;
    void setConversionFactor(::Ifc4::IfcMeasureWithUnit* v);
        IfcTemplatedEntityList< IfcExternalReferenceRelationship >::ptr HasExternalReference() const; // INVERSE IfcExternalReferenceRelationship::RelatedResourceObjects
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcConversionBasedUnit (IfcEntityInstanceData* e);
    IfcConversionBasedUnit (::Ifc4::IfcDimensionalExponents* v1_Dimensions, ::Ifc4::IfcUnitEnum::Value v2_UnitType, std::string v3_Name, ::Ifc4::IfcMeasureWithUnit* v4_ConversionFactor);
    typedef IfcTemplatedEntityList< IfcConversionBasedUnit > list;
};
class IFC_PARSE_API IfcConversionBasedUnitWithOffset : public IfcConversionBasedUnit {
public:
    double ConversionOffset() const;
    void setConversionOffset(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcConversionBasedUnitWithOffset (IfcEntityInstanceData* e);
    IfcConversionBasedUnitWithOffset (::Ifc4::IfcDimensionalExponents* v1_Dimensions, ::Ifc4::IfcUnitEnum::Value v2_UnitType, std::string v3_Name, ::Ifc4::IfcMeasureWithUnit* v4_ConversionFactor, double v5_ConversionOffset);
    typedef IfcTemplatedEntityList< IfcConversionBasedUnitWithOffset > list;
};
class IFC_PARSE_API IfcCurrencyRelationship : public IfcResourceLevelRelationship {
public:
    ::Ifc4::IfcMonetaryUnit* RelatingMonetaryUnit() const;
    void setRelatingMonetaryUnit(::Ifc4::IfcMonetaryUnit* v);
    ::Ifc4::IfcMonetaryUnit* RelatedMonetaryUnit() const;
    void setRelatedMonetaryUnit(::Ifc4::IfcMonetaryUnit* v);
    double ExchangeRate() const;
    void setExchangeRate(double v);
    bool hasRateDateTime() const;
    std::string RateDateTime() const;
    void setRateDateTime(std::string v);
    bool hasRateSource() const;
    ::Ifc4::IfcLibraryInformation* RateSource() const;
    void setRateSource(::Ifc4::IfcLibraryInformation* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCurrencyRelationship (IfcEntityInstanceData* e);
    IfcCurrencyRelationship (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4::IfcMonetaryUnit* v3_RelatingMonetaryUnit, ::Ifc4::IfcMonetaryUnit* v4_RelatedMonetaryUnit, double v5_ExchangeRate, boost::optional< std::string > v6_RateDateTime, ::Ifc4::IfcLibraryInformation* v7_RateSource);
    typedef IfcTemplatedEntityList< IfcCurrencyRelationship > list;
};
class IFC_PARSE_API IfcCurveStyle : public IfcPresentationStyle {
public:
    bool hasCurveFont() const;
    ::Ifc4::IfcCurveFontOrScaledCurveFontSelect* CurveFont() const;
    void setCurveFont(::Ifc4::IfcCurveFontOrScaledCurveFontSelect* v);
    bool hasCurveWidth() const;
    ::Ifc4::IfcSizeSelect* CurveWidth() const;
    void setCurveWidth(::Ifc4::IfcSizeSelect* v);
    bool hasCurveColour() const;
    ::Ifc4::IfcColour* CurveColour() const;
    void setCurveColour(::Ifc4::IfcColour* v);
    bool hasModelOrDraughting() const;
    bool ModelOrDraughting() const;
    void setModelOrDraughting(bool v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCurveStyle (IfcEntityInstanceData* e);
    IfcCurveStyle (boost::optional< std::string > v1_Name, ::Ifc4::IfcCurveFontOrScaledCurveFontSelect* v2_CurveFont, ::Ifc4::IfcSizeSelect* v3_CurveWidth, ::Ifc4::IfcColour* v4_CurveColour, boost::optional< bool > v5_ModelOrDraughting);
    typedef IfcTemplatedEntityList< IfcCurveStyle > list;
};
class IFC_PARSE_API IfcCurveStyleFont : public IfcPresentationItem {
public:
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
    IfcTemplatedEntityList< ::Ifc4::IfcCurveStyleFontPattern >::ptr PatternList() const;
    void setPatternList(IfcTemplatedEntityList< ::Ifc4::IfcCurveStyleFontPattern >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCurveStyleFont (IfcEntityInstanceData* e);
    IfcCurveStyleFont (boost::optional< std::string > v1_Name, IfcTemplatedEntityList< ::Ifc4::IfcCurveStyleFontPattern >::ptr v2_PatternList);
    typedef IfcTemplatedEntityList< IfcCurveStyleFont > list;
};
class IFC_PARSE_API IfcCurveStyleFontAndScaling : public IfcPresentationItem {
public:
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
    ::Ifc4::IfcCurveStyleFontSelect* CurveFont() const;
    void setCurveFont(::Ifc4::IfcCurveStyleFontSelect* v);
    double CurveFontScaling() const;
    void setCurveFontScaling(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCurveStyleFontAndScaling (IfcEntityInstanceData* e);
    IfcCurveStyleFontAndScaling (boost::optional< std::string > v1_Name, ::Ifc4::IfcCurveStyleFontSelect* v2_CurveFont, double v3_CurveFontScaling);
    typedef IfcTemplatedEntityList< IfcCurveStyleFontAndScaling > list;
};
class IFC_PARSE_API IfcCurveStyleFontPattern : public IfcPresentationItem {
public:
    double VisibleSegmentLength() const;
    void setVisibleSegmentLength(double v);
    double InvisibleSegmentLength() const;
    void setInvisibleSegmentLength(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCurveStyleFontPattern (IfcEntityInstanceData* e);
    IfcCurveStyleFontPattern (double v1_VisibleSegmentLength, double v2_InvisibleSegmentLength);
    typedef IfcTemplatedEntityList< IfcCurveStyleFontPattern > list;
};
class IFC_PARSE_API IfcDerivedProfileDef : public IfcProfileDef {
public:
    ::Ifc4::IfcProfileDef* ParentProfile() const;
    void setParentProfile(::Ifc4::IfcProfileDef* v);
    ::Ifc4::IfcCartesianTransformationOperator2D* Operator() const;
    void setOperator(::Ifc4::IfcCartesianTransformationOperator2D* v);
    bool hasLabel() const;
    std::string Label() const;
    void setLabel(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDerivedProfileDef (IfcEntityInstanceData* e);
    IfcDerivedProfileDef (::Ifc4::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4::IfcProfileDef* v3_ParentProfile, ::Ifc4::IfcCartesianTransformationOperator2D* v4_Operator, boost::optional< std::string > v5_Label);
    typedef IfcTemplatedEntityList< IfcDerivedProfileDef > list;
};
class IFC_PARSE_API IfcDocumentInformation : public IfcExternalInformation {
public:
    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 hasLocation() const;
    std::string Location() const;
    void setLocation(std::string v);
    bool hasPurpose() const;
    std::string Purpose() const;
    void setPurpose(std::string v);
    bool hasIntendedUse() const;
    std::string IntendedUse() const;
    void setIntendedUse(std::string v);
    bool hasScope() const;
    std::string Scope() const;
    void setScope(std::string v);
    bool hasRevision() const;
    std::string Revision() const;
    void setRevision(std::string v);
    bool hasDocumentOwner() const;
    ::Ifc4::IfcActorSelect* DocumentOwner() const;
    void setDocumentOwner(::Ifc4::IfcActorSelect* v);
    bool hasEditors() const;
    IfcEntityList::ptr Editors() const;
    void setEditors(IfcEntityList::ptr v);
    bool hasCreationTime() const;
    std::string CreationTime() const;
    void setCreationTime(std::string v);
    bool hasLastRevisionTime() const;
    std::string LastRevisionTime() const;
    void setLastRevisionTime(std::string v);
    bool hasElectronicFormat() const;
    std::string ElectronicFormat() const;
    void setElectronicFormat(std::string v);
    bool hasValidFrom() const;
    std::string ValidFrom() const;
    void setValidFrom(std::string v);
    bool hasValidUntil() const;
    std::string ValidUntil() const;
    void setValidUntil(std::string v);
    bool hasConfidentiality() const;
    ::Ifc4::IfcDocumentConfidentialityEnum::Value Confidentiality() const;
    void setConfidentiality(::Ifc4::IfcDocumentConfidentialityEnum::Value v);
    bool hasStatus() const;
    ::Ifc4::IfcDocumentStatusEnum::Value Status() const;
    void setStatus(::Ifc4::IfcDocumentStatusEnum::Value v);
        IfcTemplatedEntityList< IfcRelAssociatesDocument >::ptr DocumentInfoForObjects() const; // INVERSE IfcRelAssociatesDocument::RelatingDocument
    IfcTemplatedEntityList< IfcDocumentReference >::ptr HasDocumentReferences() const; // INVERSE IfcDocumentReference::ReferencedDocument
    IfcTemplatedEntityList< IfcDocumentInformationRelationship >::ptr IsPointedTo() const; // INVERSE IfcDocumentInformationRelationship::RelatedDocuments
    IfcTemplatedEntityList< IfcDocumentInformationRelationship >::ptr IsPointer() const; // INVERSE IfcDocumentInformationRelationship::RelatingDocument
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDocumentInformation (IfcEntityInstanceData* e);
    IfcDocumentInformation (std::string v1_Identification, std::string v2_Name, boost::optional< std::string > v3_Description, boost::optional< std::string > v4_Location, boost::optional< std::string > v5_Purpose, boost::optional< std::string > v6_IntendedUse, boost::optional< std::string > v7_Scope, boost::optional< std::string > v8_Revision, ::Ifc4::IfcActorSelect* v9_DocumentOwner, boost::optional< IfcEntityList::ptr > v10_Editors, boost::optional< std::string > v11_CreationTime, boost::optional< std::string > v12_LastRevisionTime, boost::optional< std::string > v13_ElectronicFormat, boost::optional< std::string > v14_ValidFrom, boost::optional< std::string > v15_ValidUntil, boost::optional< ::Ifc4::IfcDocumentConfidentialityEnum::Value > v16_Confidentiality, boost::optional< ::Ifc4::IfcDocumentStatusEnum::Value > v17_Status);
    typedef IfcTemplatedEntityList< IfcDocumentInformation > list;
};
class IFC_PARSE_API IfcDocumentInformationRelationship : public IfcResourceLevelRelationship {
public:
    ::Ifc4::IfcDocumentInformation* RelatingDocument() const;
    void setRelatingDocument(::Ifc4::IfcDocumentInformation* v);
    IfcTemplatedEntityList< ::Ifc4::IfcDocumentInformation >::ptr RelatedDocuments() const;
    void setRelatedDocuments(IfcTemplatedEntityList< ::Ifc4::IfcDocumentInformation >::ptr v);
    bool hasRelationshipType() const;
    std::string RelationshipType() const;
    void setRelationshipType(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDocumentInformationRelationship (IfcEntityInstanceData* e);
    IfcDocumentInformationRelationship (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4::IfcDocumentInformation* v3_RelatingDocument, IfcTemplatedEntityList< ::Ifc4::IfcDocumentInformation >::ptr v4_RelatedDocuments, boost::optional< std::string > v5_RelationshipType);
    typedef IfcTemplatedEntityList< IfcDocumentInformationRelationship > list;
};
class IFC_PARSE_API IfcDocumentReference : public IfcExternalReference {
public:
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
    bool hasReferencedDocument() const;
    ::Ifc4::IfcDocumentInformation* ReferencedDocument() const;
    void setReferencedDocument(::Ifc4::IfcDocumentInformation* v);
        IfcTemplatedEntityList< IfcRelAssociatesDocument >::ptr DocumentRefForObjects() const; // INVERSE IfcRelAssociatesDocument::RelatingDocument
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDocumentReference (IfcEntityInstanceData* e);
    IfcDocumentReference (boost::optional< std::string > v1_Location, boost::optional< std::string > v2_Identification, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4::IfcDocumentInformation* v5_ReferencedDocument);
    typedef IfcTemplatedEntityList< IfcDocumentReference > list;
};
class IFC_PARSE_API IfcEdge : public IfcTopologicalRepresentationItem {
public:
    ::Ifc4::IfcVertex* EdgeStart() const;
    void setEdgeStart(::Ifc4::IfcVertex* v);
    ::Ifc4::IfcVertex* EdgeEnd() const;
    void setEdgeEnd(::Ifc4::IfcVertex* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcEdge (IfcEntityInstanceData* e);
    IfcEdge (::Ifc4::IfcVertex* v1_EdgeStart, ::Ifc4::IfcVertex* v2_EdgeEnd);
    typedef IfcTemplatedEntityList< IfcEdge > list;
};
class IFC_PARSE_API IfcEdgeCurve : public IfcEdge {
public:
    ::Ifc4::IfcCurve* EdgeGeometry() const;
    void setEdgeGeometry(::Ifc4::IfcCurve* v);
    bool SameSense() const;
    void setSameSense(bool v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcEdgeCurve (IfcEntityInstanceData* e);
    IfcEdgeCurve (::Ifc4::IfcVertex* v1_EdgeStart, ::Ifc4::IfcVertex* v2_EdgeEnd, ::Ifc4::IfcCurve* v3_EdgeGeometry, bool v4_SameSense);
    typedef IfcTemplatedEntityList< IfcEdgeCurve > list;
};
class IFC_PARSE_API IfcEventTime : public IfcSchedulingTime {
public:
    bool hasActualDate() const;
    std::string ActualDate() const;
    void setActualDate(std::string v);
    bool hasEarlyDate() const;
    std::string EarlyDate() const;
    void setEarlyDate(std::string v);
    bool hasLateDate() const;
    std::string LateDate() const;
    void setLateDate(std::string v);
    bool hasScheduleDate() const;
    std::string ScheduleDate() const;
    void setScheduleDate(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcEventTime (IfcEntityInstanceData* e);
    IfcEventTime (boost::optional< std::string > v1_Name, boost::optional< ::Ifc4::IfcDataOriginEnum::Value > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin, boost::optional< std::string > v4_ActualDate, boost::optional< std::string > v5_EarlyDate, boost::optional< std::string > v6_LateDate, boost::optional< std::string > v7_ScheduleDate);
    typedef IfcTemplatedEntityList< IfcEventTime > list;
};

class IFC_PARSE_API IfcExtendedProperties : public IfcPropertyAbstraction {
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::IfcProperty >::ptr Properties() const;
    void setProperties(IfcTemplatedEntityList< ::Ifc4::IfcProperty >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcExtendedProperties (IfcEntityInstanceData* e);
    IfcExtendedProperties (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, IfcTemplatedEntityList< ::Ifc4::IfcProperty >::ptr v3_Properties);
    typedef IfcTemplatedEntityList< IfcExtendedProperties > list;
};
class IFC_PARSE_API IfcExternalReferenceRelationship : public IfcResourceLevelRelationship {
public:
    ::Ifc4::IfcExternalReference* RelatingReference() const;
    void setRelatingReference(::Ifc4::IfcExternalReference* v);
    IfcEntityList::ptr RelatedResourceObjects() const;
    void setRelatedResourceObjects(IfcEntityList::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcExternalReferenceRelationship (IfcEntityInstanceData* e);
    IfcExternalReferenceRelationship (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4::IfcExternalReference* v3_RelatingReference, IfcEntityList::ptr v4_RelatedResourceObjects);
    typedef IfcTemplatedEntityList< IfcExternalReferenceRelationship > list;
};
class IFC_PARSE_API IfcFace : public IfcTopologicalRepresentationItem {
public:
    IfcTemplatedEntityList< ::Ifc4::IfcFaceBound >::ptr Bounds() const;
    void setBounds(IfcTemplatedEntityList< ::Ifc4::IfcFaceBound >::ptr v);
        IfcTemplatedEntityList< IfcTextureMap >::ptr HasTextureMaps() const; // INVERSE IfcTextureMap::MappedTo
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFace (IfcEntityInstanceData* e);
    IfcFace (IfcTemplatedEntityList< ::Ifc4::IfcFaceBound >::ptr v1_Bounds);
    typedef IfcTemplatedEntityList< IfcFace > list;
};
class IFC_PARSE_API IfcFaceBound : public IfcTopologicalRepresentationItem {
public:
    ::Ifc4::IfcLoop* Bound() const;
    void setBound(::Ifc4::IfcLoop* v);
    bool Orientation() const;
    void setOrientation(bool v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFaceBound (IfcEntityInstanceData* e);
    IfcFaceBound (::Ifc4::IfcLoop* v1_Bound, bool v2_Orientation);
    typedef IfcTemplatedEntityList< IfcFaceBound > list;
};
class IFC_PARSE_API IfcFaceOuterBound : public IfcFaceBound {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFaceOuterBound (IfcEntityInstanceData* e);
    IfcFaceOuterBound (::Ifc4::IfcLoop* v1_Bound, bool v2_Orientation);
    typedef IfcTemplatedEntityList< IfcFaceOuterBound > list;
};
class IFC_PARSE_API IfcFaceSurface : public IfcFace {
public:
    ::Ifc4::IfcSurface* FaceSurface() const;
    void setFaceSurface(::Ifc4::IfcSurface* v);
    bool SameSense() const;
    void setSameSense(bool v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFaceSurface (IfcEntityInstanceData* e);
    IfcFaceSurface (IfcTemplatedEntityList< ::Ifc4::IfcFaceBound >::ptr v1_Bounds, ::Ifc4::IfcSurface* v2_FaceSurface, bool v3_SameSense);
    typedef IfcTemplatedEntityList< IfcFaceSurface > list;
};
class IFC_PARSE_API IfcFailureConnectionCondition : public IfcStructuralConnectionCondition {
public:
    bool hasTensionFailureX() const;
    double TensionFailureX() const;
    void setTensionFailureX(double v);
    bool hasTensionFailureY() const;
    double TensionFailureY() const;
    void setTensionFailureY(double v);
    bool hasTensionFailureZ() const;
    double TensionFailureZ() const;
    void setTensionFailureZ(double v);
    bool hasCompressionFailureX() const;
    double CompressionFailureX() const;
    void setCompressionFailureX(double v);
    bool hasCompressionFailureY() const;
    double CompressionFailureY() const;
    void setCompressionFailureY(double v);
    bool hasCompressionFailureZ() const;
    double CompressionFailureZ() const;
    void setCompressionFailureZ(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFailureConnectionCondition (IfcEntityInstanceData* e);
    IfcFailureConnectionCondition (boost::optional< std::string > v1_Name, boost::optional< double > v2_TensionFailureX, boost::optional< double > v3_TensionFailureY, boost::optional< double > v4_TensionFailureZ, boost::optional< double > v5_CompressionFailureX, boost::optional< double > v6_CompressionFailureY, boost::optional< double > v7_CompressionFailureZ);
    typedef IfcTemplatedEntityList< IfcFailureConnectionCondition > list;
};
class IFC_PARSE_API IfcFillAreaStyle : public IfcPresentationStyle {
public:
    IfcEntityList::ptr FillStyles() const;
    void setFillStyles(IfcEntityList::ptr v);
    bool hasModelorDraughting() const;
    bool ModelorDraughting() const;
    void setModelorDraughting(bool v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFillAreaStyle (IfcEntityInstanceData* e);
    IfcFillAreaStyle (boost::optional< std::string > v1_Name, IfcEntityList::ptr v2_FillStyles, boost::optional< bool > v3_ModelorDraughting);
    typedef IfcTemplatedEntityList< IfcFillAreaStyle > list;
};
class IFC_PARSE_API IfcGeometricRepresentationContext : public IfcRepresentationContext {
public:
    int CoordinateSpaceDimension() const;
    void setCoordinateSpaceDimension(int v);
    bool hasPrecision() const;
    double Precision() const;
    void setPrecision(double v);
    ::Ifc4::IfcAxis2Placement* WorldCoordinateSystem() const;
    void setWorldCoordinateSystem(::Ifc4::IfcAxis2Placement* v);
    bool hasTrueNorth() const;
    ::Ifc4::IfcDirection* TrueNorth() const;
    void setTrueNorth(::Ifc4::IfcDirection* v);
        IfcTemplatedEntityList< IfcGeometricRepresentationSubContext >::ptr HasSubContexts() const; // INVERSE IfcGeometricRepresentationSubContext::ParentContext
    IfcTemplatedEntityList< IfcCoordinateOperation >::ptr HasCoordinateOperation() const; // INVERSE IfcCoordinateOperation::SourceCRS
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcGeometricRepresentationContext (IfcEntityInstanceData* e);
    IfcGeometricRepresentationContext (boost::optional< std::string > v1_ContextIdentifier, boost::optional< std::string > v2_ContextType, int v3_CoordinateSpaceDimension, boost::optional< double > v4_Precision, ::Ifc4::IfcAxis2Placement* v5_WorldCoordinateSystem, ::Ifc4::IfcDirection* v6_TrueNorth);
    typedef IfcTemplatedEntityList< IfcGeometricRepresentationContext > list;
};
class IFC_PARSE_API IfcGeometricRepresentationItem : public IfcRepresentationItem {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcGeometricRepresentationItem (IfcEntityInstanceData* e);
    IfcGeometricRepresentationItem ();
    typedef IfcTemplatedEntityList< IfcGeometricRepresentationItem > list;
};
class IFC_PARSE_API IfcGeometricRepresentationSubContext : public IfcGeometricRepresentationContext {
public:
    ::Ifc4::IfcGeometricRepresentationContext* ParentContext() const;
    void setParentContext(::Ifc4::IfcGeometricRepresentationContext* v);
    bool hasTargetScale() const;
    double TargetScale() const;
    void setTargetScale(double v);
    ::Ifc4::IfcGeometricProjectionEnum::Value TargetView() const;
    void setTargetView(::Ifc4::IfcGeometricProjectionEnum::Value v);
    bool hasUserDefinedTargetView() const;
    std::string UserDefinedTargetView() const;
    void setUserDefinedTargetView(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcGeometricRepresentationSubContext (IfcEntityInstanceData* e);
    IfcGeometricRepresentationSubContext (boost::optional< std::string > v1_ContextIdentifier, boost::optional< std::string > v2_ContextType, ::Ifc4::IfcGeometricRepresentationContext* v7_ParentContext, boost::optional< double > v8_TargetScale, ::Ifc4::IfcGeometricProjectionEnum::Value v9_TargetView, boost::optional< std::string > v10_UserDefinedTargetView);
    typedef IfcTemplatedEntityList< IfcGeometricRepresentationSubContext > list;
};
class IFC_PARSE_API IfcGeometricSet : public IfcGeometricRepresentationItem {
public:
    IfcEntityList::ptr Elements() const;
    void setElements(IfcEntityList::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcGeometricSet (IfcEntityInstanceData* e);
    IfcGeometricSet (IfcEntityList::ptr v1_Elements);
    typedef IfcTemplatedEntityList< IfcGeometricSet > list;
};
class IFC_PARSE_API IfcGridPlacement : public IfcObjectPlacement {
public:
    ::Ifc4::IfcVirtualGridIntersection* PlacementLocation() const;
    void setPlacementLocation(::Ifc4::IfcVirtualGridIntersection* v);
    bool hasPlacementRefDirection() const;
    ::Ifc4::IfcGridPlacementDirectionSelect* PlacementRefDirection() const;
    void setPlacementRefDirection(::Ifc4::IfcGridPlacementDirectionSelect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcGridPlacement (IfcEntityInstanceData* e);
    IfcGridPlacement (::Ifc4::IfcVirtualGridIntersection* v1_PlacementLocation, ::Ifc4::IfcGridPlacementDirectionSelect* v2_PlacementRefDirection);
    typedef IfcTemplatedEntityList< IfcGridPlacement > list;
};
class IFC_PARSE_API IfcHalfSpaceSolid : public IfcGeometricRepresentationItem {
public:
    ::Ifc4::IfcSurface* BaseSurface() const;
    void setBaseSurface(::Ifc4::IfcSurface* v);
    bool AgreementFlag() const;
    void setAgreementFlag(bool v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcHalfSpaceSolid (IfcEntityInstanceData* e);
    IfcHalfSpaceSolid (::Ifc4::IfcSurface* v1_BaseSurface, bool v2_AgreementFlag);
    typedef IfcTemplatedEntityList< IfcHalfSpaceSolid > list;
};
class IFC_PARSE_API IfcImageTexture : public IfcSurfaceTexture {
public:
    std::string URLReference() const;
    void setURLReference(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcImageTexture (IfcEntityInstanceData* e);
    IfcImageTexture (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, std::string v6_URLReference);
    typedef IfcTemplatedEntityList< IfcImageTexture > list;
};

class IFC_PARSE_API IfcIndexedColourMap : public IfcPresentationItem {
public:
    ::Ifc4::IfcTessellatedFaceSet* MappedTo() const;
    void setMappedTo(::Ifc4::IfcTessellatedFaceSet* v);
    bool hasOpacity() const;
    double Opacity() const;
    void setOpacity(double v);
    ::Ifc4::IfcColourRgbList* Colours() const;
    void setColours(::Ifc4::IfcColourRgbList* v);
    std::vector< int > /*[1:?]*/ ColourIndex() const;
    void setColourIndex(std::vector< int > /*[1:?]*/ v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcIndexedColourMap (IfcEntityInstanceData* e);
    IfcIndexedColourMap (::Ifc4::IfcTessellatedFaceSet* v1_MappedTo, boost::optional< double > v2_Opacity, ::Ifc4::IfcColourRgbList* v3_Colours, std::vector< int > /*[1:?]*/ v4_ColourIndex);
    typedef IfcTemplatedEntityList< IfcIndexedColourMap > list;
};

class IFC_PARSE_API IfcIndexedTextureMap : public IfcTextureCoordinate {
public:
    ::Ifc4::IfcTessellatedFaceSet* MappedTo() const;
    void setMappedTo(::Ifc4::IfcTessellatedFaceSet* v);
    ::Ifc4::IfcTextureVertexList* TexCoords() const;
    void setTexCoords(::Ifc4::IfcTextureVertexList* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcIndexedTextureMap (IfcEntityInstanceData* e);
    IfcIndexedTextureMap (IfcTemplatedEntityList< ::Ifc4::IfcSurfaceTexture >::ptr v1_Maps, ::Ifc4::IfcTessellatedFaceSet* v2_MappedTo, ::Ifc4::IfcTextureVertexList* v3_TexCoords);
    typedef IfcTemplatedEntityList< IfcIndexedTextureMap > list;
};

class IFC_PARSE_API IfcIndexedTriangleTextureMap : public IfcIndexedTextureMap {
public:
    bool hasTexCoordIndex() const;
    std::vector< std::vector< int > > TexCoordIndex() const;
    void setTexCoordIndex(std::vector< std::vector< int > > v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcIndexedTriangleTextureMap (IfcEntityInstanceData* e);
    IfcIndexedTriangleTextureMap (IfcTemplatedEntityList< ::Ifc4::IfcSurfaceTexture >::ptr v1_Maps, ::Ifc4::IfcTessellatedFaceSet* v2_MappedTo, ::Ifc4::IfcTextureVertexList* v3_TexCoords, boost::optional< std::vector< std::vector< int > > > v4_TexCoordIndex);
    typedef IfcTemplatedEntityList< IfcIndexedTriangleTextureMap > list;
};
class IFC_PARSE_API IfcIrregularTimeSeries : public IfcTimeSeries {
public:
    IfcTemplatedEntityList< ::Ifc4::IfcIrregularTimeSeriesValue >::ptr Values() const;
    void setValues(IfcTemplatedEntityList< ::Ifc4::IfcIrregularTimeSeriesValue >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcIrregularTimeSeries (IfcEntityInstanceData* e);
    IfcIrregularTimeSeries (std::string v1_Name, boost::optional< std::string > v2_Description, std::string v3_StartTime, std::string v4_EndTime, ::Ifc4::IfcTimeSeriesDataTypeEnum::Value v5_TimeSeriesDataType, ::Ifc4::IfcDataOriginEnum::Value v6_DataOrigin, boost::optional< std::string > v7_UserDefinedDataOrigin, ::Ifc4::IfcUnit* v8_Unit, IfcTemplatedEntityList< ::Ifc4::IfcIrregularTimeSeriesValue >::ptr v9_Values);
    typedef IfcTemplatedEntityList< IfcIrregularTimeSeries > list;
};
class IFC_PARSE_API IfcLagTime : public IfcSchedulingTime {
public:
    ::Ifc4::IfcTimeOrRatioSelect* LagValue() const;
    void setLagValue(::Ifc4::IfcTimeOrRatioSelect* v);
    ::Ifc4::IfcTaskDurationEnum::Value DurationType() const;
    void setDurationType(::Ifc4::IfcTaskDurationEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLagTime (IfcEntityInstanceData* e);
    IfcLagTime (boost::optional< std::string > v1_Name, boost::optional< ::Ifc4::IfcDataOriginEnum::Value > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin, ::Ifc4::IfcTimeOrRatioSelect* v4_LagValue, ::Ifc4::IfcTaskDurationEnum::Value v5_DurationType);
    typedef IfcTemplatedEntityList< IfcLagTime > list;
};
class IFC_PARSE_API IfcLightSource : public IfcGeometricRepresentationItem {
public:
    bool hasName() const;
    std::string Name() const;
    void setName(std::string v);
    ::Ifc4::IfcColourRgb* LightColour() const;
    void setLightColour(::Ifc4::IfcColourRgb* v);
    bool hasAmbientIntensity() const;
    double AmbientIntensity() const;
    void setAmbientIntensity(double v);
    bool hasIntensity() const;
    double Intensity() const;
    void setIntensity(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLightSource (IfcEntityInstanceData* e);
    IfcLightSource (boost::optional< std::string > v1_Name, ::Ifc4::IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity);
    typedef IfcTemplatedEntityList< IfcLightSource > list;
};
class IFC_PARSE_API IfcLightSourceAmbient : public IfcLightSource {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLightSourceAmbient (IfcEntityInstanceData* e);
    IfcLightSourceAmbient (boost::optional< std::string > v1_Name, ::Ifc4::IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity);
    typedef IfcTemplatedEntityList< IfcLightSourceAmbient > list;
};
class IFC_PARSE_API IfcLightSourceDirectional : public IfcLightSource {
public:
    ::Ifc4::IfcDirection* Orientation() const;
    void setOrientation(::Ifc4::IfcDirection* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLightSourceDirectional (IfcEntityInstanceData* e);
    IfcLightSourceDirectional (boost::optional< std::string > v1_Name, ::Ifc4::IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity, ::Ifc4::IfcDirection* v5_Orientation);
    typedef IfcTemplatedEntityList< IfcLightSourceDirectional > list;
};
class IFC_PARSE_API IfcLightSourceGoniometric : public IfcLightSource {
public:
    ::Ifc4::IfcAxis2Placement3D* Position() const;
    void setPosition(::Ifc4::IfcAxis2Placement3D* v);
    bool hasColourAppearance() const;
    ::Ifc4::IfcColourRgb* ColourAppearance() const;
    void setColourAppearance(::Ifc4::IfcColourRgb* v);
    double ColourTemperature() const;
    void setColourTemperature(double v);
    double LuminousFlux() const;
    void setLuminousFlux(double v);
    ::Ifc4::IfcLightEmissionSourceEnum::Value LightEmissionSource() const;
    void setLightEmissionSource(::Ifc4::IfcLightEmissionSourceEnum::Value v);
    ::Ifc4::IfcLightDistributionDataSourceSelect* LightDistributionDataSource() const;
    void setLightDistributionDataSource(::Ifc4::IfcLightDistributionDataSourceSelect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLightSourceGoniometric (IfcEntityInstanceData* e);
    IfcLightSourceGoniometric (boost::optional< std::string > v1_Name, ::Ifc4::IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity, ::Ifc4::IfcAxis2Placement3D* v5_Position, ::Ifc4::IfcColourRgb* v6_ColourAppearance, double v7_ColourTemperature, double v8_LuminousFlux, ::Ifc4::IfcLightEmissionSourceEnum::Value v9_LightEmissionSource, ::Ifc4::IfcLightDistributionDataSourceSelect* v10_LightDistributionDataSource);
    typedef IfcTemplatedEntityList< IfcLightSourceGoniometric > list;
};
class IFC_PARSE_API IfcLightSourcePositional : public IfcLightSource {
public:
    ::Ifc4::IfcCartesianPoint* Position() const;
    void setPosition(::Ifc4::IfcCartesianPoint* v);
    double Radius() const;
    void setRadius(double v);
    double ConstantAttenuation() const;
    void setConstantAttenuation(double v);
    double DistanceAttenuation() const;
    void setDistanceAttenuation(double v);
    double QuadricAttenuation() const;
    void setQuadricAttenuation(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLightSourcePositional (IfcEntityInstanceData* e);
    IfcLightSourcePositional (boost::optional< std::string > v1_Name, ::Ifc4::IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity, ::Ifc4::IfcCartesianPoint* v5_Position, double v6_Radius, double v7_ConstantAttenuation, double v8_DistanceAttenuation, double v9_QuadricAttenuation);
    typedef IfcTemplatedEntityList< IfcLightSourcePositional > list;
};
class IFC_PARSE_API IfcLightSourceSpot : public IfcLightSourcePositional {
public:
    ::Ifc4::IfcDirection* Orientation() const;
    void setOrientation(::Ifc4::IfcDirection* v);
    bool hasConcentrationExponent() const;
    double ConcentrationExponent() const;
    void setConcentrationExponent(double v);
    double SpreadAngle() const;
    void setSpreadAngle(double v);
    double BeamWidthAngle() const;
    void setBeamWidthAngle(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLightSourceSpot (IfcEntityInstanceData* e);
    IfcLightSourceSpot (boost::optional< std::string > v1_Name, ::Ifc4::IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity, ::Ifc4::IfcCartesianPoint* v5_Position, double v6_Radius, double v7_ConstantAttenuation, double v8_DistanceAttenuation, double v9_QuadricAttenuation, ::Ifc4::IfcDirection* v10_Orientation, boost::optional< double > v11_ConcentrationExponent, double v12_SpreadAngle, double v13_BeamWidthAngle);
    typedef IfcTemplatedEntityList< IfcLightSourceSpot > list;
};
class IFC_PARSE_API IfcLocalPlacement : public IfcObjectPlacement {
public:
    bool hasPlacementRelTo() const;
    ::Ifc4::IfcObjectPlacement* PlacementRelTo() const;
    void setPlacementRelTo(::Ifc4::IfcObjectPlacement* v);
    ::Ifc4::IfcAxis2Placement* RelativePlacement() const;
    void setRelativePlacement(::Ifc4::IfcAxis2Placement* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLocalPlacement (IfcEntityInstanceData* e);
    IfcLocalPlacement (::Ifc4::IfcObjectPlacement* v1_PlacementRelTo, ::Ifc4::IfcAxis2Placement* v2_RelativePlacement);
    typedef IfcTemplatedEntityList< IfcLocalPlacement > list;
};
class IFC_PARSE_API IfcLoop : public IfcTopologicalRepresentationItem {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLoop (IfcEntityInstanceData* e);
    IfcLoop ();
    typedef IfcTemplatedEntityList< IfcLoop > list;
};
class IFC_PARSE_API IfcMappedItem : public IfcRepresentationItem {
public:
    ::Ifc4::IfcRepresentationMap* MappingSource() const;
    void setMappingSource(::Ifc4::IfcRepresentationMap* v);
    ::Ifc4::IfcCartesianTransformationOperator* MappingTarget() const;
    void setMappingTarget(::Ifc4::IfcCartesianTransformationOperator* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMappedItem (IfcEntityInstanceData* e);
    IfcMappedItem (::Ifc4::IfcRepresentationMap* v1_MappingSource, ::Ifc4::IfcCartesianTransformationOperator* v2_MappingTarget);
    typedef IfcTemplatedEntityList< IfcMappedItem > list;
};
class IFC_PARSE_API IfcMaterial : public IfcMaterialDefinition {
public:
    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);
        IfcTemplatedEntityList< IfcMaterialDefinitionRepresentation >::ptr HasRepresentation() const; // INVERSE IfcMaterialDefinitionRepresentation::RepresentedMaterial
    IfcTemplatedEntityList< IfcMaterialRelationship >::ptr IsRelatedWith() const; // INVERSE IfcMaterialRelationship::RelatedMaterials
    IfcTemplatedEntityList< IfcMaterialRelationship >::ptr RelatesTo() const; // INVERSE IfcMaterialRelationship::RelatingMaterial
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMaterial (IfcEntityInstanceData* e);
    IfcMaterial (std::string v1_Name, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_Category);
    typedef IfcTemplatedEntityList< IfcMaterial > list;
};
class IFC_PARSE_API IfcMaterialConstituent : 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);
    ::Ifc4::IfcMaterial* Material() const;
    void setMaterial(::Ifc4::IfcMaterial* v);
    bool hasFraction() const;
    double Fraction() const;
    void setFraction(double v);
    bool hasCategory() const;
    std::string Category() const;
    void setCategory(std::string v);
        IfcTemplatedEntityList< IfcMaterialConstituentSet >::ptr ToMaterialConstituentSet() const; // INVERSE IfcMaterialConstituentSet::MaterialConstituents
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMaterialConstituent (IfcEntityInstanceData* e);
    IfcMaterialConstituent (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4::IfcMaterial* v3_Material, boost::optional< double > v4_Fraction, boost::optional< std::string > v5_Category);
    typedef IfcTemplatedEntityList< IfcMaterialConstituent > list;
};
class IFC_PARSE_API IfcMaterialConstituentSet : 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 hasMaterialConstituents() const;
    IfcTemplatedEntityList< ::Ifc4::IfcMaterialConstituent >::ptr MaterialConstituents() const;
    void setMaterialConstituents(IfcTemplatedEntityList< ::Ifc4::IfcMaterialConstituent >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMaterialConstituentSet (IfcEntityInstanceData* e);
    IfcMaterialConstituentSet (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcMaterialConstituent >::ptr > v3_MaterialConstituents);
    typedef IfcTemplatedEntityList< IfcMaterialConstituentSet > list;
};
class IFC_PARSE_API IfcMaterialDefinitionRepresentation : public IfcProductRepresentation {
public:
    ::Ifc4::IfcMaterial* RepresentedMaterial() const;
    void setRepresentedMaterial(::Ifc4::IfcMaterial* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMaterialDefinitionRepresentation (IfcEntityInstanceData* e);
    IfcMaterialDefinitionRepresentation (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, IfcTemplatedEntityList< ::Ifc4::IfcRepresentation >::ptr v3_Representations, ::Ifc4::IfcMaterial* v4_RepresentedMaterial);
    typedef IfcTemplatedEntityList< IfcMaterialDefinitionRepresentation > list;
};
class IFC_PARSE_API IfcMaterialLayerSetUsage : public IfcMaterialUsageDefinition {
public:
    ::Ifc4::IfcMaterialLayerSet* ForLayerSet() const;
    void setForLayerSet(::Ifc4::IfcMaterialLayerSet* v);
    ::Ifc4::IfcLayerSetDirectionEnum::Value LayerSetDirection() const;
    void setLayerSetDirection(::Ifc4::IfcLayerSetDirectionEnum::Value v);
    ::Ifc4::IfcDirectionSenseEnum::Value DirectionSense() const;
    void setDirectionSense(::Ifc4::IfcDirectionSenseEnum::Value v);
    double OffsetFromReferenceLine() const;
    void setOffsetFromReferenceLine(double v);
    bool hasReferenceExtent() const;
    double ReferenceExtent() const;
    void setReferenceExtent(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMaterialLayerSetUsage (IfcEntityInstanceData* e);
    IfcMaterialLayerSetUsage (::Ifc4::IfcMaterialLayerSet* v1_ForLayerSet, ::Ifc4::IfcLayerSetDirectionEnum::Value v2_LayerSetDirection, ::Ifc4::IfcDirectionSenseEnum::Value v3_DirectionSense, double v4_OffsetFromReferenceLine, boost::optional< double > v5_ReferenceExtent);
    typedef IfcTemplatedEntityList< IfcMaterialLayerSetUsage > list;
};
class IFC_PARSE_API IfcMaterialProfileSetUsage : public IfcMaterialUsageDefinition {
public:
    ::Ifc4::IfcMaterialProfileSet* ForProfileSet() const;
    void setForProfileSet(::Ifc4::IfcMaterialProfileSet* v);
    bool hasCardinalPoint() const;
    int CardinalPoint() const;
    void setCardinalPoint(int v);
    bool hasReferenceExtent() const;
    double ReferenceExtent() const;
    void setReferenceExtent(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMaterialProfileSetUsage (IfcEntityInstanceData* e);
    IfcMaterialProfileSetUsage (::Ifc4::IfcMaterialProfileSet* v1_ForProfileSet, boost::optional< int > v2_CardinalPoint, boost::optional< double > v3_ReferenceExtent);
    typedef IfcTemplatedEntityList< IfcMaterialProfileSetUsage > list;
};
class IFC_PARSE_API IfcMaterialProfileSetUsageTapering : public IfcMaterialProfileSetUsage {
public:
    ::Ifc4::IfcMaterialProfileSet* ForProfileEndSet() const;
    void setForProfileEndSet(::Ifc4::IfcMaterialProfileSet* v);
    bool hasCardinalEndPoint() const;
    int CardinalEndPoint() const;
    void setCardinalEndPoint(int v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMaterialProfileSetUsageTapering (IfcEntityInstanceData* e);
    IfcMaterialProfileSetUsageTapering (::Ifc4::IfcMaterialProfileSet* v1_ForProfileSet, boost::optional< int > v2_CardinalPoint, boost::optional< double > v3_ReferenceExtent, ::Ifc4::IfcMaterialProfileSet* v4_ForProfileEndSet, boost::optional< int > v5_CardinalEndPoint);
    typedef IfcTemplatedEntityList< IfcMaterialProfileSetUsageTapering > list;
};
class IFC_PARSE_API IfcMaterialProperties : public IfcExtendedProperties {
public:
    ::Ifc4::IfcMaterialDefinition* Material() const;
    void setMaterial(::Ifc4::IfcMaterialDefinition* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMaterialProperties (IfcEntityInstanceData* e);
    IfcMaterialProperties (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, IfcTemplatedEntityList< ::Ifc4::IfcProperty >::ptr v3_Properties, ::Ifc4::IfcMaterialDefinition* v4_Material);
    typedef IfcTemplatedEntityList< IfcMaterialProperties > list;
};
class IFC_PARSE_API IfcMaterialRelationship : public IfcResourceLevelRelationship {
public:
    ::Ifc4::IfcMaterial* RelatingMaterial() const;
    void setRelatingMaterial(::Ifc4::IfcMaterial* v);
    IfcTemplatedEntityList< ::Ifc4::IfcMaterial >::ptr RelatedMaterials() const;
    void setRelatedMaterials(IfcTemplatedEntityList< ::Ifc4::IfcMaterial >::ptr v);
    bool hasExpression() const;
    std::string Expression() const;
    void setExpression(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMaterialRelationship (IfcEntityInstanceData* e);
    IfcMaterialRelationship (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4::IfcMaterial* v3_RelatingMaterial, IfcTemplatedEntityList< ::Ifc4::IfcMaterial >::ptr v4_RelatedMaterials, boost::optional< std::string > v5_Expression);
    typedef IfcTemplatedEntityList< IfcMaterialRelationship > list;
};
class IFC_PARSE_API IfcMirroredProfileDef : public IfcDerivedProfileDef {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMirroredProfileDef (IfcEntityInstanceData* e);
    IfcMirroredProfileDef (::Ifc4::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4::IfcProfileDef* v3_ParentProfile, boost::optional< std::string > v5_Label);
    typedef IfcTemplatedEntityList< IfcMirroredProfileDef > list;
};
class IFC_PARSE_API IfcObjectDefinition : public IfcRoot {
public:
        IfcTemplatedEntityList< IfcRelAssigns >::ptr HasAssignments() const; // INVERSE IfcRelAssigns::RelatedObjects
    IfcTemplatedEntityList< IfcRelNests >::ptr Nests() const; // INVERSE IfcRelNests::RelatedObjects
    IfcTemplatedEntityList< IfcRelNests >::ptr IsNestedBy() const; // INVERSE IfcRelNests::RelatingObject
    IfcTemplatedEntityList< IfcRelDeclares >::ptr HasContext() const; // INVERSE IfcRelDeclares::RelatedDefinitions
    IfcTemplatedEntityList< IfcRelAggregates >::ptr IsDecomposedBy() const; // INVERSE IfcRelAggregates::RelatingObject
    IfcTemplatedEntityList< IfcRelAggregates >::ptr Decomposes() const; // INVERSE IfcRelAggregates::RelatedObjects
    IfcTemplatedEntityList< IfcRelAssociates >::ptr HasAssociations() const; // INVERSE IfcRelAssociates::RelatedObjects
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcObjectDefinition (IfcEntityInstanceData* e);
    IfcObjectDefinition (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description);
    typedef IfcTemplatedEntityList< IfcObjectDefinition > list;
};
class IFC_PARSE_API IfcOpenShell : public IfcConnectedFaceSet {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcOpenShell (IfcEntityInstanceData* e);
    IfcOpenShell (IfcTemplatedEntityList< ::Ifc4::IfcFace >::ptr v1_CfsFaces);
    typedef IfcTemplatedEntityList< IfcOpenShell > list;
};
class IFC_PARSE_API IfcOrganizationRelationship : public IfcResourceLevelRelationship {
public:
    ::Ifc4::IfcOrganization* RelatingOrganization() const;
    void setRelatingOrganization(::Ifc4::IfcOrganization* v);
    IfcTemplatedEntityList< ::Ifc4::IfcOrganization >::ptr RelatedOrganizations() const;
    void setRelatedOrganizations(IfcTemplatedEntityList< ::Ifc4::IfcOrganization >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcOrganizationRelationship (IfcEntityInstanceData* e);
    IfcOrganizationRelationship (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4::IfcOrganization* v3_RelatingOrganization, IfcTemplatedEntityList< ::Ifc4::IfcOrganization >::ptr v4_RelatedOrganizations);
    typedef IfcTemplatedEntityList< IfcOrganizationRelationship > list;
};
class IFC_PARSE_API IfcOrientedEdge : public IfcEdge {
public:
    ::Ifc4::IfcEdge* EdgeElement() const;
    void setEdgeElement(::Ifc4::IfcEdge* v);
    bool Orientation() const;
    void setOrientation(bool v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcOrientedEdge (IfcEntityInstanceData* e);
    IfcOrientedEdge (::Ifc4::IfcEdge* v3_EdgeElement, bool v4_Orientation);
    typedef IfcTemplatedEntityList< IfcOrientedEdge > list;
};
class IFC_PARSE_API IfcParameterizedProfileDef : public IfcProfileDef {
public:
    bool hasPosition() const;
    ::Ifc4::IfcAxis2Placement2D* Position() const;
    void setPosition(::Ifc4::IfcAxis2Placement2D* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcParameterizedProfileDef (IfcEntityInstanceData* e);
    IfcParameterizedProfileDef (::Ifc4::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4::IfcAxis2Placement2D* v3_Position);
    typedef IfcTemplatedEntityList< IfcParameterizedProfileDef > list;
};
class IFC_PARSE_API IfcPath : public IfcTopologicalRepresentationItem {
public:
    IfcTemplatedEntityList< ::Ifc4::IfcOrientedEdge >::ptr EdgeList() const;
    void setEdgeList(IfcTemplatedEntityList< ::Ifc4::IfcOrientedEdge >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPath (IfcEntityInstanceData* e);
    IfcPath (IfcTemplatedEntityList< ::Ifc4::IfcOrientedEdge >::ptr v1_EdgeList);
    typedef IfcTemplatedEntityList< IfcPath > list;
};
class IFC_PARSE_API IfcPhysicalComplexQuantity : public IfcPhysicalQuantity {
public:
    IfcTemplatedEntityList< ::Ifc4::IfcPhysicalQuantity >::ptr HasQuantities() const;
    void setHasQuantities(IfcTemplatedEntityList< ::Ifc4::IfcPhysicalQuantity >::ptr v);
    std::string Discrimination() const;
    void setDiscrimination(std::string v);
    bool hasQuality() const;
    std::string Quality() const;
    void setQuality(std::string v);
    bool hasUsage() const;
    std::string Usage() const;
    void setUsage(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPhysicalComplexQuantity (IfcEntityInstanceData* e);
    IfcPhysicalComplexQuantity (std::string v1_Name, boost::optional< std::string > v2_Description, IfcTemplatedEntityList< ::Ifc4::IfcPhysicalQuantity >::ptr v3_HasQuantities, std::string v4_Discrimination, boost::optional< std::string > v5_Quality, boost::optional< std::string > v6_Usage);
    typedef IfcTemplatedEntityList< IfcPhysicalComplexQuantity > list;
};
class IFC_PARSE_API IfcPixelTexture : public IfcSurfaceTexture {
public:
    int Width() const;
    void setWidth(int v);
    int Height() const;
    void setHeight(int v);
    int ColourComponents() const;
    void setColourComponents(int v);
    std::vector< boost::dynamic_bitset<> > /*[1:?]*/ Pixel() const;
    void setPixel(std::vector< boost::dynamic_bitset<> > /*[1:?]*/ v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPixelTexture (IfcEntityInstanceData* e);
    IfcPixelTexture (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, int v6_Width, int v7_Height, int v8_ColourComponents, std::vector< boost::dynamic_bitset<> > /*[1:?]*/ v9_Pixel);
    typedef IfcTemplatedEntityList< IfcPixelTexture > list;
};
class IFC_PARSE_API IfcPlacement : public IfcGeometricRepresentationItem {
public:
    ::Ifc4::IfcCartesianPoint* Location() const;
    void setLocation(::Ifc4::IfcCartesianPoint* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPlacement (IfcEntityInstanceData* e);
    IfcPlacement (::Ifc4::IfcCartesianPoint* v1_Location);
    typedef IfcTemplatedEntityList< IfcPlacement > list;
};
class IFC_PARSE_API IfcPlanarExtent : public IfcGeometricRepresentationItem {
public:
    double SizeInX() const;
    void setSizeInX(double v);
    double SizeInY() const;
    void setSizeInY(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPlanarExtent (IfcEntityInstanceData* e);
    IfcPlanarExtent (double v1_SizeInX, double v2_SizeInY);
    typedef IfcTemplatedEntityList< IfcPlanarExtent > list;
};
class IFC_PARSE_API IfcPoint : public IfcGeometricRepresentationItem {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPoint (IfcEntityInstanceData* e);
    IfcPoint ();
    typedef IfcTemplatedEntityList< IfcPoint > list;
};
class IFC_PARSE_API IfcPointOnCurve : public IfcPoint {
public:
    ::Ifc4::IfcCurve* BasisCurve() const;
    void setBasisCurve(::Ifc4::IfcCurve* v);
    double PointParameter() const;
    void setPointParameter(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPointOnCurve (IfcEntityInstanceData* e);
    IfcPointOnCurve (::Ifc4::IfcCurve* v1_BasisCurve, double v2_PointParameter);
    typedef IfcTemplatedEntityList< IfcPointOnCurve > list;
};
class IFC_PARSE_API IfcPointOnSurface : public IfcPoint {
public:
    ::Ifc4::IfcSurface* BasisSurface() const;
    void setBasisSurface(::Ifc4::IfcSurface* v);
    double PointParameterU() const;
    void setPointParameterU(double v);
    double PointParameterV() const;
    void setPointParameterV(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPointOnSurface (IfcEntityInstanceData* e);
    IfcPointOnSurface (::Ifc4::IfcSurface* v1_BasisSurface, double v2_PointParameterU, double v3_PointParameterV);
    typedef IfcTemplatedEntityList< IfcPointOnSurface > list;
};
class IFC_PARSE_API IfcPolyLoop : public IfcLoop {
public:
    IfcTemplatedEntityList< ::Ifc4::IfcCartesianPoint >::ptr Polygon() const;
    void setPolygon(IfcTemplatedEntityList< ::Ifc4::IfcCartesianPoint >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPolyLoop (IfcEntityInstanceData* e);
    IfcPolyLoop (IfcTemplatedEntityList< ::Ifc4::IfcCartesianPoint >::ptr v1_Polygon);
    typedef IfcTemplatedEntityList< IfcPolyLoop > list;
};
class IFC_PARSE_API IfcPolygonalBoundedHalfSpace : public IfcHalfSpaceSolid {
public:
    ::Ifc4::IfcAxis2Placement3D* Position() const;
    void setPosition(::Ifc4::IfcAxis2Placement3D* v);
    ::Ifc4::IfcBoundedCurve* PolygonalBoundary() const;
    void setPolygonalBoundary(::Ifc4::IfcBoundedCurve* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPolygonalBoundedHalfSpace (IfcEntityInstanceData* e);
    IfcPolygonalBoundedHalfSpace (::Ifc4::IfcSurface* v1_BaseSurface, bool v2_AgreementFlag, ::Ifc4::IfcAxis2Placement3D* v3_Position, ::Ifc4::IfcBoundedCurve* v4_PolygonalBoundary);
    typedef IfcTemplatedEntityList< IfcPolygonalBoundedHalfSpace > list;
};
class IFC_PARSE_API IfcPreDefinedItem : public IfcPresentationItem {
public:
    std::string Name() const;
    void setName(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPreDefinedItem (IfcEntityInstanceData* e);
    IfcPreDefinedItem (std::string v1_Name);
    typedef IfcTemplatedEntityList< IfcPreDefinedItem > list;
};

class IFC_PARSE_API IfcPreDefinedProperties : public IfcPropertyAbstraction {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPreDefinedProperties (IfcEntityInstanceData* e);
    IfcPreDefinedProperties ();
    typedef IfcTemplatedEntityList< IfcPreDefinedProperties > list;
};
class IFC_PARSE_API IfcPreDefinedTextFont : public IfcPreDefinedItem {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPreDefinedTextFont (IfcEntityInstanceData* e);
    IfcPreDefinedTextFont (std::string v1_Name);
    typedef IfcTemplatedEntityList< IfcPreDefinedTextFont > list;
};
class IFC_PARSE_API IfcProductDefinitionShape : public IfcProductRepresentation {
public:
        IfcTemplatedEntityList< IfcProduct >::ptr ShapeOfProduct() const; // INVERSE IfcProduct::Representation
    IfcTemplatedEntityList< IfcShapeAspect >::ptr HasShapeAspects() const; // INVERSE IfcShapeAspect::PartOfProductDefinitionShape
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcProductDefinitionShape (IfcEntityInstanceData* e);
    IfcProductDefinitionShape (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, IfcTemplatedEntityList< ::Ifc4::IfcRepresentation >::ptr v3_Representations);
    typedef IfcTemplatedEntityList< IfcProductDefinitionShape > list;
};
class IFC_PARSE_API IfcProfileProperties : public IfcExtendedProperties {
public:
    ::Ifc4::IfcProfileDef* ProfileDefinition() const;
    void setProfileDefinition(::Ifc4::IfcProfileDef* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcProfileProperties (IfcEntityInstanceData* e);
    IfcProfileProperties (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, IfcTemplatedEntityList< ::Ifc4::IfcProperty >::ptr v3_Properties, ::Ifc4::IfcProfileDef* v4_ProfileDefinition);
    typedef IfcTemplatedEntityList< IfcProfileProperties > list;
};
class IFC_PARSE_API IfcProperty : public IfcPropertyAbstraction {
public:
    std::string Name() const;
    void setName(std::string v);
    bool hasDescription() const;
    std::string Description() const;
    void setDescription(std::string v);
        IfcTemplatedEntityList< IfcPropertySet >::ptr PartOfPset() const; // INVERSE IfcPropertySet::HasProperties
    IfcTemplatedEntityList< IfcPropertyDependencyRelationship >::ptr PropertyForDependance() const; // INVERSE IfcPropertyDependencyRelationship::DependingProperty
    IfcTemplatedEntityList< IfcPropertyDependencyRelationship >::ptr PropertyDependsOn() const; // INVERSE IfcPropertyDependencyRelationship::DependantProperty
    IfcTemplatedEntityList< IfcComplexProperty >::ptr PartOfComplex() const; // INVERSE IfcComplexProperty::HasProperties
    IfcTemplatedEntityList< IfcResourceConstraintRelationship >::ptr HasConstraints() const; // INVERSE IfcResourceConstraintRelationship::RelatedResourceObjects
    IfcTemplatedEntityList< IfcResourceApprovalRelationship >::ptr HasApprovals() const; // INVERSE IfcResourceApprovalRelationship::RelatedResourceObjects
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcProperty (IfcEntityInstanceData* e);
    IfcProperty (std::string v1_Name, boost::optional< std::string > v2_Description);
    typedef IfcTemplatedEntityList< IfcProperty > list;
};
class IFC_PARSE_API IfcPropertyDefinition : public IfcRoot {
public:
        IfcTemplatedEntityList< IfcRelDeclares >::ptr HasContext() const; // INVERSE IfcRelDeclares::RelatedDefinitions
    IfcTemplatedEntityList< IfcRelAssociates >::ptr HasAssociations() const; // INVERSE IfcRelAssociates::RelatedObjects
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPropertyDefinition (IfcEntityInstanceData* e);
    IfcPropertyDefinition (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description);
    typedef IfcTemplatedEntityList< IfcPropertyDefinition > list;
};
class IFC_PARSE_API IfcPropertyDependencyRelationship : public IfcResourceLevelRelationship {
public:
    ::Ifc4::IfcProperty* DependingProperty() const;
    void setDependingProperty(::Ifc4::IfcProperty* v);
    ::Ifc4::IfcProperty* DependantProperty() const;
    void setDependantProperty(::Ifc4::IfcProperty* v);
    bool hasExpression() const;
    std::string Expression() const;
    void setExpression(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPropertyDependencyRelationship (IfcEntityInstanceData* e);
    IfcPropertyDependencyRelationship (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4::IfcProperty* v3_DependingProperty, ::Ifc4::IfcProperty* v4_DependantProperty, boost::optional< std::string > v5_Expression);
    typedef IfcTemplatedEntityList< IfcPropertyDependencyRelationship > list;
};
class IFC_PARSE_API IfcPropertySetDefinition : public IfcPropertyDefinition {
public:
        IfcTemplatedEntityList< IfcTypeObject >::ptr DefinesType() const; // INVERSE IfcTypeObject::HasPropertySets
    IfcTemplatedEntityList< IfcRelDefinesByTemplate >::ptr IsDefinedBy() const; // INVERSE IfcRelDefinesByTemplate::RelatedPropertySets
    IfcTemplatedEntityList< IfcRelDefinesByProperties >::ptr DefinesOccurrence() const; // INVERSE IfcRelDefinesByProperties::RelatingPropertyDefinition
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPropertySetDefinition (IfcEntityInstanceData* e);
    IfcPropertySetDefinition (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description);
    typedef IfcTemplatedEntityList< IfcPropertySetDefinition > list;
};
class IFC_PARSE_API IfcPropertyTemplateDefinition : public IfcPropertyDefinition {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPropertyTemplateDefinition (IfcEntityInstanceData* e);
    IfcPropertyTemplateDefinition (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description);
    typedef IfcTemplatedEntityList< IfcPropertyTemplateDefinition > list;
};

class IFC_PARSE_API IfcQuantitySet : public IfcPropertySetDefinition {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcQuantitySet (IfcEntityInstanceData* e);
    IfcQuantitySet (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description);
    typedef IfcTemplatedEntityList< IfcQuantitySet > list;
};
class IFC_PARSE_API IfcRectangleProfileDef : public IfcParameterizedProfileDef {
public:
    double XDim() const;
    void setXDim(double v);
    double YDim() const;
    void setYDim(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRectangleProfileDef (IfcEntityInstanceData* e);
    IfcRectangleProfileDef (::Ifc4::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4::IfcAxis2Placement2D* v3_Position, double v4_XDim, double v5_YDim);
    typedef IfcTemplatedEntityList< IfcRectangleProfileDef > list;
};
class IFC_PARSE_API IfcRegularTimeSeries : public IfcTimeSeries {
public:
    double TimeStep() const;
    void setTimeStep(double v);
    IfcTemplatedEntityList< ::Ifc4::IfcTimeSeriesValue >::ptr Values() const;
    void setValues(IfcTemplatedEntityList< ::Ifc4::IfcTimeSeriesValue >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRegularTimeSeries (IfcEntityInstanceData* e);
    IfcRegularTimeSeries (std::string v1_Name, boost::optional< std::string > v2_Description, std::string v3_StartTime, std::string v4_EndTime, ::Ifc4::IfcTimeSeriesDataTypeEnum::Value v5_TimeSeriesDataType, ::Ifc4::IfcDataOriginEnum::Value v6_DataOrigin, boost::optional< std::string > v7_UserDefinedDataOrigin, ::Ifc4::IfcUnit* v8_Unit, double v9_TimeStep, IfcTemplatedEntityList< ::Ifc4::IfcTimeSeriesValue >::ptr v10_Values);
    typedef IfcTemplatedEntityList< IfcRegularTimeSeries > list;
};
class IFC_PARSE_API IfcReinforcementBarProperties : public IfcPreDefinedProperties {
public:
    double TotalCrossSectionArea() const;
    void setTotalCrossSectionArea(double v);
    std::string SteelGrade() const;
    void setSteelGrade(std::string v);
    bool hasBarSurface() const;
    ::Ifc4::IfcReinforcingBarSurfaceEnum::Value BarSurface() const;
    void setBarSurface(::Ifc4::IfcReinforcingBarSurfaceEnum::Value v);
    bool hasEffectiveDepth() const;
    double EffectiveDepth() const;
    void setEffectiveDepth(double v);
    bool hasNominalBarDiameter() const;
    double NominalBarDiameter() const;
    void setNominalBarDiameter(double v);
    bool hasBarCount() const;
    double BarCount() const;
    void setBarCount(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcReinforcementBarProperties (IfcEntityInstanceData* e);
    IfcReinforcementBarProperties (double v1_TotalCrossSectionArea, std::string v2_SteelGrade, boost::optional< ::Ifc4::IfcReinforcingBarSurfaceEnum::Value > v3_BarSurface, boost::optional< double > v4_EffectiveDepth, boost::optional< double > v5_NominalBarDiameter, boost::optional< double > v6_BarCount);
    typedef IfcTemplatedEntityList< IfcReinforcementBarProperties > list;
};
class IFC_PARSE_API IfcRelationship : public IfcRoot {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelationship (IfcEntityInstanceData* e);
    IfcRelationship (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description);
    typedef IfcTemplatedEntityList< IfcRelationship > list;
};
class IFC_PARSE_API IfcResourceApprovalRelationship : public IfcResourceLevelRelationship {
public:
    IfcEntityList::ptr RelatedResourceObjects() const;
    void setRelatedResourceObjects(IfcEntityList::ptr v);
    ::Ifc4::IfcApproval* RelatingApproval() const;
    void setRelatingApproval(::Ifc4::IfcApproval* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcResourceApprovalRelationship (IfcEntityInstanceData* e);
    IfcResourceApprovalRelationship (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, IfcEntityList::ptr v3_RelatedResourceObjects, ::Ifc4::IfcApproval* v4_RelatingApproval);
    typedef IfcTemplatedEntityList< IfcResourceApprovalRelationship > list;
};
class IFC_PARSE_API IfcResourceConstraintRelationship : public IfcResourceLevelRelationship {
public:
    ::Ifc4::IfcConstraint* RelatingConstraint() const;
    void setRelatingConstraint(::Ifc4::IfcConstraint* v);
    IfcEntityList::ptr RelatedResourceObjects() const;
    void setRelatedResourceObjects(IfcEntityList::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcResourceConstraintRelationship (IfcEntityInstanceData* e);
    IfcResourceConstraintRelationship (boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4::IfcConstraint* v3_RelatingConstraint, IfcEntityList::ptr v4_RelatedResourceObjects);
    typedef IfcTemplatedEntityList< IfcResourceConstraintRelationship > list;
};
class IFC_PARSE_API IfcResourceTime : public IfcSchedulingTime {
public:
    bool hasScheduleWork() const;
    std::string ScheduleWork() const;
    void setScheduleWork(std::string v);
    bool hasScheduleUsage() const;
    double ScheduleUsage() const;
    void setScheduleUsage(double 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 hasScheduleContour() const;
    std::string ScheduleContour() const;
    void setScheduleContour(std::string v);
    bool hasLevelingDelay() const;
    std::string LevelingDelay() const;
    void setLevelingDelay(std::string v);
    bool hasIsOverAllocated() const;
    bool IsOverAllocated() const;
    void setIsOverAllocated(bool v);
    bool hasStatusTime() const;
    std::string StatusTime() const;
    void setStatusTime(std::string v);
    bool hasActualWork() const;
    std::string ActualWork() const;
    void setActualWork(std::string v);
    bool hasActualUsage() const;
    double ActualUsage() const;
    void setActualUsage(double 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 hasRemainingWork() const;
    std::string RemainingWork() const;
    void setRemainingWork(std::string v);
    bool hasRemainingUsage() const;
    double RemainingUsage() const;
    void setRemainingUsage(double v);
    bool hasCompletion() const;
    double Completion() const;
    void setCompletion(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcResourceTime (IfcEntityInstanceData* e);
    IfcResourceTime (boost::optional< std::string > v1_Name, boost::optional< ::Ifc4::IfcDataOriginEnum::Value > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin, boost::optional< std::string > v4_ScheduleWork, boost::optional< double > v5_ScheduleUsage, boost::optional< std::string > v6_ScheduleStart, boost::optional< std::string > v7_ScheduleFinish, boost::optional< std::string > v8_ScheduleContour, boost::optional< std::string > v9_LevelingDelay, boost::optional< bool > v10_IsOverAllocated, boost::optional< std::string > v11_StatusTime, boost::optional< std::string > v12_ActualWork, boost::optional< double > v13_ActualUsage, boost::optional< std::string > v14_ActualStart, boost::optional< std::string > v15_ActualFinish, boost::optional< std::string > v16_RemainingWork, boost::optional< double > v17_RemainingUsage, boost::optional< double > v18_Completion);
    typedef IfcTemplatedEntityList< IfcResourceTime > list;
};
class IFC_PARSE_API IfcRoundedRectangleProfileDef : public IfcRectangleProfileDef {
public:
    double RoundingRadius() const;
    void setRoundingRadius(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRoundedRectangleProfileDef (IfcEntityInstanceData* e);
    IfcRoundedRectangleProfileDef (::Ifc4::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4::IfcAxis2Placement2D* v3_Position, double v4_XDim, double v5_YDim, double v6_RoundingRadius);
    typedef IfcTemplatedEntityList< IfcRoundedRectangleProfileDef > list;
};
class IFC_PARSE_API IfcSectionProperties : public IfcPreDefinedProperties {
public:
    ::Ifc4::IfcSectionTypeEnum::Value SectionType() const;
    void setSectionType(::Ifc4::IfcSectionTypeEnum::Value v);
    ::Ifc4::IfcProfileDef* StartProfile() const;
    void setStartProfile(::Ifc4::IfcProfileDef* v);
    bool hasEndProfile() const;
    ::Ifc4::IfcProfileDef* EndProfile() const;
    void setEndProfile(::Ifc4::IfcProfileDef* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSectionProperties (IfcEntityInstanceData* e);
    IfcSectionProperties (::Ifc4::IfcSectionTypeEnum::Value v1_SectionType, ::Ifc4::IfcProfileDef* v2_StartProfile, ::Ifc4::IfcProfileDef* v3_EndProfile);
    typedef IfcTemplatedEntityList< IfcSectionProperties > list;
};
class IFC_PARSE_API IfcSectionReinforcementProperties : public IfcPreDefinedProperties {
public:
    double LongitudinalStartPosition() const;
    void setLongitudinalStartPosition(double v);
    double LongitudinalEndPosition() const;
    void setLongitudinalEndPosition(double v);
    bool hasTransversePosition() const;
    double TransversePosition() const;
    void setTransversePosition(double v);
    ::Ifc4::IfcReinforcingBarRoleEnum::Value ReinforcementRole() const;
    void setReinforcementRole(::Ifc4::IfcReinforcingBarRoleEnum::Value v);
    ::Ifc4::IfcSectionProperties* SectionDefinition() const;
    void setSectionDefinition(::Ifc4::IfcSectionProperties* v);
    IfcTemplatedEntityList< ::Ifc4::IfcReinforcementBarProperties >::ptr CrossSectionReinforcementDefinitions() const;
    void setCrossSectionReinforcementDefinitions(IfcTemplatedEntityList< ::Ifc4::IfcReinforcementBarProperties >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSectionReinforcementProperties (IfcEntityInstanceData* e);
    IfcSectionReinforcementProperties (double v1_LongitudinalStartPosition, double v2_LongitudinalEndPosition, boost::optional< double > v3_TransversePosition, ::Ifc4::IfcReinforcingBarRoleEnum::Value v4_ReinforcementRole, ::Ifc4::IfcSectionProperties* v5_SectionDefinition, IfcTemplatedEntityList< ::Ifc4::IfcReinforcementBarProperties >::ptr v6_CrossSectionReinforcementDefinitions);
    typedef IfcTemplatedEntityList< IfcSectionReinforcementProperties > list;
};
class IFC_PARSE_API IfcSectionedSpine : public IfcGeometricRepresentationItem {
public:
    ::Ifc4::IfcCompositeCurve* SpineCurve() const;
    void setSpineCurve(::Ifc4::IfcCompositeCurve* v);
    IfcTemplatedEntityList< ::Ifc4::IfcProfileDef >::ptr CrossSections() const;
    void setCrossSections(IfcTemplatedEntityList< ::Ifc4::IfcProfileDef >::ptr v);
    IfcTemplatedEntityList< ::Ifc4::IfcAxis2Placement3D >::ptr CrossSectionPositions() const;
    void setCrossSectionPositions(IfcTemplatedEntityList< ::Ifc4::IfcAxis2Placement3D >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSectionedSpine (IfcEntityInstanceData* e);
    IfcSectionedSpine (::Ifc4::IfcCompositeCurve* v1_SpineCurve, IfcTemplatedEntityList< ::Ifc4::IfcProfileDef >::ptr v2_CrossSections, IfcTemplatedEntityList< ::Ifc4::IfcAxis2Placement3D >::ptr v3_CrossSectionPositions);
    typedef IfcTemplatedEntityList< IfcSectionedSpine > list;
};
class IFC_PARSE_API IfcShellBasedSurfaceModel : public IfcGeometricRepresentationItem {
public:
    IfcEntityList::ptr SbsmBoundary() const;
    void setSbsmBoundary(IfcEntityList::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcShellBasedSurfaceModel (IfcEntityInstanceData* e);
    IfcShellBasedSurfaceModel (IfcEntityList::ptr v1_SbsmBoundary);
    typedef IfcTemplatedEntityList< IfcShellBasedSurfaceModel > list;
};
class IFC_PARSE_API IfcSimpleProperty : public IfcProperty {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSimpleProperty (IfcEntityInstanceData* e);
    IfcSimpleProperty (std::string v1_Name, boost::optional< std::string > v2_Description);
    typedef IfcTemplatedEntityList< IfcSimpleProperty > list;
};
class IFC_PARSE_API IfcSlippageConnectionCondition : public IfcStructuralConnectionCondition {
public:
    bool hasSlippageX() const;
    double SlippageX() const;
    void setSlippageX(double v);
    bool hasSlippageY() const;
    double SlippageY() const;
    void setSlippageY(double v);
    bool hasSlippageZ() const;
    double SlippageZ() const;
    void setSlippageZ(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSlippageConnectionCondition (IfcEntityInstanceData* e);
    IfcSlippageConnectionCondition (boost::optional< std::string > v1_Name, boost::optional< double > v2_SlippageX, boost::optional< double > v3_SlippageY, boost::optional< double > v4_SlippageZ);
    typedef IfcTemplatedEntityList< IfcSlippageConnectionCondition > list;
};
class IFC_PARSE_API IfcSolidModel : public IfcGeometricRepresentationItem {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSolidModel (IfcEntityInstanceData* e);
    IfcSolidModel ();
    typedef IfcTemplatedEntityList< IfcSolidModel > list;
};
class IFC_PARSE_API IfcStructuralLoadLinearForce : public IfcStructuralLoadStatic {
public:
    bool hasLinearForceX() const;
    double LinearForceX() const;
    void setLinearForceX(double v);
    bool hasLinearForceY() const;
    double LinearForceY() const;
    void setLinearForceY(double v);
    bool hasLinearForceZ() const;
    double LinearForceZ() const;
    void setLinearForceZ(double v);
    bool hasLinearMomentX() const;
    double LinearMomentX() const;
    void setLinearMomentX(double v);
    bool hasLinearMomentY() const;
    double LinearMomentY() const;
    void setLinearMomentY(double v);
    bool hasLinearMomentZ() const;
    double LinearMomentZ() const;
    void setLinearMomentZ(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralLoadLinearForce (IfcEntityInstanceData* e);
    IfcStructuralLoadLinearForce (boost::optional< std::string > v1_Name, boost::optional< double > v2_LinearForceX, boost::optional< double > v3_LinearForceY, boost::optional< double > v4_LinearForceZ, boost::optional< double > v5_LinearMomentX, boost::optional< double > v6_LinearMomentY, boost::optional< double > v7_LinearMomentZ);
    typedef IfcTemplatedEntityList< IfcStructuralLoadLinearForce > list;
};
class IFC_PARSE_API IfcStructuralLoadPlanarForce : public IfcStructuralLoadStatic {
public:
    bool hasPlanarForceX() const;
    double PlanarForceX() const;
    void setPlanarForceX(double v);
    bool hasPlanarForceY() const;
    double PlanarForceY() const;
    void setPlanarForceY(double v);
    bool hasPlanarForceZ() const;
    double PlanarForceZ() const;
    void setPlanarForceZ(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralLoadPlanarForce (IfcEntityInstanceData* e);
    IfcStructuralLoadPlanarForce (boost::optional< std::string > v1_Name, boost::optional< double > v2_PlanarForceX, boost::optional< double > v3_PlanarForceY, boost::optional< double > v4_PlanarForceZ);
    typedef IfcTemplatedEntityList< IfcStructuralLoadPlanarForce > list;
};
class IFC_PARSE_API IfcStructuralLoadSingleDisplacement : public IfcStructuralLoadStatic {
public:
    bool hasDisplacementX() const;
    double DisplacementX() const;
    void setDisplacementX(double v);
    bool hasDisplacementY() const;
    double DisplacementY() const;
    void setDisplacementY(double v);
    bool hasDisplacementZ() const;
    double DisplacementZ() const;
    void setDisplacementZ(double v);
    bool hasRotationalDisplacementRX() const;
    double RotationalDisplacementRX() const;
    void setRotationalDisplacementRX(double v);
    bool hasRotationalDisplacementRY() const;
    double RotationalDisplacementRY() const;
    void setRotationalDisplacementRY(double v);
    bool hasRotationalDisplacementRZ() const;
    double RotationalDisplacementRZ() const;
    void setRotationalDisplacementRZ(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralLoadSingleDisplacement (IfcEntityInstanceData* e);
    IfcStructuralLoadSingleDisplacement (boost::optional< std::string > v1_Name, boost::optional< double > v2_DisplacementX, boost::optional< double > v3_DisplacementY, boost::optional< double > v4_DisplacementZ, boost::optional< double > v5_RotationalDisplacementRX, boost::optional< double > v6_RotationalDisplacementRY, boost::optional< double > v7_RotationalDisplacementRZ);
    typedef IfcTemplatedEntityList< IfcStructuralLoadSingleDisplacement > list;
};
class IFC_PARSE_API IfcStructuralLoadSingleDisplacementDistortion : public IfcStructuralLoadSingleDisplacement {
public:
    bool hasDistortion() const;
    double Distortion() const;
    void setDistortion(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralLoadSingleDisplacementDistortion (IfcEntityInstanceData* e);
    IfcStructuralLoadSingleDisplacementDistortion (boost::optional< std::string > v1_Name, boost::optional< double > v2_DisplacementX, boost::optional< double > v3_DisplacementY, boost::optional< double > v4_DisplacementZ, boost::optional< double > v5_RotationalDisplacementRX, boost::optional< double > v6_RotationalDisplacementRY, boost::optional< double > v7_RotationalDisplacementRZ, boost::optional< double > v8_Distortion);
    typedef IfcTemplatedEntityList< IfcStructuralLoadSingleDisplacementDistortion > list;
};
class IFC_PARSE_API IfcStructuralLoadSingleForce : public IfcStructuralLoadStatic {
public:
    bool hasForceX() const;
    double ForceX() const;
    void setForceX(double v);
    bool hasForceY() const;
    double ForceY() const;
    void setForceY(double v);
    bool hasForceZ() const;
    double ForceZ() const;
    void setForceZ(double v);
    bool hasMomentX() const;
    double MomentX() const;
    void setMomentX(double v);
    bool hasMomentY() const;
    double MomentY() const;
    void setMomentY(double v);
    bool hasMomentZ() const;
    double MomentZ() const;
    void setMomentZ(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralLoadSingleForce (IfcEntityInstanceData* e);
    IfcStructuralLoadSingleForce (boost::optional< std::string > v1_Name, boost::optional< double > v2_ForceX, boost::optional< double > v3_ForceY, boost::optional< double > v4_ForceZ, boost::optional< double > v5_MomentX, boost::optional< double > v6_MomentY, boost::optional< double > v7_MomentZ);
    typedef IfcTemplatedEntityList< IfcStructuralLoadSingleForce > list;
};
class IFC_PARSE_API IfcStructuralLoadSingleForceWarping : public IfcStructuralLoadSingleForce {
public:
    bool hasWarpingMoment() const;
    double WarpingMoment() const;
    void setWarpingMoment(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralLoadSingleForceWarping (IfcEntityInstanceData* e);
    IfcStructuralLoadSingleForceWarping (boost::optional< std::string > v1_Name, boost::optional< double > v2_ForceX, boost::optional< double > v3_ForceY, boost::optional< double > v4_ForceZ, boost::optional< double > v5_MomentX, boost::optional< double > v6_MomentY, boost::optional< double > v7_MomentZ, boost::optional< double > v8_WarpingMoment);
    typedef IfcTemplatedEntityList< IfcStructuralLoadSingleForceWarping > list;
};
class IFC_PARSE_API IfcSubedge : public IfcEdge {
public:
    ::Ifc4::IfcEdge* ParentEdge() const;
    void setParentEdge(::Ifc4::IfcEdge* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSubedge (IfcEntityInstanceData* e);
    IfcSubedge (::Ifc4::IfcVertex* v1_EdgeStart, ::Ifc4::IfcVertex* v2_EdgeEnd, ::Ifc4::IfcEdge* v3_ParentEdge);
    typedef IfcTemplatedEntityList< IfcSubedge > list;
};
class IFC_PARSE_API IfcSurface : public IfcGeometricRepresentationItem {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSurface (IfcEntityInstanceData* e);
    IfcSurface ();
    typedef IfcTemplatedEntityList< IfcSurface > list;
};
class IFC_PARSE_API IfcSurfaceStyleRendering : public IfcSurfaceStyleShading {
public:
    bool hasDiffuseColour() const;
    ::Ifc4::IfcColourOrFactor* DiffuseColour() const;
    void setDiffuseColour(::Ifc4::IfcColourOrFactor* v);
    bool hasTransmissionColour() const;
    ::Ifc4::IfcColourOrFactor* TransmissionColour() const;
    void setTransmissionColour(::Ifc4::IfcColourOrFactor* v);
    bool hasDiffuseTransmissionColour() const;
    ::Ifc4::IfcColourOrFactor* DiffuseTransmissionColour() const;
    void setDiffuseTransmissionColour(::Ifc4::IfcColourOrFactor* v);
    bool hasReflectionColour() const;
    ::Ifc4::IfcColourOrFactor* ReflectionColour() const;
    void setReflectionColour(::Ifc4::IfcColourOrFactor* v);
    bool hasSpecularColour() const;
    ::Ifc4::IfcColourOrFactor* SpecularColour() const;
    void setSpecularColour(::Ifc4::IfcColourOrFactor* v);
    bool hasSpecularHighlight() const;
    ::Ifc4::IfcSpecularHighlightSelect* SpecularHighlight() const;
    void setSpecularHighlight(::Ifc4::IfcSpecularHighlightSelect* v);
    ::Ifc4::IfcReflectanceMethodEnum::Value ReflectanceMethod() const;
    void setReflectanceMethod(::Ifc4::IfcReflectanceMethodEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSurfaceStyleRendering (IfcEntityInstanceData* e);
    IfcSurfaceStyleRendering (::Ifc4::IfcColourRgb* v1_SurfaceColour, boost::optional< double > v2_Transparency, ::Ifc4::IfcColourOrFactor* v3_DiffuseColour, ::Ifc4::IfcColourOrFactor* v4_TransmissionColour, ::Ifc4::IfcColourOrFactor* v5_DiffuseTransmissionColour, ::Ifc4::IfcColourOrFactor* v6_ReflectionColour, ::Ifc4::IfcColourOrFactor* v7_SpecularColour, ::Ifc4::IfcSpecularHighlightSelect* v8_SpecularHighlight, ::Ifc4::IfcReflectanceMethodEnum::Value v9_ReflectanceMethod);
    typedef IfcTemplatedEntityList< IfcSurfaceStyleRendering > list;
};
class IFC_PARSE_API IfcSweptAreaSolid : public IfcSolidModel {
public:
    ::Ifc4::IfcProfileDef* SweptArea() const;
    void setSweptArea(::Ifc4::IfcProfileDef* v);
    bool hasPosition() const;
    ::Ifc4::IfcAxis2Placement3D* Position() const;
    void setPosition(::Ifc4::IfcAxis2Placement3D* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSweptAreaSolid (IfcEntityInstanceData* e);
    IfcSweptAreaSolid (::Ifc4::IfcProfileDef* v1_SweptArea, ::Ifc4::IfcAxis2Placement3D* v2_Position);
    typedef IfcTemplatedEntityList< IfcSweptAreaSolid > list;
};
class IFC_PARSE_API IfcSweptDiskSolid : public IfcSolidModel {
public:
    ::Ifc4::IfcCurve* Directrix() const;
    void setDirectrix(::Ifc4::IfcCurve* v);
    double Radius() const;
    void setRadius(double v);
    bool hasInnerRadius() const;
    double InnerRadius() const;
    void setInnerRadius(double v);
    bool hasStartParam() const;
    double StartParam() const;
    void setStartParam(double v);
    bool hasEndParam() const;
    double EndParam() const;
    void setEndParam(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSweptDiskSolid (IfcEntityInstanceData* e);
    IfcSweptDiskSolid (::Ifc4::IfcCurve* v1_Directrix, double v2_Radius, boost::optional< double > v3_InnerRadius, boost::optional< double > v4_StartParam, boost::optional< double > v5_EndParam);
    typedef IfcTemplatedEntityList< IfcSweptDiskSolid > list;
};
class IFC_PARSE_API IfcSweptDiskSolidPolygonal : public IfcSweptDiskSolid {
public:
    bool hasFilletRadius() const;
    double FilletRadius() const;
    void setFilletRadius(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSweptDiskSolidPolygonal (IfcEntityInstanceData* e);
    IfcSweptDiskSolidPolygonal (::Ifc4::IfcCurve* v1_Directrix, double v2_Radius, boost::optional< double > v3_InnerRadius, boost::optional< double > v4_StartParam, boost::optional< double > v5_EndParam, boost::optional< double > v6_FilletRadius);
    typedef IfcTemplatedEntityList< IfcSweptDiskSolidPolygonal > list;
};
class IFC_PARSE_API IfcSweptSurface : public IfcSurface {
public:
    ::Ifc4::IfcProfileDef* SweptCurve() const;
    void setSweptCurve(::Ifc4::IfcProfileDef* v);
    bool hasPosition() const;
    ::Ifc4::IfcAxis2Placement3D* Position() const;
    void setPosition(::Ifc4::IfcAxis2Placement3D* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSweptSurface (IfcEntityInstanceData* e);
    IfcSweptSurface (::Ifc4::IfcProfileDef* v1_SweptCurve, ::Ifc4::IfcAxis2Placement3D* v2_Position);
    typedef IfcTemplatedEntityList< IfcSweptSurface > list;
};
class IFC_PARSE_API IfcTShapeProfileDef : public IfcParameterizedProfileDef {
public:
    double Depth() const;
    void setDepth(double v);
    double FlangeWidth() const;
    void setFlangeWidth(double v);
    double WebThickness() const;
    void setWebThickness(double v);
    double FlangeThickness() const;
    void setFlangeThickness(double v);
    bool hasFilletRadius() const;
    double FilletRadius() const;
    void setFilletRadius(double v);
    bool hasFlangeEdgeRadius() const;
    double FlangeEdgeRadius() const;
    void setFlangeEdgeRadius(double v);
    bool hasWebEdgeRadius() const;
    double WebEdgeRadius() const;
    void setWebEdgeRadius(double v);
    bool hasWebSlope() const;
    double WebSlope() const;
    void setWebSlope(double v);
    bool hasFlangeSlope() const;
    double FlangeSlope() const;
    void setFlangeSlope(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTShapeProfileDef (IfcEntityInstanceData* e);
    IfcTShapeProfileDef (::Ifc4::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4::IfcAxis2Placement2D* v3_Position, double v4_Depth, double v5_FlangeWidth, double v6_WebThickness, double v7_FlangeThickness, boost::optional< double > v8_FilletRadius, boost::optional< double > v9_FlangeEdgeRadius, boost::optional< double > v10_WebEdgeRadius, boost::optional< double > v11_WebSlope, boost::optional< double > v12_FlangeSlope);
    typedef IfcTemplatedEntityList< IfcTShapeProfileDef > list;
};

class IFC_PARSE_API IfcTessellatedItem : public IfcGeometricRepresentationItem {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTessellatedItem (IfcEntityInstanceData* e);
    IfcTessellatedItem ();
    typedef IfcTemplatedEntityList< IfcTessellatedItem > list;
};
class IFC_PARSE_API IfcTextLiteral : public IfcGeometricRepresentationItem {
public:
    std::string Literal() const;
    void setLiteral(std::string v);
    ::Ifc4::IfcAxis2Placement* Placement() const;
    void setPlacement(::Ifc4::IfcAxis2Placement* v);
    ::Ifc4::IfcTextPath::Value Path() const;
    void setPath(::Ifc4::IfcTextPath::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTextLiteral (IfcEntityInstanceData* e);
    IfcTextLiteral (std::string v1_Literal, ::Ifc4::IfcAxis2Placement* v2_Placement, ::Ifc4::IfcTextPath::Value v3_Path);
    typedef IfcTemplatedEntityList< IfcTextLiteral > list;
};
class IFC_PARSE_API IfcTextLiteralWithExtent : public IfcTextLiteral {
public:
    ::Ifc4::IfcPlanarExtent* Extent() const;
    void setExtent(::Ifc4::IfcPlanarExtent* v);
    std::string BoxAlignment() const;
    void setBoxAlignment(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTextLiteralWithExtent (IfcEntityInstanceData* e);
    IfcTextLiteralWithExtent (std::string v1_Literal, ::Ifc4::IfcAxis2Placement* v2_Placement, ::Ifc4::IfcTextPath::Value v3_Path, ::Ifc4::IfcPlanarExtent* v4_Extent, std::string v5_BoxAlignment);
    typedef IfcTemplatedEntityList< IfcTextLiteralWithExtent > list;
};
class IFC_PARSE_API IfcTextStyleFontModel : public IfcPreDefinedTextFont {
public:
    std::vector< std::string > /*[1:?]*/ FontFamily() const;
    void setFontFamily(std::vector< std::string > /*[1:?]*/ v);
    bool hasFontStyle() const;
    std::string FontStyle() const;
    void setFontStyle(std::string v);
    bool hasFontVariant() const;
    std::string FontVariant() const;
    void setFontVariant(std::string v);
    bool hasFontWeight() const;
    std::string FontWeight() const;
    void setFontWeight(std::string v);
    ::Ifc4::IfcSizeSelect* FontSize() const;
    void setFontSize(::Ifc4::IfcSizeSelect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTextStyleFontModel (IfcEntityInstanceData* e);
    IfcTextStyleFontModel (std::string v1_Name, std::vector< std::string > /*[1:?]*/ v2_FontFamily, boost::optional< std::string > v3_FontStyle, boost::optional< std::string > v4_FontVariant, boost::optional< std::string > v5_FontWeight, ::Ifc4::IfcSizeSelect* v6_FontSize);
    typedef IfcTemplatedEntityList< IfcTextStyleFontModel > list;
};
class IFC_PARSE_API IfcTrapeziumProfileDef : public IfcParameterizedProfileDef {
public:
    double BottomXDim() const;
    void setBottomXDim(double v);
    double TopXDim() const;
    void setTopXDim(double v);
    double YDim() const;
    void setYDim(double v);
    double TopXOffset() const;
    void setTopXOffset(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTrapeziumProfileDef (IfcEntityInstanceData* e);
    IfcTrapeziumProfileDef (::Ifc4::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4::IfcAxis2Placement2D* v3_Position, double v4_BottomXDim, double v5_TopXDim, double v6_YDim, double v7_TopXOffset);
    typedef IfcTemplatedEntityList< IfcTrapeziumProfileDef > list;
};
class IFC_PARSE_API IfcTypeObject : public IfcObjectDefinition {
public:
    bool hasApplicableOccurrence() const;
    std::string ApplicableOccurrence() const;
    void setApplicableOccurrence(std::string v);
    bool hasHasPropertySets() const;
    IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr HasPropertySets() const;
    void setHasPropertySets(IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr v);
        IfcTemplatedEntityList< IfcRelDefinesByType >::ptr Types() const; // INVERSE IfcRelDefinesByType::RelatingType
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTypeObject (IfcEntityInstanceData* e);
    IfcTypeObject (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets);
    typedef IfcTemplatedEntityList< IfcTypeObject > list;
};
class IFC_PARSE_API IfcTypeProcess : public IfcTypeObject {
public:
    bool hasIdentification() const;
    std::string Identification() const;
    void setIdentification(std::string v);
    bool hasLongDescription() const;
    std::string LongDescription() const;
    void setLongDescription(std::string v);
    bool hasProcessType() const;
    std::string ProcessType() const;
    void setProcessType(std::string v);
        IfcTemplatedEntityList< IfcRelAssignsToProcess >::ptr OperatesOn() const; // INVERSE IfcRelAssignsToProcess::RelatingProcess
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTypeProcess (IfcEntityInstanceData* e);
    IfcTypeProcess (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ProcessType);
    typedef IfcTemplatedEntityList< IfcTypeProcess > list;
};
class IFC_PARSE_API IfcTypeProduct : public IfcTypeObject {
public:
    bool hasRepresentationMaps() const;
    IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr RepresentationMaps() const;
    void setRepresentationMaps(IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr v);
    bool hasTag() const;
    std::string Tag() const;
    void setTag(std::string v);
        IfcTemplatedEntityList< IfcRelAssignsToProduct >::ptr ReferencedBy() const; // INVERSE IfcRelAssignsToProduct::RelatingProduct
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTypeProduct (IfcEntityInstanceData* e);
    IfcTypeProduct (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcTypeProduct > list;
};
class IFC_PARSE_API IfcTypeResource : public IfcTypeObject {
public:
    bool hasIdentification() const;
    std::string Identification() const;
    void setIdentification(std::string v);
    bool hasLongDescription() const;
    std::string LongDescription() const;
    void setLongDescription(std::string v);
    bool hasResourceType() const;
    std::string ResourceType() const;
    void setResourceType(std::string v);
        IfcTemplatedEntityList< IfcRelAssignsToResource >::ptr ResourceOf() const; // INVERSE IfcRelAssignsToResource::RelatingResource
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTypeResource (IfcEntityInstanceData* e);
    IfcTypeResource (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType);
    typedef IfcTemplatedEntityList< IfcTypeResource > list;
};
class IFC_PARSE_API IfcUShapeProfileDef : public IfcParameterizedProfileDef {
public:
    double Depth() const;
    void setDepth(double v);
    double FlangeWidth() const;
    void setFlangeWidth(double v);
    double WebThickness() const;
    void setWebThickness(double v);
    double FlangeThickness() const;
    void setFlangeThickness(double v);
    bool hasFilletRadius() const;
    double FilletRadius() const;
    void setFilletRadius(double v);
    bool hasEdgeRadius() const;
    double EdgeRadius() const;
    void setEdgeRadius(double v);
    bool hasFlangeSlope() const;
    double FlangeSlope() const;
    void setFlangeSlope(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcUShapeProfileDef (IfcEntityInstanceData* e);
    IfcUShapeProfileDef (::Ifc4::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4::IfcAxis2Placement2D* v3_Position, double v4_Depth, double v5_FlangeWidth, double v6_WebThickness, double v7_FlangeThickness, boost::optional< double > v8_FilletRadius, boost::optional< double > v9_EdgeRadius, boost::optional< double > v10_FlangeSlope);
    typedef IfcTemplatedEntityList< IfcUShapeProfileDef > list;
};
class IFC_PARSE_API IfcVector : public IfcGeometricRepresentationItem {
public:
    ::Ifc4::IfcDirection* Orientation() const;
    void setOrientation(::Ifc4::IfcDirection* v);
    double Magnitude() const;
    void setMagnitude(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcVector (IfcEntityInstanceData* e);
    IfcVector (::Ifc4::IfcDirection* v1_Orientation, double v2_Magnitude);
    typedef IfcTemplatedEntityList< IfcVector > list;
};
class IFC_PARSE_API IfcVertexLoop : public IfcLoop {
public:
    ::Ifc4::IfcVertex* LoopVertex() const;
    void setLoopVertex(::Ifc4::IfcVertex* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcVertexLoop (IfcEntityInstanceData* e);
    IfcVertexLoop (::Ifc4::IfcVertex* v1_LoopVertex);
    typedef IfcTemplatedEntityList< IfcVertexLoop > list;
};
class IFC_PARSE_API IfcWindowStyle : public IfcTypeProduct {
public:
    ::Ifc4::IfcWindowStyleConstructionEnum::Value ConstructionType() const;
    void setConstructionType(::Ifc4::IfcWindowStyleConstructionEnum::Value v);
    ::Ifc4::IfcWindowStyleOperationEnum::Value OperationType() const;
    void setOperationType(::Ifc4::IfcWindowStyleOperationEnum::Value v);
    bool ParameterTakesPrecedence() const;
    void setParameterTakesPrecedence(bool v);
    bool Sizeable() const;
    void setSizeable(bool v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcWindowStyle (IfcEntityInstanceData* e);
    IfcWindowStyle (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, ::Ifc4::IfcWindowStyleConstructionEnum::Value v9_ConstructionType, ::Ifc4::IfcWindowStyleOperationEnum::Value v10_OperationType, bool v11_ParameterTakesPrecedence, bool v12_Sizeable);
    typedef IfcTemplatedEntityList< IfcWindowStyle > list;
};
class IFC_PARSE_API IfcZShapeProfileDef : public IfcParameterizedProfileDef {
public:
    double Depth() const;
    void setDepth(double v);
    double FlangeWidth() const;
    void setFlangeWidth(double v);
    double WebThickness() const;
    void setWebThickness(double v);
    double FlangeThickness() const;
    void setFlangeThickness(double v);
    bool hasFilletRadius() const;
    double FilletRadius() const;
    void setFilletRadius(double v);
    bool hasEdgeRadius() const;
    double EdgeRadius() const;
    void setEdgeRadius(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcZShapeProfileDef (IfcEntityInstanceData* e);
    IfcZShapeProfileDef (::Ifc4::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4::IfcAxis2Placement2D* v3_Position, double v4_Depth, double v5_FlangeWidth, double v6_WebThickness, double v7_FlangeThickness, boost::optional< double > v8_FilletRadius, boost::optional< double > v9_EdgeRadius);
    typedef IfcTemplatedEntityList< IfcZShapeProfileDef > list;
};
class IFC_PARSE_API IfcAdvancedFace : public IfcFaceSurface {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAdvancedFace (IfcEntityInstanceData* e);
    IfcAdvancedFace (IfcTemplatedEntityList< ::Ifc4::IfcFaceBound >::ptr v1_Bounds, ::Ifc4::IfcSurface* v2_FaceSurface, bool v3_SameSense);
    typedef IfcTemplatedEntityList< IfcAdvancedFace > list;
};
class IFC_PARSE_API IfcAnnotationFillArea : public IfcGeometricRepresentationItem {
public:
    ::Ifc4::IfcCurve* OuterBoundary() const;
    void setOuterBoundary(::Ifc4::IfcCurve* v);
    bool hasInnerBoundaries() const;
    IfcTemplatedEntityList< ::Ifc4::IfcCurve >::ptr InnerBoundaries() const;
    void setInnerBoundaries(IfcTemplatedEntityList< ::Ifc4::IfcCurve >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAnnotationFillArea (IfcEntityInstanceData* e);
    IfcAnnotationFillArea (::Ifc4::IfcCurve* v1_OuterBoundary, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcCurve >::ptr > v2_InnerBoundaries);
    typedef IfcTemplatedEntityList< IfcAnnotationFillArea > list;
};
class IFC_PARSE_API IfcAsymmetricIShapeProfileDef : public IfcParameterizedProfileDef {
public:
    double BottomFlangeWidth() const;
    void setBottomFlangeWidth(double v);
    double OverallDepth() const;
    void setOverallDepth(double v);
    double WebThickness() const;
    void setWebThickness(double v);
    double BottomFlangeThickness() const;
    void setBottomFlangeThickness(double v);
    bool hasBottomFlangeFilletRadius() const;
    double BottomFlangeFilletRadius() const;
    void setBottomFlangeFilletRadius(double v);
    double TopFlangeWidth() const;
    void setTopFlangeWidth(double v);
    bool hasTopFlangeThickness() const;
    double TopFlangeThickness() const;
    void setTopFlangeThickness(double v);
    bool hasTopFlangeFilletRadius() const;
    double TopFlangeFilletRadius() const;
    void setTopFlangeFilletRadius(double v);
    bool hasBottomFlangeEdgeRadius() const;
    double BottomFlangeEdgeRadius() const;
    void setBottomFlangeEdgeRadius(double v);
    bool hasBottomFlangeSlope() const;
    double BottomFlangeSlope() const;
    void setBottomFlangeSlope(double v);
    bool hasTopFlangeEdgeRadius() const;
    double TopFlangeEdgeRadius() const;
    void setTopFlangeEdgeRadius(double v);
    bool hasTopFlangeSlope() const;
    double TopFlangeSlope() const;
    void setTopFlangeSlope(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAsymmetricIShapeProfileDef (IfcEntityInstanceData* e);
    IfcAsymmetricIShapeProfileDef (::Ifc4::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4::IfcAxis2Placement2D* v3_Position, double v4_BottomFlangeWidth, double v5_OverallDepth, double v6_WebThickness, double v7_BottomFlangeThickness, boost::optional< double > v8_BottomFlangeFilletRadius, double v9_TopFlangeWidth, boost::optional< double > v10_TopFlangeThickness, boost::optional< double > v11_TopFlangeFilletRadius, boost::optional< double > v12_BottomFlangeEdgeRadius, boost::optional< double > v13_BottomFlangeSlope, boost::optional< double > v14_TopFlangeEdgeRadius, boost::optional< double > v15_TopFlangeSlope);
    typedef IfcTemplatedEntityList< IfcAsymmetricIShapeProfileDef > list;
};
class IFC_PARSE_API IfcAxis1Placement : public IfcPlacement {
public:
    bool hasAxis() const;
    ::Ifc4::IfcDirection* Axis() const;
    void setAxis(::Ifc4::IfcDirection* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAxis1Placement (IfcEntityInstanceData* e);
    IfcAxis1Placement (::Ifc4::IfcCartesianPoint* v1_Location, ::Ifc4::IfcDirection* v2_Axis);
    typedef IfcTemplatedEntityList< IfcAxis1Placement > list;
};
class IFC_PARSE_API IfcAxis2Placement2D : public IfcPlacement {
public:
    bool hasRefDirection() const;
    ::Ifc4::IfcDirection* RefDirection() const;
    void setRefDirection(::Ifc4::IfcDirection* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAxis2Placement2D (IfcEntityInstanceData* e);
    IfcAxis2Placement2D (::Ifc4::IfcCartesianPoint* v1_Location, ::Ifc4::IfcDirection* v2_RefDirection);
    typedef IfcTemplatedEntityList< IfcAxis2Placement2D > list;
};
class IFC_PARSE_API IfcAxis2Placement3D : public IfcPlacement {
public:
    bool hasAxis() const;
    ::Ifc4::IfcDirection* Axis() const;
    void setAxis(::Ifc4::IfcDirection* v);
    bool hasRefDirection() const;
    ::Ifc4::IfcDirection* RefDirection() const;
    void setRefDirection(::Ifc4::IfcDirection* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAxis2Placement3D (IfcEntityInstanceData* e);
    IfcAxis2Placement3D (::Ifc4::IfcCartesianPoint* v1_Location, ::Ifc4::IfcDirection* v2_Axis, ::Ifc4::IfcDirection* v3_RefDirection);
    typedef IfcTemplatedEntityList< IfcAxis2Placement3D > list;
};
class IFC_PARSE_API IfcBooleanResult : public IfcGeometricRepresentationItem {
public:
    ::Ifc4::IfcBooleanOperator::Value Operator() const;
    void setOperator(::Ifc4::IfcBooleanOperator::Value v);
    ::Ifc4::IfcBooleanOperand* FirstOperand() const;
    void setFirstOperand(::Ifc4::IfcBooleanOperand* v);
    ::Ifc4::IfcBooleanOperand* SecondOperand() const;
    void setSecondOperand(::Ifc4::IfcBooleanOperand* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBooleanResult (IfcEntityInstanceData* e);
    IfcBooleanResult (::Ifc4::IfcBooleanOperator::Value v1_Operator, ::Ifc4::IfcBooleanOperand* v2_FirstOperand, ::Ifc4::IfcBooleanOperand* v3_SecondOperand);
    typedef IfcTemplatedEntityList< IfcBooleanResult > list;
};
class IFC_PARSE_API IfcBoundedSurface : public IfcSurface {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBoundedSurface (IfcEntityInstanceData* e);
    IfcBoundedSurface ();
    typedef IfcTemplatedEntityList< IfcBoundedSurface > list;
};
class IFC_PARSE_API IfcBoundingBox : public IfcGeometricRepresentationItem {
public:
    ::Ifc4::IfcCartesianPoint* Corner() const;
    void setCorner(::Ifc4::IfcCartesianPoint* v);
    double XDim() const;
    void setXDim(double v);
    double YDim() const;
    void setYDim(double v);
    double ZDim() const;
    void setZDim(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBoundingBox (IfcEntityInstanceData* e);
    IfcBoundingBox (::Ifc4::IfcCartesianPoint* v1_Corner, double v2_XDim, double v3_YDim, double v4_ZDim);
    typedef IfcTemplatedEntityList< IfcBoundingBox > list;
};
class IFC_PARSE_API IfcBoxedHalfSpace : public IfcHalfSpaceSolid {
public:
    ::Ifc4::IfcBoundingBox* Enclosure() const;
    void setEnclosure(::Ifc4::IfcBoundingBox* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBoxedHalfSpace (IfcEntityInstanceData* e);
    IfcBoxedHalfSpace (::Ifc4::IfcSurface* v1_BaseSurface, bool v2_AgreementFlag, ::Ifc4::IfcBoundingBox* v3_Enclosure);
    typedef IfcTemplatedEntityList< IfcBoxedHalfSpace > list;
};
class IFC_PARSE_API IfcCShapeProfileDef : public IfcParameterizedProfileDef {
public:
    double Depth() const;
    void setDepth(double v);
    double Width() const;
    void setWidth(double v);
    double WallThickness() const;
    void setWallThickness(double v);
    double Girth() const;
    void setGirth(double v);
    bool hasInternalFilletRadius() const;
    double InternalFilletRadius() const;
    void setInternalFilletRadius(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCShapeProfileDef (IfcEntityInstanceData* e);
    IfcCShapeProfileDef (::Ifc4::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4::IfcAxis2Placement2D* v3_Position, double v4_Depth, double v5_Width, double v6_WallThickness, double v7_Girth, boost::optional< double > v8_InternalFilletRadius);
    typedef IfcTemplatedEntityList< IfcCShapeProfileDef > list;
};
class IFC_PARSE_API IfcCartesianPoint : public IfcPoint {
public:
    std::vector< double > /*[1:3]*/ Coordinates() const;
    void setCoordinates(std::vector< double > /*[1:3]*/ v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCartesianPoint (IfcEntityInstanceData* e);
    IfcCartesianPoint (std::vector< double > /*[1:3]*/ v1_Coordinates);
    typedef IfcTemplatedEntityList< IfcCartesianPoint > list;
};

class IFC_PARSE_API IfcCartesianPointList : public IfcGeometricRepresentationItem {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCartesianPointList (IfcEntityInstanceData* e);
    IfcCartesianPointList ();
    typedef IfcTemplatedEntityList< IfcCartesianPointList > list;
};

class IFC_PARSE_API IfcCartesianPointList2D : public IfcCartesianPointList {
public:
    std::vector< std::vector< double > > CoordList() const;
    void setCoordList(std::vector< std::vector< double > > v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCartesianPointList2D (IfcEntityInstanceData* e);
    IfcCartesianPointList2D (std::vector< std::vector< double > > v1_CoordList);
    typedef IfcTemplatedEntityList< IfcCartesianPointList2D > list;
};

class IFC_PARSE_API IfcCartesianPointList3D : public IfcCartesianPointList {
public:
    std::vector< std::vector< double > > CoordList() const;
    void setCoordList(std::vector< std::vector< double > > v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCartesianPointList3D (IfcEntityInstanceData* e);
    IfcCartesianPointList3D (std::vector< std::vector< double > > v1_CoordList);
    typedef IfcTemplatedEntityList< IfcCartesianPointList3D > list;
};
class IFC_PARSE_API IfcCartesianTransformationOperator : public IfcGeometricRepresentationItem {
public:
    bool hasAxis1() const;
    ::Ifc4::IfcDirection* Axis1() const;
    void setAxis1(::Ifc4::IfcDirection* v);
    bool hasAxis2() const;
    ::Ifc4::IfcDirection* Axis2() const;
    void setAxis2(::Ifc4::IfcDirection* v);
    ::Ifc4::IfcCartesianPoint* LocalOrigin() const;
    void setLocalOrigin(::Ifc4::IfcCartesianPoint* v);
    bool hasScale() const;
    double Scale() const;
    void setScale(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCartesianTransformationOperator (IfcEntityInstanceData* e);
    IfcCartesianTransformationOperator (::Ifc4::IfcDirection* v1_Axis1, ::Ifc4::IfcDirection* v2_Axis2, ::Ifc4::IfcCartesianPoint* v3_LocalOrigin, boost::optional< double > v4_Scale);
    typedef IfcTemplatedEntityList< IfcCartesianTransformationOperator > list;
};
class IFC_PARSE_API IfcCartesianTransformationOperator2D : public IfcCartesianTransformationOperator {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCartesianTransformationOperator2D (IfcEntityInstanceData* e);
    IfcCartesianTransformationOperator2D (::Ifc4::IfcDirection* v1_Axis1, ::Ifc4::IfcDirection* v2_Axis2, ::Ifc4::IfcCartesianPoint* v3_LocalOrigin, boost::optional< double > v4_Scale);
    typedef IfcTemplatedEntityList< IfcCartesianTransformationOperator2D > list;
};
class IFC_PARSE_API IfcCartesianTransformationOperator2DnonUniform : public IfcCartesianTransformationOperator2D {
public:
    bool hasScale2() const;
    double Scale2() const;
    void setScale2(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCartesianTransformationOperator2DnonUniform (IfcEntityInstanceData* e);
    IfcCartesianTransformationOperator2DnonUniform (::Ifc4::IfcDirection* v1_Axis1, ::Ifc4::IfcDirection* v2_Axis2, ::Ifc4::IfcCartesianPoint* v3_LocalOrigin, boost::optional< double > v4_Scale, boost::optional< double > v5_Scale2);
    typedef IfcTemplatedEntityList< IfcCartesianTransformationOperator2DnonUniform > list;
};
class IFC_PARSE_API IfcCartesianTransformationOperator3D : public IfcCartesianTransformationOperator {
public:
    bool hasAxis3() const;
    ::Ifc4::IfcDirection* Axis3() const;
    void setAxis3(::Ifc4::IfcDirection* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCartesianTransformationOperator3D (IfcEntityInstanceData* e);
    IfcCartesianTransformationOperator3D (::Ifc4::IfcDirection* v1_Axis1, ::Ifc4::IfcDirection* v2_Axis2, ::Ifc4::IfcCartesianPoint* v3_LocalOrigin, boost::optional< double > v4_Scale, ::Ifc4::IfcDirection* v5_Axis3);
    typedef IfcTemplatedEntityList< IfcCartesianTransformationOperator3D > list;
};
class IFC_PARSE_API IfcCartesianTransformationOperator3DnonUniform : public IfcCartesianTransformationOperator3D {
public:
    bool hasScale2() const;
    double Scale2() const;
    void setScale2(double v);
    bool hasScale3() const;
    double Scale3() const;
    void setScale3(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCartesianTransformationOperator3DnonUniform (IfcEntityInstanceData* e);
    IfcCartesianTransformationOperator3DnonUniform (::Ifc4::IfcDirection* v1_Axis1, ::Ifc4::IfcDirection* v2_Axis2, ::Ifc4::IfcCartesianPoint* v3_LocalOrigin, boost::optional< double > v4_Scale, ::Ifc4::IfcDirection* v5_Axis3, boost::optional< double > v6_Scale2, boost::optional< double > v7_Scale3);
    typedef IfcTemplatedEntityList< IfcCartesianTransformationOperator3DnonUniform > list;
};
class IFC_PARSE_API IfcCircleProfileDef : public IfcParameterizedProfileDef {
public:
    double Radius() const;
    void setRadius(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCircleProfileDef (IfcEntityInstanceData* e);
    IfcCircleProfileDef (::Ifc4::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4::IfcAxis2Placement2D* v3_Position, double v4_Radius);
    typedef IfcTemplatedEntityList< IfcCircleProfileDef > list;
};
class IFC_PARSE_API IfcClosedShell : public IfcConnectedFaceSet {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcClosedShell (IfcEntityInstanceData* e);
    IfcClosedShell (IfcTemplatedEntityList< ::Ifc4::IfcFace >::ptr v1_CfsFaces);
    typedef IfcTemplatedEntityList< IfcClosedShell > list;
};
class IFC_PARSE_API IfcColourRgb : public IfcColourSpecification {
public:
    double Red() const;
    void setRed(double v);
    double Green() const;
    void setGreen(double v);
    double Blue() const;
    void setBlue(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcColourRgb (IfcEntityInstanceData* e);
    IfcColourRgb (boost::optional< std::string > v1_Name, double v2_Red, double v3_Green, double v4_Blue);
    typedef IfcTemplatedEntityList< IfcColourRgb > list;
};
class IFC_PARSE_API IfcComplexProperty : public IfcProperty {
public:
    std::string UsageName() const;
    void setUsageName(std::string v);
    IfcTemplatedEntityList< ::Ifc4::IfcProperty >::ptr HasProperties() const;
    void setHasProperties(IfcTemplatedEntityList< ::Ifc4::IfcProperty >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcComplexProperty (IfcEntityInstanceData* e);
    IfcComplexProperty (std::string v1_Name, boost::optional< std::string > v2_Description, std::string v3_UsageName, IfcTemplatedEntityList< ::Ifc4::IfcProperty >::ptr v4_HasProperties);
    typedef IfcTemplatedEntityList< IfcComplexProperty > list;
};
class IFC_PARSE_API IfcCompositeCurveSegment : public IfcGeometricRepresentationItem {
public:
    ::Ifc4::IfcTransitionCode::Value Transition() const;
    void setTransition(::Ifc4::IfcTransitionCode::Value v);
    bool SameSense() const;
    void setSameSense(bool v);
    ::Ifc4::IfcCurve* ParentCurve() const;
    void setParentCurve(::Ifc4::IfcCurve* v);
        IfcTemplatedEntityList< IfcCompositeCurve >::ptr UsingCurves() const; // INVERSE IfcCompositeCurve::Segments
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCompositeCurveSegment (IfcEntityInstanceData* e);
    IfcCompositeCurveSegment (::Ifc4::IfcTransitionCode::Value v1_Transition, bool v2_SameSense, ::Ifc4::IfcCurve* v3_ParentCurve);
    typedef IfcTemplatedEntityList< IfcCompositeCurveSegment > list;
};
class IFC_PARSE_API IfcConstructionResourceType : public IfcTypeResource {
public:
    bool hasBaseCosts() const;
    IfcTemplatedEntityList< ::Ifc4::IfcAppliedValue >::ptr BaseCosts() const;
    void setBaseCosts(IfcTemplatedEntityList< ::Ifc4::IfcAppliedValue >::ptr v);
    bool hasBaseQuantity() const;
    ::Ifc4::IfcPhysicalQuantity* BaseQuantity() const;
    void setBaseQuantity(::Ifc4::IfcPhysicalQuantity* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcConstructionResourceType (IfcEntityInstanceData* e);
    IfcConstructionResourceType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcAppliedValue >::ptr > v10_BaseCosts, ::Ifc4::IfcPhysicalQuantity* v11_BaseQuantity);
    typedef IfcTemplatedEntityList< IfcConstructionResourceType > list;
};
class IFC_PARSE_API IfcContext : public IfcObjectDefinition {
public:
    bool hasObjectType() const;
    std::string ObjectType() const;
    void setObjectType(std::string v);
    bool hasLongName() const;
    std::string LongName() const;
    void setLongName(std::string v);
    bool hasPhase() const;
    std::string Phase() const;
    void setPhase(std::string v);
    bool hasRepresentationContexts() const;
    IfcTemplatedEntityList< ::Ifc4::IfcRepresentationContext >::ptr RepresentationContexts() const;
    void setRepresentationContexts(IfcTemplatedEntityList< ::Ifc4::IfcRepresentationContext >::ptr v);
    bool hasUnitsInContext() const;
    ::Ifc4::IfcUnitAssignment* UnitsInContext() const;
    void setUnitsInContext(::Ifc4::IfcUnitAssignment* v);
        IfcTemplatedEntityList< IfcRelDefinesByProperties >::ptr IsDefinedBy() const; // INVERSE IfcRelDefinesByProperties::RelatedObjects
    IfcTemplatedEntityList< IfcRelDeclares >::ptr Declares() const; // INVERSE IfcRelDeclares::RelatingContext
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcContext (IfcEntityInstanceData* e);
    IfcContext (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_LongName, boost::optional< std::string > v7_Phase, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationContext >::ptr > v8_RepresentationContexts, ::Ifc4::IfcUnitAssignment* v9_UnitsInContext);
    typedef IfcTemplatedEntityList< IfcContext > list;
};
class IFC_PARSE_API IfcCrewResourceType : public IfcConstructionResourceType {
public:
    ::Ifc4::IfcCrewResourceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcCrewResourceTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCrewResourceType (IfcEntityInstanceData* e);
    IfcCrewResourceType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcAppliedValue >::ptr > v10_BaseCosts, ::Ifc4::IfcPhysicalQuantity* v11_BaseQuantity, ::Ifc4::IfcCrewResourceTypeEnum::Value v12_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCrewResourceType > list;
};
class IFC_PARSE_API IfcCsgPrimitive3D : public IfcGeometricRepresentationItem {
public:
    ::Ifc4::IfcAxis2Placement3D* Position() const;
    void setPosition(::Ifc4::IfcAxis2Placement3D* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCsgPrimitive3D (IfcEntityInstanceData* e);
    IfcCsgPrimitive3D (::Ifc4::IfcAxis2Placement3D* v1_Position);
    typedef IfcTemplatedEntityList< IfcCsgPrimitive3D > list;
};
class IFC_PARSE_API IfcCsgSolid : public IfcSolidModel {
public:
    ::Ifc4::IfcCsgSelect* TreeRootExpression() const;
    void setTreeRootExpression(::Ifc4::IfcCsgSelect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCsgSolid (IfcEntityInstanceData* e);
    IfcCsgSolid (::Ifc4::IfcCsgSelect* v1_TreeRootExpression);
    typedef IfcTemplatedEntityList< IfcCsgSolid > list;
};
class IFC_PARSE_API IfcCurve : public IfcGeometricRepresentationItem {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCurve (IfcEntityInstanceData* e);
    IfcCurve ();
    typedef IfcTemplatedEntityList< IfcCurve > list;
};
class IFC_PARSE_API IfcCurveBoundedPlane : public IfcBoundedSurface {
public:
    ::Ifc4::IfcPlane* BasisSurface() const;
    void setBasisSurface(::Ifc4::IfcPlane* v);
    ::Ifc4::IfcCurve* OuterBoundary() const;
    void setOuterBoundary(::Ifc4::IfcCurve* v);
    IfcTemplatedEntityList< ::Ifc4::IfcCurve >::ptr InnerBoundaries() const;
    void setInnerBoundaries(IfcTemplatedEntityList< ::Ifc4::IfcCurve >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCurveBoundedPlane (IfcEntityInstanceData* e);
    IfcCurveBoundedPlane (::Ifc4::IfcPlane* v1_BasisSurface, ::Ifc4::IfcCurve* v2_OuterBoundary, IfcTemplatedEntityList< ::Ifc4::IfcCurve >::ptr v3_InnerBoundaries);
    typedef IfcTemplatedEntityList< IfcCurveBoundedPlane > list;
};
class IFC_PARSE_API IfcCurveBoundedSurface : public IfcBoundedSurface {
public:
    ::Ifc4::IfcSurface* BasisSurface() const;
    void setBasisSurface(::Ifc4::IfcSurface* v);
    IfcTemplatedEntityList< ::Ifc4::IfcBoundaryCurve >::ptr Boundaries() const;
    void setBoundaries(IfcTemplatedEntityList< ::Ifc4::IfcBoundaryCurve >::ptr v);
    bool ImplicitOuter() const;
    void setImplicitOuter(bool v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCurveBoundedSurface (IfcEntityInstanceData* e);
    IfcCurveBoundedSurface (::Ifc4::IfcSurface* v1_BasisSurface, IfcTemplatedEntityList< ::Ifc4::IfcBoundaryCurve >::ptr v2_Boundaries, bool v3_ImplicitOuter);
    typedef IfcTemplatedEntityList< IfcCurveBoundedSurface > list;
};
class IFC_PARSE_API IfcDirection : public IfcGeometricRepresentationItem {
public:
    std::vector< double > /*[2:3]*/ DirectionRatios() const;
    void setDirectionRatios(std::vector< double > /*[2:3]*/ v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDirection (IfcEntityInstanceData* e);
    IfcDirection (std::vector< double > /*[2:3]*/ v1_DirectionRatios);
    typedef IfcTemplatedEntityList< IfcDirection > list;
};
class IFC_PARSE_API IfcDoorStyle : public IfcTypeProduct {
public:
    ::Ifc4::IfcDoorStyleOperationEnum::Value OperationType() const;
    void setOperationType(::Ifc4::IfcDoorStyleOperationEnum::Value v);
    ::Ifc4::IfcDoorStyleConstructionEnum::Value ConstructionType() const;
    void setConstructionType(::Ifc4::IfcDoorStyleConstructionEnum::Value v);
    bool ParameterTakesPrecedence() const;
    void setParameterTakesPrecedence(bool v);
    bool Sizeable() const;
    void setSizeable(bool v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDoorStyle (IfcEntityInstanceData* e);
    IfcDoorStyle (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, ::Ifc4::IfcDoorStyleOperationEnum::Value v9_OperationType, ::Ifc4::IfcDoorStyleConstructionEnum::Value v10_ConstructionType, bool v11_ParameterTakesPrecedence, bool v12_Sizeable);
    typedef IfcTemplatedEntityList< IfcDoorStyle > list;
};
class IFC_PARSE_API IfcEdgeLoop : public IfcLoop {
public:
    IfcTemplatedEntityList< ::Ifc4::IfcOrientedEdge >::ptr EdgeList() const;
    void setEdgeList(IfcTemplatedEntityList< ::Ifc4::IfcOrientedEdge >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcEdgeLoop (IfcEntityInstanceData* e);
    IfcEdgeLoop (IfcTemplatedEntityList< ::Ifc4::IfcOrientedEdge >::ptr v1_EdgeList);
    typedef IfcTemplatedEntityList< IfcEdgeLoop > list;
};
class IFC_PARSE_API IfcElementQuantity : public IfcQuantitySet {
public:
    bool hasMethodOfMeasurement() const;
    std::string MethodOfMeasurement() const;
    void setMethodOfMeasurement(std::string v);
    IfcTemplatedEntityList< ::Ifc4::IfcPhysicalQuantity >::ptr Quantities() const;
    void setQuantities(IfcTemplatedEntityList< ::Ifc4::IfcPhysicalQuantity >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcElementQuantity (IfcEntityInstanceData* e);
    IfcElementQuantity (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_MethodOfMeasurement, IfcTemplatedEntityList< ::Ifc4::IfcPhysicalQuantity >::ptr v6_Quantities);
    typedef IfcTemplatedEntityList< IfcElementQuantity > list;
};
class IFC_PARSE_API IfcElementType : public IfcTypeProduct {
public:
    bool hasElementType() const;
    std::string ElementType() const;
    void setElementType(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcElementType (IfcEntityInstanceData* e);
    IfcElementType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcElementType > list;
};
class IFC_PARSE_API IfcElementarySurface : public IfcSurface {
public:
    ::Ifc4::IfcAxis2Placement3D* Position() const;
    void setPosition(::Ifc4::IfcAxis2Placement3D* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcElementarySurface (IfcEntityInstanceData* e);
    IfcElementarySurface (::Ifc4::IfcAxis2Placement3D* v1_Position);
    typedef IfcTemplatedEntityList< IfcElementarySurface > list;
};
class IFC_PARSE_API IfcEllipseProfileDef : public IfcParameterizedProfileDef {
public:
    double SemiAxis1() const;
    void setSemiAxis1(double v);
    double SemiAxis2() const;
    void setSemiAxis2(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcEllipseProfileDef (IfcEntityInstanceData* e);
    IfcEllipseProfileDef (::Ifc4::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4::IfcAxis2Placement2D* v3_Position, double v4_SemiAxis1, double v5_SemiAxis2);
    typedef IfcTemplatedEntityList< IfcEllipseProfileDef > list;
};
class IFC_PARSE_API IfcEventType : public IfcTypeProcess {
public:
    ::Ifc4::IfcEventTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcEventTypeEnum::Value v);
    ::Ifc4::IfcEventTriggerTypeEnum::Value EventTriggerType() const;
    void setEventTriggerType(::Ifc4::IfcEventTriggerTypeEnum::Value v);
    bool hasUserDefinedEventTriggerType() const;
    std::string UserDefinedEventTriggerType() const;
    void setUserDefinedEventTriggerType(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcEventType (IfcEntityInstanceData* e);
    IfcEventType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ProcessType, ::Ifc4::IfcEventTypeEnum::Value v10_PredefinedType, ::Ifc4::IfcEventTriggerTypeEnum::Value v11_EventTriggerType, boost::optional< std::string > v12_UserDefinedEventTriggerType);
    typedef IfcTemplatedEntityList< IfcEventType > list;
};
class IFC_PARSE_API IfcExtrudedAreaSolid : public IfcSweptAreaSolid {
public:
    ::Ifc4::IfcDirection* ExtrudedDirection() const;
    void setExtrudedDirection(::Ifc4::IfcDirection* v);
    double Depth() const;
    void setDepth(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcExtrudedAreaSolid (IfcEntityInstanceData* e);
    IfcExtrudedAreaSolid (::Ifc4::IfcProfileDef* v1_SweptArea, ::Ifc4::IfcAxis2Placement3D* v2_Position, ::Ifc4::IfcDirection* v3_ExtrudedDirection, double v4_Depth);
    typedef IfcTemplatedEntityList< IfcExtrudedAreaSolid > list;
};
class IFC_PARSE_API IfcExtrudedAreaSolidTapered : public IfcExtrudedAreaSolid {
public:
    ::Ifc4::IfcProfileDef* EndSweptArea() const;
    void setEndSweptArea(::Ifc4::IfcProfileDef* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcExtrudedAreaSolidTapered (IfcEntityInstanceData* e);
    IfcExtrudedAreaSolidTapered (::Ifc4::IfcProfileDef* v1_SweptArea, ::Ifc4::IfcAxis2Placement3D* v2_Position, ::Ifc4::IfcDirection* v3_ExtrudedDirection, double v4_Depth, ::Ifc4::IfcProfileDef* v5_EndSweptArea);
    typedef IfcTemplatedEntityList< IfcExtrudedAreaSolidTapered > list;
};
class IFC_PARSE_API IfcFaceBasedSurfaceModel : public IfcGeometricRepresentationItem {
public:
    IfcTemplatedEntityList< ::Ifc4::IfcConnectedFaceSet >::ptr FbsmFaces() const;
    void setFbsmFaces(IfcTemplatedEntityList< ::Ifc4::IfcConnectedFaceSet >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFaceBasedSurfaceModel (IfcEntityInstanceData* e);
    IfcFaceBasedSurfaceModel (IfcTemplatedEntityList< ::Ifc4::IfcConnectedFaceSet >::ptr v1_FbsmFaces);
    typedef IfcTemplatedEntityList< IfcFaceBasedSurfaceModel > list;
};
class IFC_PARSE_API IfcFillAreaStyleHatching : public IfcGeometricRepresentationItem {
public:
    ::Ifc4::IfcCurveStyle* HatchLineAppearance() const;
    void setHatchLineAppearance(::Ifc4::IfcCurveStyle* v);
    ::Ifc4::IfcHatchLineDistanceSelect* StartOfNextHatchLine() const;
    void setStartOfNextHatchLine(::Ifc4::IfcHatchLineDistanceSelect* v);
    bool hasPointOfReferenceHatchLine() const;
    ::Ifc4::IfcCartesianPoint* PointOfReferenceHatchLine() const;
    void setPointOfReferenceHatchLine(::Ifc4::IfcCartesianPoint* v);
    bool hasPatternStart() const;
    ::Ifc4::IfcCartesianPoint* PatternStart() const;
    void setPatternStart(::Ifc4::IfcCartesianPoint* v);
    double HatchLineAngle() const;
    void setHatchLineAngle(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFillAreaStyleHatching (IfcEntityInstanceData* e);
    IfcFillAreaStyleHatching (::Ifc4::IfcCurveStyle* v1_HatchLineAppearance, ::Ifc4::IfcHatchLineDistanceSelect* v2_StartOfNextHatchLine, ::Ifc4::IfcCartesianPoint* v3_PointOfReferenceHatchLine, ::Ifc4::IfcCartesianPoint* v4_PatternStart, double v5_HatchLineAngle);
    typedef IfcTemplatedEntityList< IfcFillAreaStyleHatching > list;
};
class IFC_PARSE_API IfcFillAreaStyleTiles : public IfcGeometricRepresentationItem {
public:
    IfcTemplatedEntityList< ::Ifc4::IfcVector >::ptr TilingPattern() const;
    void setTilingPattern(IfcTemplatedEntityList< ::Ifc4::IfcVector >::ptr v);
    IfcTemplatedEntityList< ::Ifc4::IfcStyledItem >::ptr Tiles() const;
    void setTiles(IfcTemplatedEntityList< ::Ifc4::IfcStyledItem >::ptr v);
    double TilingScale() const;
    void setTilingScale(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFillAreaStyleTiles (IfcEntityInstanceData* e);
    IfcFillAreaStyleTiles (IfcTemplatedEntityList< ::Ifc4::IfcVector >::ptr v1_TilingPattern, IfcTemplatedEntityList< ::Ifc4::IfcStyledItem >::ptr v2_Tiles, double v3_TilingScale);
    typedef IfcTemplatedEntityList< IfcFillAreaStyleTiles > list;
};
class IFC_PARSE_API IfcFixedReferenceSweptAreaSolid : public IfcSweptAreaSolid {
public:
    ::Ifc4::IfcCurve* Directrix() const;
    void setDirectrix(::Ifc4::IfcCurve* v);
    bool hasStartParam() const;
    double StartParam() const;
    void setStartParam(double v);
    bool hasEndParam() const;
    double EndParam() const;
    void setEndParam(double v);
    ::Ifc4::IfcDirection* FixedReference() const;
    void setFixedReference(::Ifc4::IfcDirection* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFixedReferenceSweptAreaSolid (IfcEntityInstanceData* e);
    IfcFixedReferenceSweptAreaSolid (::Ifc4::IfcProfileDef* v1_SweptArea, ::Ifc4::IfcAxis2Placement3D* v2_Position, ::Ifc4::IfcCurve* v3_Directrix, boost::optional< double > v4_StartParam, boost::optional< double > v5_EndParam, ::Ifc4::IfcDirection* v6_FixedReference);
    typedef IfcTemplatedEntityList< IfcFixedReferenceSweptAreaSolid > list;
};
class IFC_PARSE_API IfcFurnishingElementType : public IfcElementType {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFurnishingElementType (IfcEntityInstanceData* e);
    IfcFurnishingElementType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcFurnishingElementType > list;
};
class IFC_PARSE_API IfcFurnitureType : public IfcFurnishingElementType {
public:
    ::Ifc4::IfcAssemblyPlaceEnum::Value AssemblyPlace() const;
    void setAssemblyPlace(::Ifc4::IfcAssemblyPlaceEnum::Value v);
    bool hasPredefinedType() const;
    ::Ifc4::IfcFurnitureTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcFurnitureTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFurnitureType (IfcEntityInstanceData* e);
    IfcFurnitureType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcAssemblyPlaceEnum::Value v10_AssemblyPlace, boost::optional< ::Ifc4::IfcFurnitureTypeEnum::Value > v11_PredefinedType);
    typedef IfcTemplatedEntityList< IfcFurnitureType > list;
};
class IFC_PARSE_API IfcGeographicElementType : public IfcElementType {
public:
    ::Ifc4::IfcGeographicElementTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcGeographicElementTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcGeographicElementType (IfcEntityInstanceData* e);
    IfcGeographicElementType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcGeographicElementTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcGeographicElementType > list;
};
class IFC_PARSE_API IfcGeometricCurveSet : public IfcGeometricSet {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcGeometricCurveSet (IfcEntityInstanceData* e);
    IfcGeometricCurveSet (IfcEntityList::ptr v1_Elements);
    typedef IfcTemplatedEntityList< IfcGeometricCurveSet > list;
};
class IFC_PARSE_API IfcIShapeProfileDef : public IfcParameterizedProfileDef {
public:
    double OverallWidth() const;
    void setOverallWidth(double v);
    double OverallDepth() const;
    void setOverallDepth(double v);
    double WebThickness() const;
    void setWebThickness(double v);
    double FlangeThickness() const;
    void setFlangeThickness(double v);
    bool hasFilletRadius() const;
    double FilletRadius() const;
    void setFilletRadius(double v);
    bool hasFlangeEdgeRadius() const;
    double FlangeEdgeRadius() const;
    void setFlangeEdgeRadius(double v);
    bool hasFlangeSlope() const;
    double FlangeSlope() const;
    void setFlangeSlope(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcIShapeProfileDef (IfcEntityInstanceData* e);
    IfcIShapeProfileDef (::Ifc4::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4::IfcAxis2Placement2D* v3_Position, double v4_OverallWidth, double v5_OverallDepth, double v6_WebThickness, double v7_FlangeThickness, boost::optional< double > v8_FilletRadius, boost::optional< double > v9_FlangeEdgeRadius, boost::optional< double > v10_FlangeSlope);
    typedef IfcTemplatedEntityList< IfcIShapeProfileDef > list;
};

class IFC_PARSE_API IfcIndexedPolygonalFace : public IfcTessellatedItem {
public:
    std::vector< int > /*[3:?]*/ CoordIndex() const;
    void setCoordIndex(std::vector< int > /*[3:?]*/ v);
        IfcTemplatedEntityList< IfcPolygonalFaceSet >::ptr ToFaceSet() const; // INVERSE IfcPolygonalFaceSet::Faces
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcIndexedPolygonalFace (IfcEntityInstanceData* e);
    IfcIndexedPolygonalFace (std::vector< int > /*[3:?]*/ v1_CoordIndex);
    typedef IfcTemplatedEntityList< IfcIndexedPolygonalFace > list;
};

class IFC_PARSE_API IfcIndexedPolygonalFaceWithVoids : public IfcIndexedPolygonalFace {
public:
    std::vector< std::vector< int > > InnerCoordIndices() const;
    void setInnerCoordIndices(std::vector< std::vector< int > > v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcIndexedPolygonalFaceWithVoids (IfcEntityInstanceData* e);
    IfcIndexedPolygonalFaceWithVoids (std::vector< int > /*[3:?]*/ v1_CoordIndex, std::vector< std::vector< int > > v2_InnerCoordIndices);
    typedef IfcTemplatedEntityList< IfcIndexedPolygonalFaceWithVoids > list;
};
class IFC_PARSE_API IfcLShapeProfileDef : public IfcParameterizedProfileDef {
public:
    double Depth() const;
    void setDepth(double v);
    bool hasWidth() const;
    double Width() const;
    void setWidth(double v);
    double Thickness() const;
    void setThickness(double v);
    bool hasFilletRadius() const;
    double FilletRadius() const;
    void setFilletRadius(double v);
    bool hasEdgeRadius() const;
    double EdgeRadius() const;
    void setEdgeRadius(double v);
    bool hasLegSlope() const;
    double LegSlope() const;
    void setLegSlope(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLShapeProfileDef (IfcEntityInstanceData* e);
    IfcLShapeProfileDef (::Ifc4::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4::IfcAxis2Placement2D* v3_Position, double v4_Depth, boost::optional< double > v5_Width, double v6_Thickness, boost::optional< double > v7_FilletRadius, boost::optional< double > v8_EdgeRadius, boost::optional< double > v9_LegSlope);
    typedef IfcTemplatedEntityList< IfcLShapeProfileDef > list;
};
class IFC_PARSE_API IfcLaborResourceType : public IfcConstructionResourceType {
public:
    ::Ifc4::IfcLaborResourceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcLaborResourceTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLaborResourceType (IfcEntityInstanceData* e);
    IfcLaborResourceType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcAppliedValue >::ptr > v10_BaseCosts, ::Ifc4::IfcPhysicalQuantity* v11_BaseQuantity, ::Ifc4::IfcLaborResourceTypeEnum::Value v12_PredefinedType);
    typedef IfcTemplatedEntityList< IfcLaborResourceType > list;
};
class IFC_PARSE_API IfcLine : public IfcCurve {
public:
    ::Ifc4::IfcCartesianPoint* Pnt() const;
    void setPnt(::Ifc4::IfcCartesianPoint* v);
    ::Ifc4::IfcVector* Dir() const;
    void setDir(::Ifc4::IfcVector* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLine (IfcEntityInstanceData* e);
    IfcLine (::Ifc4::IfcCartesianPoint* v1_Pnt, ::Ifc4::IfcVector* v2_Dir);
    typedef IfcTemplatedEntityList< IfcLine > list;
};
class IFC_PARSE_API IfcManifoldSolidBrep : public IfcSolidModel {
public:
    ::Ifc4::IfcClosedShell* Outer() const;
    void setOuter(::Ifc4::IfcClosedShell* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcManifoldSolidBrep (IfcEntityInstanceData* e);
    IfcManifoldSolidBrep (::Ifc4::IfcClosedShell* v1_Outer);
    typedef IfcTemplatedEntityList< IfcManifoldSolidBrep > list;
};
class IFC_PARSE_API IfcObject : public IfcObjectDefinition {
public:
    bool hasObjectType() const;
    std::string ObjectType() const;
    void setObjectType(std::string v);
        IfcTemplatedEntityList< IfcRelDefinesByObject >::ptr IsDeclaredBy() const; // INVERSE IfcRelDefinesByObject::RelatedObjects
    IfcTemplatedEntityList< IfcRelDefinesByObject >::ptr Declares() const; // INVERSE IfcRelDefinesByObject::RelatingObject
    IfcTemplatedEntityList< IfcRelDefinesByType >::ptr IsTypedBy() const; // INVERSE IfcRelDefinesByType::RelatedObjects
    IfcTemplatedEntityList< IfcRelDefinesByProperties >::ptr IsDefinedBy() const; // INVERSE IfcRelDefinesByProperties::RelatedObjects
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcObject (IfcEntityInstanceData* e);
    IfcObject (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType);
    typedef IfcTemplatedEntityList< IfcObject > list;
};
class IFC_PARSE_API IfcOffsetCurve2D : public IfcCurve {
public:
    ::Ifc4::IfcCurve* BasisCurve() const;
    void setBasisCurve(::Ifc4::IfcCurve* v);
    double Distance() const;
    void setDistance(double v);
    bool SelfIntersect() const;
    void setSelfIntersect(bool v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcOffsetCurve2D (IfcEntityInstanceData* e);
    IfcOffsetCurve2D (::Ifc4::IfcCurve* v1_BasisCurve, double v2_Distance, bool v3_SelfIntersect);
    typedef IfcTemplatedEntityList< IfcOffsetCurve2D > list;
};
class IFC_PARSE_API IfcOffsetCurve3D : public IfcCurve {
public:
    ::Ifc4::IfcCurve* BasisCurve() const;
    void setBasisCurve(::Ifc4::IfcCurve* v);
    double Distance() const;
    void setDistance(double v);
    bool SelfIntersect() const;
    void setSelfIntersect(bool v);
    ::Ifc4::IfcDirection* RefDirection() const;
    void setRefDirection(::Ifc4::IfcDirection* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcOffsetCurve3D (IfcEntityInstanceData* e);
    IfcOffsetCurve3D (::Ifc4::IfcCurve* v1_BasisCurve, double v2_Distance, bool v3_SelfIntersect, ::Ifc4::IfcDirection* v4_RefDirection);
    typedef IfcTemplatedEntityList< IfcOffsetCurve3D > list;
};
class IFC_PARSE_API IfcPcurve : public IfcCurve {
public:
    ::Ifc4::IfcSurface* BasisSurface() const;
    void setBasisSurface(::Ifc4::IfcSurface* v);
    ::Ifc4::IfcCurve* ReferenceCurve() const;
    void setReferenceCurve(::Ifc4::IfcCurve* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPcurve (IfcEntityInstanceData* e);
    IfcPcurve (::Ifc4::IfcSurface* v1_BasisSurface, ::Ifc4::IfcCurve* v2_ReferenceCurve);
    typedef IfcTemplatedEntityList< IfcPcurve > list;
};
class IFC_PARSE_API IfcPlanarBox : public IfcPlanarExtent {
public:
    ::Ifc4::IfcAxis2Placement* Placement() const;
    void setPlacement(::Ifc4::IfcAxis2Placement* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPlanarBox (IfcEntityInstanceData* e);
    IfcPlanarBox (double v1_SizeInX, double v2_SizeInY, ::Ifc4::IfcAxis2Placement* v3_Placement);
    typedef IfcTemplatedEntityList< IfcPlanarBox > list;
};
class IFC_PARSE_API IfcPlane : public IfcElementarySurface {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPlane (IfcEntityInstanceData* e);
    IfcPlane (::Ifc4::IfcAxis2Placement3D* v1_Position);
    typedef IfcTemplatedEntityList< IfcPlane > list;
};
class IFC_PARSE_API IfcPreDefinedColour : public IfcPreDefinedItem {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPreDefinedColour (IfcEntityInstanceData* e);
    IfcPreDefinedColour (std::string v1_Name);
    typedef IfcTemplatedEntityList< IfcPreDefinedColour > list;
};
class IFC_PARSE_API IfcPreDefinedCurveFont : public IfcPreDefinedItem {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPreDefinedCurveFont (IfcEntityInstanceData* e);
    IfcPreDefinedCurveFont (std::string v1_Name);
    typedef IfcTemplatedEntityList< IfcPreDefinedCurveFont > list;
};
class IFC_PARSE_API IfcPreDefinedPropertySet : public IfcPropertySetDefinition {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPreDefinedPropertySet (IfcEntityInstanceData* e);
    IfcPreDefinedPropertySet (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description);
    typedef IfcTemplatedEntityList< IfcPreDefinedPropertySet > list;
};
class IFC_PARSE_API IfcProcedureType : public IfcTypeProcess {
public:
    ::Ifc4::IfcProcedureTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcProcedureTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcProcedureType (IfcEntityInstanceData* e);
    IfcProcedureType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ProcessType, ::Ifc4::IfcProcedureTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcProcedureType > list;
};
class IFC_PARSE_API IfcProcess : public IfcObject {
public:
    bool hasIdentification() const;
    std::string Identification() const;
    void setIdentification(std::string v);
    bool hasLongDescription() const;
    std::string LongDescription() const;
    void setLongDescription(std::string v);
        IfcTemplatedEntityList< IfcRelSequence >::ptr IsPredecessorTo() const; // INVERSE IfcRelSequence::RelatingProcess
    IfcTemplatedEntityList< IfcRelSequence >::ptr IsSuccessorFrom() const; // INVERSE IfcRelSequence::RelatedProcess
    IfcTemplatedEntityList< IfcRelAssignsToProcess >::ptr OperatesOn() const; // INVERSE IfcRelAssignsToProcess::RelatingProcess
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcProcess (IfcEntityInstanceData* e);
    IfcProcess (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription);
    typedef IfcTemplatedEntityList< IfcProcess > list;
};
class IFC_PARSE_API IfcProduct : public IfcObject {
public:
    bool hasObjectPlacement() const;
    ::Ifc4::IfcObjectPlacement* ObjectPlacement() const;
    void setObjectPlacement(::Ifc4::IfcObjectPlacement* v);
    bool hasRepresentation() const;
    ::Ifc4::IfcProductRepresentation* Representation() const;
    void setRepresentation(::Ifc4::IfcProductRepresentation* v);
        IfcTemplatedEntityList< IfcRelAssignsToProduct >::ptr ReferencedBy() const; // INVERSE IfcRelAssignsToProduct::RelatingProduct
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcProduct (IfcEntityInstanceData* e);
    IfcProduct (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation);
    typedef IfcTemplatedEntityList< IfcProduct > list;
};
class IFC_PARSE_API IfcProject : public IfcContext {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcProject (IfcEntityInstanceData* e);
    IfcProject (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_LongName, boost::optional< std::string > v7_Phase, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationContext >::ptr > v8_RepresentationContexts, ::Ifc4::IfcUnitAssignment* v9_UnitsInContext);
    typedef IfcTemplatedEntityList< IfcProject > list;
};
class IFC_PARSE_API IfcProjectLibrary : public IfcContext {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcProjectLibrary (IfcEntityInstanceData* e);
    IfcProjectLibrary (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_LongName, boost::optional< std::string > v7_Phase, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationContext >::ptr > v8_RepresentationContexts, ::Ifc4::IfcUnitAssignment* v9_UnitsInContext);
    typedef IfcTemplatedEntityList< IfcProjectLibrary > list;
};
class IFC_PARSE_API IfcPropertyBoundedValue : public IfcSimpleProperty {
public:
    bool hasUpperBoundValue() const;
    ::Ifc4::IfcValue* UpperBoundValue() const;
    void setUpperBoundValue(::Ifc4::IfcValue* v);
    bool hasLowerBoundValue() const;
    ::Ifc4::IfcValue* LowerBoundValue() const;
    void setLowerBoundValue(::Ifc4::IfcValue* v);
    bool hasUnit() const;
    ::Ifc4::IfcUnit* Unit() const;
    void setUnit(::Ifc4::IfcUnit* v);
    bool hasSetPointValue() const;
    ::Ifc4::IfcValue* SetPointValue() const;
    void setSetPointValue(::Ifc4::IfcValue* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPropertyBoundedValue (IfcEntityInstanceData* e);
    IfcPropertyBoundedValue (std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4::IfcValue* v3_UpperBoundValue, ::Ifc4::IfcValue* v4_LowerBoundValue, ::Ifc4::IfcUnit* v5_Unit, ::Ifc4::IfcValue* v6_SetPointValue);
    typedef IfcTemplatedEntityList< IfcPropertyBoundedValue > list;
};
class IFC_PARSE_API IfcPropertyEnumeratedValue : public IfcSimpleProperty {
public:
    bool hasEnumerationValues() const;
    IfcEntityList::ptr EnumerationValues() const;
    void setEnumerationValues(IfcEntityList::ptr v);
    bool hasEnumerationReference() const;
    ::Ifc4::IfcPropertyEnumeration* EnumerationReference() const;
    void setEnumerationReference(::Ifc4::IfcPropertyEnumeration* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPropertyEnumeratedValue (IfcEntityInstanceData* e);
    IfcPropertyEnumeratedValue (std::string v1_Name, boost::optional< std::string > v2_Description, boost::optional< IfcEntityList::ptr > v3_EnumerationValues, ::Ifc4::IfcPropertyEnumeration* v4_EnumerationReference);
    typedef IfcTemplatedEntityList< IfcPropertyEnumeratedValue > list;
};
class IFC_PARSE_API IfcPropertyListValue : public IfcSimpleProperty {
public:
    bool hasListValues() const;
    IfcEntityList::ptr ListValues() const;
    void setListValues(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();
    IfcPropertyListValue (IfcEntityInstanceData* e);
    IfcPropertyListValue (std::string v1_Name, boost::optional< std::string > v2_Description, boost::optional< IfcEntityList::ptr > v3_ListValues, ::Ifc4::IfcUnit* v4_Unit);
    typedef IfcTemplatedEntityList< IfcPropertyListValue > list;
};
class IFC_PARSE_API IfcPropertyReferenceValue : public IfcSimpleProperty {
public:
    bool hasUsageName() const;
    std::string UsageName() const;
    void setUsageName(std::string v);
    bool hasPropertyReference() const;
    ::Ifc4::IfcObjectReferenceSelect* PropertyReference() const;
    void setPropertyReference(::Ifc4::IfcObjectReferenceSelect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPropertyReferenceValue (IfcEntityInstanceData* e);
    IfcPropertyReferenceValue (std::string v1_Name, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_UsageName, ::Ifc4::IfcObjectReferenceSelect* v4_PropertyReference);
    typedef IfcTemplatedEntityList< IfcPropertyReferenceValue > list;
};
class IFC_PARSE_API IfcPropertySet : public IfcPropertySetDefinition {
public:
    IfcTemplatedEntityList< ::Ifc4::IfcProperty >::ptr HasProperties() const;
    void setHasProperties(IfcTemplatedEntityList< ::Ifc4::IfcProperty >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPropertySet (IfcEntityInstanceData* e);
    IfcPropertySet (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc4::IfcProperty >::ptr v5_HasProperties);
    typedef IfcTemplatedEntityList< IfcPropertySet > list;
};
class IFC_PARSE_API IfcPropertySetTemplate : public IfcPropertyTemplateDefinition {
public:
    bool hasTemplateType() const;
    ::Ifc4::IfcPropertySetTemplateTypeEnum::Value TemplateType() const;
    void setTemplateType(::Ifc4::IfcPropertySetTemplateTypeEnum::Value v);
    bool hasApplicableEntity() const;
    std::string ApplicableEntity() const;
    void setApplicableEntity(std::string v);
    IfcTemplatedEntityList< ::Ifc4::IfcPropertyTemplate >::ptr HasPropertyTemplates() const;
    void setHasPropertyTemplates(IfcTemplatedEntityList< ::Ifc4::IfcPropertyTemplate >::ptr v);
        IfcTemplatedEntityList< IfcRelDefinesByTemplate >::ptr Defines() const; // INVERSE IfcRelDefinesByTemplate::RelatingTemplate
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPropertySetTemplate (IfcEntityInstanceData* e);
    IfcPropertySetTemplate (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< ::Ifc4::IfcPropertySetTemplateTypeEnum::Value > v5_TemplateType, boost::optional< std::string > v6_ApplicableEntity, IfcTemplatedEntityList< ::Ifc4::IfcPropertyTemplate >::ptr v7_HasPropertyTemplates);
    typedef IfcTemplatedEntityList< IfcPropertySetTemplate > list;
};
class IFC_PARSE_API IfcPropertySingleValue : public IfcSimpleProperty {
public:
    bool hasNominalValue() const;
    ::Ifc4::IfcValue* NominalValue() const;
    void setNominalValue(::Ifc4::IfcValue* v);
    bool hasUnit() const;
    ::Ifc4::IfcUnit* Unit() const;
    void setUnit(::Ifc4::IfcUnit* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPropertySingleValue (IfcEntityInstanceData* e);
    IfcPropertySingleValue (std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4::IfcValue* v3_NominalValue, ::Ifc4::IfcUnit* v4_Unit);
    typedef IfcTemplatedEntityList< IfcPropertySingleValue > list;
};
class IFC_PARSE_API IfcPropertyTableValue : public IfcSimpleProperty {
public:
    bool hasDefiningValues() const;
    IfcEntityList::ptr DefiningValues() const;
    void setDefiningValues(IfcEntityList::ptr v);
    bool hasDefinedValues() const;
    IfcEntityList::ptr DefinedValues() const;
    void setDefinedValues(IfcEntityList::ptr v);
    bool hasExpression() const;
    std::string Expression() const;
    void setExpression(std::string v);
    bool hasDefiningUnit() const;
    ::Ifc4::IfcUnit* DefiningUnit() const;
    void setDefiningUnit(::Ifc4::IfcUnit* v);
    bool hasDefinedUnit() const;
    ::Ifc4::IfcUnit* DefinedUnit() const;
    void setDefinedUnit(::Ifc4::IfcUnit* v);
    bool hasCurveInterpolation() const;
    ::Ifc4::IfcCurveInterpolationEnum::Value CurveInterpolation() const;
    void setCurveInterpolation(::Ifc4::IfcCurveInterpolationEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPropertyTableValue (IfcEntityInstanceData* e);
    IfcPropertyTableValue (std::string v1_Name, boost::optional< std::string > v2_Description, boost::optional< IfcEntityList::ptr > v3_DefiningValues, boost::optional< IfcEntityList::ptr > v4_DefinedValues, boost::optional< std::string > v5_Expression, ::Ifc4::IfcUnit* v6_DefiningUnit, ::Ifc4::IfcUnit* v7_DefinedUnit, boost::optional< ::Ifc4::IfcCurveInterpolationEnum::Value > v8_CurveInterpolation);
    typedef IfcTemplatedEntityList< IfcPropertyTableValue > list;
};
class IFC_PARSE_API IfcPropertyTemplate : public IfcPropertyTemplateDefinition {
public:
        IfcTemplatedEntityList< IfcComplexPropertyTemplate >::ptr PartOfComplexTemplate() const; // INVERSE IfcComplexPropertyTemplate::HasPropertyTemplates
    IfcTemplatedEntityList< IfcPropertySetTemplate >::ptr PartOfPsetTemplate() const; // INVERSE IfcPropertySetTemplate::HasPropertyTemplates
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPropertyTemplate (IfcEntityInstanceData* e);
    IfcPropertyTemplate (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description);
    typedef IfcTemplatedEntityList< IfcPropertyTemplate > list;
};
class IFC_PARSE_API IfcProxy : public IfcProduct {
public:
    ::Ifc4::IfcObjectTypeEnum::Value ProxyType() const;
    void setProxyType(::Ifc4::IfcObjectTypeEnum::Value v);
    bool hasTag() const;
    std::string Tag() const;
    void setTag(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcProxy (IfcEntityInstanceData* e);
    IfcProxy (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, ::Ifc4::IfcObjectTypeEnum::Value v8_ProxyType, boost::optional< std::string > v9_Tag);
    typedef IfcTemplatedEntityList< IfcProxy > list;
};
class IFC_PARSE_API IfcRectangleHollowProfileDef : public IfcRectangleProfileDef {
public:
    double WallThickness() const;
    void setWallThickness(double v);
    bool hasInnerFilletRadius() const;
    double InnerFilletRadius() const;
    void setInnerFilletRadius(double v);
    bool hasOuterFilletRadius() const;
    double OuterFilletRadius() const;
    void setOuterFilletRadius(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRectangleHollowProfileDef (IfcEntityInstanceData* e);
    IfcRectangleHollowProfileDef (::Ifc4::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4::IfcAxis2Placement2D* v3_Position, double v4_XDim, double v5_YDim, double v6_WallThickness, boost::optional< double > v7_InnerFilletRadius, boost::optional< double > v8_OuterFilletRadius);
    typedef IfcTemplatedEntityList< IfcRectangleHollowProfileDef > list;
};
class IFC_PARSE_API IfcRectangularPyramid : public IfcCsgPrimitive3D {
public:
    double XLength() const;
    void setXLength(double v);
    double YLength() const;
    void setYLength(double v);
    double Height() const;
    void setHeight(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRectangularPyramid (IfcEntityInstanceData* e);
    IfcRectangularPyramid (::Ifc4::IfcAxis2Placement3D* v1_Position, double v2_XLength, double v3_YLength, double v4_Height);
    typedef IfcTemplatedEntityList< IfcRectangularPyramid > list;
};
class IFC_PARSE_API IfcRectangularTrimmedSurface : public IfcBoundedSurface {
public:
    ::Ifc4::IfcSurface* BasisSurface() const;
    void setBasisSurface(::Ifc4::IfcSurface* v);
    double U1() const;
    void setU1(double v);
    double V1() const;
    void setV1(double v);
    double U2() const;
    void setU2(double v);
    double V2() const;
    void setV2(double v);
    bool Usense() const;
    void setUsense(bool v);
    bool Vsense() const;
    void setVsense(bool v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRectangularTrimmedSurface (IfcEntityInstanceData* e);
    IfcRectangularTrimmedSurface (::Ifc4::IfcSurface* v1_BasisSurface, double v2_U1, double v3_V1, double v4_U2, double v5_V2, bool v6_Usense, bool v7_Vsense);
    typedef IfcTemplatedEntityList< IfcRectangularTrimmedSurface > list;
};
class IFC_PARSE_API IfcReinforcementDefinitionProperties : public IfcPreDefinedPropertySet {
public:
    bool hasDefinitionType() const;
    std::string DefinitionType() const;
    void setDefinitionType(std::string v);
    IfcTemplatedEntityList< ::Ifc4::IfcSectionReinforcementProperties >::ptr ReinforcementSectionDefinitions() const;
    void setReinforcementSectionDefinitions(IfcTemplatedEntityList< ::Ifc4::IfcSectionReinforcementProperties >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcReinforcementDefinitionProperties (IfcEntityInstanceData* e);
    IfcReinforcementDefinitionProperties (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_DefinitionType, IfcTemplatedEntityList< ::Ifc4::IfcSectionReinforcementProperties >::ptr v6_ReinforcementSectionDefinitions);
    typedef IfcTemplatedEntityList< IfcReinforcementDefinitionProperties > list;
};
class IFC_PARSE_API IfcRelAssigns : public IfcRelationship {
public:
    IfcTemplatedEntityList< ::Ifc4::IfcObjectDefinition >::ptr RelatedObjects() const;
    void setRelatedObjects(IfcTemplatedEntityList< ::Ifc4::IfcObjectDefinition >::ptr v);
    bool hasRelatedObjectsType() const;
    ::Ifc4::IfcObjectTypeEnum::Value RelatedObjectsType() const;
    void setRelatedObjectsType(::Ifc4::IfcObjectTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelAssigns (IfcEntityInstanceData* e);
    IfcRelAssigns (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc4::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< ::Ifc4::IfcObjectTypeEnum::Value > v6_RelatedObjectsType);
    typedef IfcTemplatedEntityList< IfcRelAssigns > list;
};
class IFC_PARSE_API IfcRelAssignsToActor : public IfcRelAssigns {
public:
    ::Ifc4::IfcActor* RelatingActor() const;
    void setRelatingActor(::Ifc4::IfcActor* v);
    bool hasActingRole() const;
    ::Ifc4::IfcActorRole* ActingRole() const;
    void setActingRole(::Ifc4::IfcActorRole* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelAssignsToActor (IfcEntityInstanceData* e);
    IfcRelAssignsToActor (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc4::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< ::Ifc4::IfcObjectTypeEnum::Value > v6_RelatedObjectsType, ::Ifc4::IfcActor* v7_RelatingActor, ::Ifc4::IfcActorRole* v8_ActingRole);
    typedef IfcTemplatedEntityList< IfcRelAssignsToActor > list;
};
class IFC_PARSE_API IfcRelAssignsToControl : public IfcRelAssigns {
public:
    ::Ifc4::IfcControl* RelatingControl() const;
    void setRelatingControl(::Ifc4::IfcControl* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelAssignsToControl (IfcEntityInstanceData* e);
    IfcRelAssignsToControl (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc4::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< ::Ifc4::IfcObjectTypeEnum::Value > v6_RelatedObjectsType, ::Ifc4::IfcControl* v7_RelatingControl);
    typedef IfcTemplatedEntityList< IfcRelAssignsToControl > list;
};
class IFC_PARSE_API IfcRelAssignsToGroup : public IfcRelAssigns {
public:
    ::Ifc4::IfcGroup* RelatingGroup() const;
    void setRelatingGroup(::Ifc4::IfcGroup* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelAssignsToGroup (IfcEntityInstanceData* e);
    IfcRelAssignsToGroup (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc4::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< ::Ifc4::IfcObjectTypeEnum::Value > v6_RelatedObjectsType, ::Ifc4::IfcGroup* v7_RelatingGroup);
    typedef IfcTemplatedEntityList< IfcRelAssignsToGroup > list;
};
class IFC_PARSE_API IfcRelAssignsToGroupByFactor : public IfcRelAssignsToGroup {
public:
    double Factor() const;
    void setFactor(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelAssignsToGroupByFactor (IfcEntityInstanceData* e);
    IfcRelAssignsToGroupByFactor (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc4::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< ::Ifc4::IfcObjectTypeEnum::Value > v6_RelatedObjectsType, ::Ifc4::IfcGroup* v7_RelatingGroup, double v8_Factor);
    typedef IfcTemplatedEntityList< IfcRelAssignsToGroupByFactor > list;
};
class IFC_PARSE_API IfcRelAssignsToProcess : public IfcRelAssigns {
public:
    ::Ifc4::IfcProcessSelect* RelatingProcess() const;
    void setRelatingProcess(::Ifc4::IfcProcessSelect* v);
    bool hasQuantityInProcess() const;
    ::Ifc4::IfcMeasureWithUnit* QuantityInProcess() const;
    void setQuantityInProcess(::Ifc4::IfcMeasureWithUnit* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelAssignsToProcess (IfcEntityInstanceData* e);
    IfcRelAssignsToProcess (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc4::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< ::Ifc4::IfcObjectTypeEnum::Value > v6_RelatedObjectsType, ::Ifc4::IfcProcessSelect* v7_RelatingProcess, ::Ifc4::IfcMeasureWithUnit* v8_QuantityInProcess);
    typedef IfcTemplatedEntityList< IfcRelAssignsToProcess > list;
};
class IFC_PARSE_API IfcRelAssignsToProduct : public IfcRelAssigns {
public:
    ::Ifc4::IfcProductSelect* RelatingProduct() const;
    void setRelatingProduct(::Ifc4::IfcProductSelect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelAssignsToProduct (IfcEntityInstanceData* e);
    IfcRelAssignsToProduct (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc4::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< ::Ifc4::IfcObjectTypeEnum::Value > v6_RelatedObjectsType, ::Ifc4::IfcProductSelect* v7_RelatingProduct);
    typedef IfcTemplatedEntityList< IfcRelAssignsToProduct > list;
};
class IFC_PARSE_API IfcRelAssignsToResource : public IfcRelAssigns {
public:
    ::Ifc4::IfcResourceSelect* RelatingResource() const;
    void setRelatingResource(::Ifc4::IfcResourceSelect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelAssignsToResource (IfcEntityInstanceData* e);
    IfcRelAssignsToResource (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc4::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< ::Ifc4::IfcObjectTypeEnum::Value > v6_RelatedObjectsType, ::Ifc4::IfcResourceSelect* v7_RelatingResource);
    typedef IfcTemplatedEntityList< IfcRelAssignsToResource > list;
};
class IFC_PARSE_API IfcRelAssociates : public IfcRelationship {
public:
    IfcEntityList::ptr RelatedObjects() const;
    void setRelatedObjects(IfcEntityList::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelAssociates (IfcEntityInstanceData* e);
    IfcRelAssociates (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcEntityList::ptr v5_RelatedObjects);
    typedef IfcTemplatedEntityList< IfcRelAssociates > list;
};
class IFC_PARSE_API IfcRelAssociatesApproval : public IfcRelAssociates {
public:
    ::Ifc4::IfcApproval* RelatingApproval() const;
    void setRelatingApproval(::Ifc4::IfcApproval* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelAssociatesApproval (IfcEntityInstanceData* e);
    IfcRelAssociatesApproval (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcEntityList::ptr v5_RelatedObjects, ::Ifc4::IfcApproval* v6_RelatingApproval);
    typedef IfcTemplatedEntityList< IfcRelAssociatesApproval > list;
};
class IFC_PARSE_API IfcRelAssociatesClassification : public IfcRelAssociates {
public:
    ::Ifc4::IfcClassificationSelect* RelatingClassification() const;
    void setRelatingClassification(::Ifc4::IfcClassificationSelect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelAssociatesClassification (IfcEntityInstanceData* e);
    IfcRelAssociatesClassification (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcEntityList::ptr v5_RelatedObjects, ::Ifc4::IfcClassificationSelect* v6_RelatingClassification);
    typedef IfcTemplatedEntityList< IfcRelAssociatesClassification > list;
};
class IFC_PARSE_API IfcRelAssociatesConstraint : public IfcRelAssociates {
public:
    bool hasIntent() const;
    std::string Intent() const;
    void setIntent(std::string v);
    ::Ifc4::IfcConstraint* RelatingConstraint() const;
    void setRelatingConstraint(::Ifc4::IfcConstraint* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelAssociatesConstraint (IfcEntityInstanceData* e);
    IfcRelAssociatesConstraint (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcEntityList::ptr v5_RelatedObjects, boost::optional< std::string > v6_Intent, ::Ifc4::IfcConstraint* v7_RelatingConstraint);
    typedef IfcTemplatedEntityList< IfcRelAssociatesConstraint > list;
};
class IFC_PARSE_API IfcRelAssociatesDocument : public IfcRelAssociates {
public:
    ::Ifc4::IfcDocumentSelect* RelatingDocument() const;
    void setRelatingDocument(::Ifc4::IfcDocumentSelect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelAssociatesDocument (IfcEntityInstanceData* e);
    IfcRelAssociatesDocument (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcEntityList::ptr v5_RelatedObjects, ::Ifc4::IfcDocumentSelect* v6_RelatingDocument);
    typedef IfcTemplatedEntityList< IfcRelAssociatesDocument > list;
};
class IFC_PARSE_API IfcRelAssociatesLibrary : public IfcRelAssociates {
public:
    ::Ifc4::IfcLibrarySelect* RelatingLibrary() const;
    void setRelatingLibrary(::Ifc4::IfcLibrarySelect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelAssociatesLibrary (IfcEntityInstanceData* e);
    IfcRelAssociatesLibrary (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcEntityList::ptr v5_RelatedObjects, ::Ifc4::IfcLibrarySelect* v6_RelatingLibrary);
    typedef IfcTemplatedEntityList< IfcRelAssociatesLibrary > list;
};
class IFC_PARSE_API IfcRelAssociatesMaterial : public IfcRelAssociates {
public:
    ::Ifc4::IfcMaterialSelect* RelatingMaterial() const;
    void setRelatingMaterial(::Ifc4::IfcMaterialSelect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelAssociatesMaterial (IfcEntityInstanceData* e);
    IfcRelAssociatesMaterial (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcEntityList::ptr v5_RelatedObjects, ::Ifc4::IfcMaterialSelect* v6_RelatingMaterial);
    typedef IfcTemplatedEntityList< IfcRelAssociatesMaterial > list;
};
class IFC_PARSE_API IfcRelConnects : public IfcRelationship {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelConnects (IfcEntityInstanceData* e);
    IfcRelConnects (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description);
    typedef IfcTemplatedEntityList< IfcRelConnects > list;
};
class IFC_PARSE_API IfcRelConnectsElements : public IfcRelConnects {
public:
    bool hasConnectionGeometry() const;
    ::Ifc4::IfcConnectionGeometry* ConnectionGeometry() const;
    void setConnectionGeometry(::Ifc4::IfcConnectionGeometry* v);
    ::Ifc4::IfcElement* RelatingElement() const;
    void setRelatingElement(::Ifc4::IfcElement* v);
    ::Ifc4::IfcElement* RelatedElement() const;
    void setRelatedElement(::Ifc4::IfcElement* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelConnectsElements (IfcEntityInstanceData* e);
    IfcRelConnectsElements (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4::IfcConnectionGeometry* v5_ConnectionGeometry, ::Ifc4::IfcElement* v6_RelatingElement, ::Ifc4::IfcElement* v7_RelatedElement);
    typedef IfcTemplatedEntityList< IfcRelConnectsElements > list;
};
class IFC_PARSE_API IfcRelConnectsPathElements : public IfcRelConnectsElements {
public:
    std::vector< int > /*[0:?]*/ RelatingPriorities() const;
    void setRelatingPriorities(std::vector< int > /*[0:?]*/ v);
    std::vector< int > /*[0:?]*/ RelatedPriorities() const;
    void setRelatedPriorities(std::vector< int > /*[0:?]*/ v);
    ::Ifc4::IfcConnectionTypeEnum::Value RelatedConnectionType() const;
    void setRelatedConnectionType(::Ifc4::IfcConnectionTypeEnum::Value v);
    ::Ifc4::IfcConnectionTypeEnum::Value RelatingConnectionType() const;
    void setRelatingConnectionType(::Ifc4::IfcConnectionTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelConnectsPathElements (IfcEntityInstanceData* e);
    IfcRelConnectsPathElements (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4::IfcConnectionGeometry* v5_ConnectionGeometry, ::Ifc4::IfcElement* v6_RelatingElement, ::Ifc4::IfcElement* v7_RelatedElement, std::vector< int > /*[0:?]*/ v8_RelatingPriorities, std::vector< int > /*[0:?]*/ v9_RelatedPriorities, ::Ifc4::IfcConnectionTypeEnum::Value v10_RelatedConnectionType, ::Ifc4::IfcConnectionTypeEnum::Value v11_RelatingConnectionType);
    typedef IfcTemplatedEntityList< IfcRelConnectsPathElements > list;
};
class IFC_PARSE_API IfcRelConnectsPortToElement : public IfcRelConnects {
public:
    ::Ifc4::IfcPort* RelatingPort() const;
    void setRelatingPort(::Ifc4::IfcPort* v);
    ::Ifc4::IfcDistributionElement* RelatedElement() const;
    void setRelatedElement(::Ifc4::IfcDistributionElement* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelConnectsPortToElement (IfcEntityInstanceData* e);
    IfcRelConnectsPortToElement (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4::IfcPort* v5_RelatingPort, ::Ifc4::IfcDistributionElement* v6_RelatedElement);
    typedef IfcTemplatedEntityList< IfcRelConnectsPortToElement > list;
};
class IFC_PARSE_API IfcRelConnectsPorts : public IfcRelConnects {
public:
    ::Ifc4::IfcPort* RelatingPort() const;
    void setRelatingPort(::Ifc4::IfcPort* v);
    ::Ifc4::IfcPort* RelatedPort() const;
    void setRelatedPort(::Ifc4::IfcPort* v);
    bool hasRealizingElement() const;
    ::Ifc4::IfcElement* RealizingElement() const;
    void setRealizingElement(::Ifc4::IfcElement* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelConnectsPorts (IfcEntityInstanceData* e);
    IfcRelConnectsPorts (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4::IfcPort* v5_RelatingPort, ::Ifc4::IfcPort* v6_RelatedPort, ::Ifc4::IfcElement* v7_RealizingElement);
    typedef IfcTemplatedEntityList< IfcRelConnectsPorts > list;
};
class IFC_PARSE_API IfcRelConnectsStructuralActivity : public IfcRelConnects {
public:
    ::Ifc4::IfcStructuralActivityAssignmentSelect* RelatingElement() const;
    void setRelatingElement(::Ifc4::IfcStructuralActivityAssignmentSelect* v);
    ::Ifc4::IfcStructuralActivity* RelatedStructuralActivity() const;
    void setRelatedStructuralActivity(::Ifc4::IfcStructuralActivity* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelConnectsStructuralActivity (IfcEntityInstanceData* e);
    IfcRelConnectsStructuralActivity (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4::IfcStructuralActivityAssignmentSelect* v5_RelatingElement, ::Ifc4::IfcStructuralActivity* v6_RelatedStructuralActivity);
    typedef IfcTemplatedEntityList< IfcRelConnectsStructuralActivity > list;
};
class IFC_PARSE_API IfcRelConnectsStructuralMember : public IfcRelConnects {
public:
    ::Ifc4::IfcStructuralMember* RelatingStructuralMember() const;
    void setRelatingStructuralMember(::Ifc4::IfcStructuralMember* v);
    ::Ifc4::IfcStructuralConnection* RelatedStructuralConnection() const;
    void setRelatedStructuralConnection(::Ifc4::IfcStructuralConnection* v);
    bool hasAppliedCondition() const;
    ::Ifc4::IfcBoundaryCondition* AppliedCondition() const;
    void setAppliedCondition(::Ifc4::IfcBoundaryCondition* v);
    bool hasAdditionalConditions() const;
    ::Ifc4::IfcStructuralConnectionCondition* AdditionalConditions() const;
    void setAdditionalConditions(::Ifc4::IfcStructuralConnectionCondition* v);
    bool hasSupportedLength() const;
    double SupportedLength() const;
    void setSupportedLength(double v);
    bool hasConditionCoordinateSystem() const;
    ::Ifc4::IfcAxis2Placement3D* ConditionCoordinateSystem() const;
    void setConditionCoordinateSystem(::Ifc4::IfcAxis2Placement3D* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelConnectsStructuralMember (IfcEntityInstanceData* e);
    IfcRelConnectsStructuralMember (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4::IfcStructuralMember* v5_RelatingStructuralMember, ::Ifc4::IfcStructuralConnection* v6_RelatedStructuralConnection, ::Ifc4::IfcBoundaryCondition* v7_AppliedCondition, ::Ifc4::IfcStructuralConnectionCondition* v8_AdditionalConditions, boost::optional< double > v9_SupportedLength, ::Ifc4::IfcAxis2Placement3D* v10_ConditionCoordinateSystem);
    typedef IfcTemplatedEntityList< IfcRelConnectsStructuralMember > list;
};
class IFC_PARSE_API IfcRelConnectsWithEccentricity : public IfcRelConnectsStructuralMember {
public:
    ::Ifc4::IfcConnectionGeometry* ConnectionConstraint() const;
    void setConnectionConstraint(::Ifc4::IfcConnectionGeometry* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelConnectsWithEccentricity (IfcEntityInstanceData* e);
    IfcRelConnectsWithEccentricity (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4::IfcStructuralMember* v5_RelatingStructuralMember, ::Ifc4::IfcStructuralConnection* v6_RelatedStructuralConnection, ::Ifc4::IfcBoundaryCondition* v7_AppliedCondition, ::Ifc4::IfcStructuralConnectionCondition* v8_AdditionalConditions, boost::optional< double > v9_SupportedLength, ::Ifc4::IfcAxis2Placement3D* v10_ConditionCoordinateSystem, ::Ifc4::IfcConnectionGeometry* v11_ConnectionConstraint);
    typedef IfcTemplatedEntityList< IfcRelConnectsWithEccentricity > list;
};
class IFC_PARSE_API IfcRelConnectsWithRealizingElements : public IfcRelConnectsElements {
public:
    IfcTemplatedEntityList< ::Ifc4::IfcElement >::ptr RealizingElements() const;
    void setRealizingElements(IfcTemplatedEntityList< ::Ifc4::IfcElement >::ptr v);
    bool hasConnectionType() const;
    std::string ConnectionType() const;
    void setConnectionType(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelConnectsWithRealizingElements (IfcEntityInstanceData* e);
    IfcRelConnectsWithRealizingElements (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4::IfcConnectionGeometry* v5_ConnectionGeometry, ::Ifc4::IfcElement* v6_RelatingElement, ::Ifc4::IfcElement* v7_RelatedElement, IfcTemplatedEntityList< ::Ifc4::IfcElement >::ptr v8_RealizingElements, boost::optional< std::string > v9_ConnectionType);
    typedef IfcTemplatedEntityList< IfcRelConnectsWithRealizingElements > list;
};
class IFC_PARSE_API IfcRelContainedInSpatialStructure : public IfcRelConnects {
public:
    IfcTemplatedEntityList< ::Ifc4::IfcProduct >::ptr RelatedElements() const;
    void setRelatedElements(IfcTemplatedEntityList< ::Ifc4::IfcProduct >::ptr v);
    ::Ifc4::IfcSpatialElement* RelatingStructure() const;
    void setRelatingStructure(::Ifc4::IfcSpatialElement* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelContainedInSpatialStructure (IfcEntityInstanceData* e);
    IfcRelContainedInSpatialStructure (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc4::IfcProduct >::ptr v5_RelatedElements, ::Ifc4::IfcSpatialElement* v6_RelatingStructure);
    typedef IfcTemplatedEntityList< IfcRelContainedInSpatialStructure > list;
};
class IFC_PARSE_API IfcRelCoversBldgElements : public IfcRelConnects {
public:
    ::Ifc4::IfcElement* RelatingBuildingElement() const;
    void setRelatingBuildingElement(::Ifc4::IfcElement* v);
    IfcTemplatedEntityList< ::Ifc4::IfcCovering >::ptr RelatedCoverings() const;
    void setRelatedCoverings(IfcTemplatedEntityList< ::Ifc4::IfcCovering >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelCoversBldgElements (IfcEntityInstanceData* e);
    IfcRelCoversBldgElements (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4::IfcElement* v5_RelatingBuildingElement, IfcTemplatedEntityList< ::Ifc4::IfcCovering >::ptr v6_RelatedCoverings);
    typedef IfcTemplatedEntityList< IfcRelCoversBldgElements > list;
};
class IFC_PARSE_API IfcRelCoversSpaces : public IfcRelConnects {
public:
    ::Ifc4::IfcSpace* RelatingSpace() const;
    void setRelatingSpace(::Ifc4::IfcSpace* v);
    IfcTemplatedEntityList< ::Ifc4::IfcCovering >::ptr RelatedCoverings() const;
    void setRelatedCoverings(IfcTemplatedEntityList< ::Ifc4::IfcCovering >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelCoversSpaces (IfcEntityInstanceData* e);
    IfcRelCoversSpaces (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4::IfcSpace* v5_RelatingSpace, IfcTemplatedEntityList< ::Ifc4::IfcCovering >::ptr v6_RelatedCoverings);
    typedef IfcTemplatedEntityList< IfcRelCoversSpaces > list;
};
class IFC_PARSE_API IfcRelDeclares : public IfcRelationship {
public:
    ::Ifc4::IfcContext* RelatingContext() const;
    void setRelatingContext(::Ifc4::IfcContext* v);
    IfcEntityList::ptr RelatedDefinitions() const;
    void setRelatedDefinitions(IfcEntityList::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelDeclares (IfcEntityInstanceData* e);
    IfcRelDeclares (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4::IfcContext* v5_RelatingContext, IfcEntityList::ptr v6_RelatedDefinitions);
    typedef IfcTemplatedEntityList< IfcRelDeclares > list;
};
class IFC_PARSE_API IfcRelDecomposes : public IfcRelationship {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelDecomposes (IfcEntityInstanceData* e);
    IfcRelDecomposes (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description);
    typedef IfcTemplatedEntityList< IfcRelDecomposes > list;
};
class IFC_PARSE_API IfcRelDefines : public IfcRelationship {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelDefines (IfcEntityInstanceData* e);
    IfcRelDefines (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description);
    typedef IfcTemplatedEntityList< IfcRelDefines > list;
};
class IFC_PARSE_API IfcRelDefinesByObject : public IfcRelDefines {
public:
    IfcTemplatedEntityList< ::Ifc4::IfcObject >::ptr RelatedObjects() const;
    void setRelatedObjects(IfcTemplatedEntityList< ::Ifc4::IfcObject >::ptr v);
    ::Ifc4::IfcObject* RelatingObject() const;
    void setRelatingObject(::Ifc4::IfcObject* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelDefinesByObject (IfcEntityInstanceData* e);
    IfcRelDefinesByObject (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc4::IfcObject >::ptr v5_RelatedObjects, ::Ifc4::IfcObject* v6_RelatingObject);
    typedef IfcTemplatedEntityList< IfcRelDefinesByObject > list;
};
class IFC_PARSE_API IfcRelDefinesByProperties : public IfcRelDefines {
public:
    IfcTemplatedEntityList< ::Ifc4::IfcObjectDefinition >::ptr RelatedObjects() const;
    void setRelatedObjects(IfcTemplatedEntityList< ::Ifc4::IfcObjectDefinition >::ptr v);
    ::Ifc4::IfcPropertySetDefinitionSelect* RelatingPropertyDefinition() const;
    void setRelatingPropertyDefinition(::Ifc4::IfcPropertySetDefinitionSelect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelDefinesByProperties (IfcEntityInstanceData* e);
    IfcRelDefinesByProperties (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc4::IfcObjectDefinition >::ptr v5_RelatedObjects, ::Ifc4::IfcPropertySetDefinitionSelect* v6_RelatingPropertyDefinition);
    typedef IfcTemplatedEntityList< IfcRelDefinesByProperties > list;
};
class IFC_PARSE_API IfcRelDefinesByTemplate : public IfcRelDefines {
public:
    IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr RelatedPropertySets() const;
    void setRelatedPropertySets(IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr v);
    ::Ifc4::IfcPropertySetTemplate* RelatingTemplate() const;
    void setRelatingTemplate(::Ifc4::IfcPropertySetTemplate* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelDefinesByTemplate (IfcEntityInstanceData* e);
    IfcRelDefinesByTemplate (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr v5_RelatedPropertySets, ::Ifc4::IfcPropertySetTemplate* v6_RelatingTemplate);
    typedef IfcTemplatedEntityList< IfcRelDefinesByTemplate > list;
};
class IFC_PARSE_API IfcRelDefinesByType : public IfcRelDefines {
public:
    IfcTemplatedEntityList< ::Ifc4::IfcObject >::ptr RelatedObjects() const;
    void setRelatedObjects(IfcTemplatedEntityList< ::Ifc4::IfcObject >::ptr v);
    ::Ifc4::IfcTypeObject* RelatingType() const;
    void setRelatingType(::Ifc4::IfcTypeObject* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelDefinesByType (IfcEntityInstanceData* e);
    IfcRelDefinesByType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc4::IfcObject >::ptr v5_RelatedObjects, ::Ifc4::IfcTypeObject* v6_RelatingType);
    typedef IfcTemplatedEntityList< IfcRelDefinesByType > list;
};
class IFC_PARSE_API IfcRelFillsElement : public IfcRelConnects {
public:
    ::Ifc4::IfcOpeningElement* RelatingOpeningElement() const;
    void setRelatingOpeningElement(::Ifc4::IfcOpeningElement* v);
    ::Ifc4::IfcElement* RelatedBuildingElement() const;
    void setRelatedBuildingElement(::Ifc4::IfcElement* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelFillsElement (IfcEntityInstanceData* e);
    IfcRelFillsElement (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4::IfcOpeningElement* v5_RelatingOpeningElement, ::Ifc4::IfcElement* v6_RelatedBuildingElement);
    typedef IfcTemplatedEntityList< IfcRelFillsElement > list;
};
class IFC_PARSE_API IfcRelFlowControlElements : public IfcRelConnects {
public:
    IfcTemplatedEntityList< ::Ifc4::IfcDistributionControlElement >::ptr RelatedControlElements() const;
    void setRelatedControlElements(IfcTemplatedEntityList< ::Ifc4::IfcDistributionControlElement >::ptr v);
    ::Ifc4::IfcDistributionFlowElement* RelatingFlowElement() const;
    void setRelatingFlowElement(::Ifc4::IfcDistributionFlowElement* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelFlowControlElements (IfcEntityInstanceData* e);
    IfcRelFlowControlElements (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc4::IfcDistributionControlElement >::ptr v5_RelatedControlElements, ::Ifc4::IfcDistributionFlowElement* v6_RelatingFlowElement);
    typedef IfcTemplatedEntityList< IfcRelFlowControlElements > list;
};
class IFC_PARSE_API IfcRelInterferesElements : public IfcRelConnects {
public:
    ::Ifc4::IfcElement* RelatingElement() const;
    void setRelatingElement(::Ifc4::IfcElement* v);
    ::Ifc4::IfcElement* RelatedElement() const;
    void setRelatedElement(::Ifc4::IfcElement* v);
    bool hasInterferenceGeometry() const;
    ::Ifc4::IfcConnectionGeometry* InterferenceGeometry() const;
    void setInterferenceGeometry(::Ifc4::IfcConnectionGeometry* v);
    bool hasInterferenceType() const;
    std::string InterferenceType() const;
    void setInterferenceType(std::string v);
    bool ImpliedOrder() const;
    void setImpliedOrder(bool v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelInterferesElements (IfcEntityInstanceData* e);
    IfcRelInterferesElements (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4::IfcElement* v5_RelatingElement, ::Ifc4::IfcElement* v6_RelatedElement, ::Ifc4::IfcConnectionGeometry* v7_InterferenceGeometry, boost::optional< std::string > v8_InterferenceType, bool v9_ImpliedOrder);
    typedef IfcTemplatedEntityList< IfcRelInterferesElements > list;
};
class IFC_PARSE_API IfcRelNests : public IfcRelDecomposes {
public:
    ::Ifc4::IfcObjectDefinition* RelatingObject() const;
    void setRelatingObject(::Ifc4::IfcObjectDefinition* v);
    IfcTemplatedEntityList< ::Ifc4::IfcObjectDefinition >::ptr RelatedObjects() const;
    void setRelatedObjects(IfcTemplatedEntityList< ::Ifc4::IfcObjectDefinition >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelNests (IfcEntityInstanceData* e);
    IfcRelNests (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4::IfcObjectDefinition* v5_RelatingObject, IfcTemplatedEntityList< ::Ifc4::IfcObjectDefinition >::ptr v6_RelatedObjects);
    typedef IfcTemplatedEntityList< IfcRelNests > list;
};
class IFC_PARSE_API IfcRelProjectsElement : public IfcRelDecomposes {
public:
    ::Ifc4::IfcElement* RelatingElement() const;
    void setRelatingElement(::Ifc4::IfcElement* v);
    ::Ifc4::IfcFeatureElementAddition* RelatedFeatureElement() const;
    void setRelatedFeatureElement(::Ifc4::IfcFeatureElementAddition* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelProjectsElement (IfcEntityInstanceData* e);
    IfcRelProjectsElement (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4::IfcElement* v5_RelatingElement, ::Ifc4::IfcFeatureElementAddition* v6_RelatedFeatureElement);
    typedef IfcTemplatedEntityList< IfcRelProjectsElement > list;
};
class IFC_PARSE_API IfcRelReferencedInSpatialStructure : public IfcRelConnects {
public:
    IfcTemplatedEntityList< ::Ifc4::IfcProduct >::ptr RelatedElements() const;
    void setRelatedElements(IfcTemplatedEntityList< ::Ifc4::IfcProduct >::ptr v);
    ::Ifc4::IfcSpatialElement* RelatingStructure() const;
    void setRelatingStructure(::Ifc4::IfcSpatialElement* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelReferencedInSpatialStructure (IfcEntityInstanceData* e);
    IfcRelReferencedInSpatialStructure (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< ::Ifc4::IfcProduct >::ptr v5_RelatedElements, ::Ifc4::IfcSpatialElement* v6_RelatingStructure);
    typedef IfcTemplatedEntityList< IfcRelReferencedInSpatialStructure > list;
};
class IFC_PARSE_API IfcRelSequence : public IfcRelConnects {
public:
    ::Ifc4::IfcProcess* RelatingProcess() const;
    void setRelatingProcess(::Ifc4::IfcProcess* v);
    ::Ifc4::IfcProcess* RelatedProcess() const;
    void setRelatedProcess(::Ifc4::IfcProcess* v);
    bool hasTimeLag() const;
    ::Ifc4::IfcLagTime* TimeLag() const;
    void setTimeLag(::Ifc4::IfcLagTime* v);
    bool hasSequenceType() const;
    ::Ifc4::IfcSequenceEnum::Value SequenceType() const;
    void setSequenceType(::Ifc4::IfcSequenceEnum::Value v);
    bool hasUserDefinedSequenceType() const;
    std::string UserDefinedSequenceType() const;
    void setUserDefinedSequenceType(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelSequence (IfcEntityInstanceData* e);
    IfcRelSequence (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4::IfcProcess* v5_RelatingProcess, ::Ifc4::IfcProcess* v6_RelatedProcess, ::Ifc4::IfcLagTime* v7_TimeLag, boost::optional< ::Ifc4::IfcSequenceEnum::Value > v8_SequenceType, boost::optional< std::string > v9_UserDefinedSequenceType);
    typedef IfcTemplatedEntityList< IfcRelSequence > list;
};
class IFC_PARSE_API IfcRelServicesBuildings : public IfcRelConnects {
public:
    ::Ifc4::IfcSystem* RelatingSystem() const;
    void setRelatingSystem(::Ifc4::IfcSystem* v);
    IfcTemplatedEntityList< ::Ifc4::IfcSpatialElement >::ptr RelatedBuildings() const;
    void setRelatedBuildings(IfcTemplatedEntityList< ::Ifc4::IfcSpatialElement >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelServicesBuildings (IfcEntityInstanceData* e);
    IfcRelServicesBuildings (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4::IfcSystem* v5_RelatingSystem, IfcTemplatedEntityList< ::Ifc4::IfcSpatialElement >::ptr v6_RelatedBuildings);
    typedef IfcTemplatedEntityList< IfcRelServicesBuildings > list;
};
class IFC_PARSE_API IfcRelSpaceBoundary : public IfcRelConnects {
public:
    ::Ifc4::IfcSpaceBoundarySelect* RelatingSpace() const;
    void setRelatingSpace(::Ifc4::IfcSpaceBoundarySelect* v);
    ::Ifc4::IfcElement* RelatedBuildingElement() const;
    void setRelatedBuildingElement(::Ifc4::IfcElement* v);
    bool hasConnectionGeometry() const;
    ::Ifc4::IfcConnectionGeometry* ConnectionGeometry() const;
    void setConnectionGeometry(::Ifc4::IfcConnectionGeometry* v);
    ::Ifc4::IfcPhysicalOrVirtualEnum::Value PhysicalOrVirtualBoundary() const;
    void setPhysicalOrVirtualBoundary(::Ifc4::IfcPhysicalOrVirtualEnum::Value v);
    ::Ifc4::IfcInternalOrExternalEnum::Value InternalOrExternalBoundary() const;
    void setInternalOrExternalBoundary(::Ifc4::IfcInternalOrExternalEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelSpaceBoundary (IfcEntityInstanceData* e);
    IfcRelSpaceBoundary (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4::IfcSpaceBoundarySelect* v5_RelatingSpace, ::Ifc4::IfcElement* v6_RelatedBuildingElement, ::Ifc4::IfcConnectionGeometry* v7_ConnectionGeometry, ::Ifc4::IfcPhysicalOrVirtualEnum::Value v8_PhysicalOrVirtualBoundary, ::Ifc4::IfcInternalOrExternalEnum::Value v9_InternalOrExternalBoundary);
    typedef IfcTemplatedEntityList< IfcRelSpaceBoundary > list;
};
class IFC_PARSE_API IfcRelSpaceBoundary1stLevel : public IfcRelSpaceBoundary {
public:
    bool hasParentBoundary() const;
    ::Ifc4::IfcRelSpaceBoundary1stLevel* ParentBoundary() const;
    void setParentBoundary(::Ifc4::IfcRelSpaceBoundary1stLevel* v);
        IfcTemplatedEntityList< IfcRelSpaceBoundary1stLevel >::ptr InnerBoundaries() const; // INVERSE IfcRelSpaceBoundary1stLevel::ParentBoundary
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelSpaceBoundary1stLevel (IfcEntityInstanceData* e);
    IfcRelSpaceBoundary1stLevel (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4::IfcSpaceBoundarySelect* v5_RelatingSpace, ::Ifc4::IfcElement* v6_RelatedBuildingElement, ::Ifc4::IfcConnectionGeometry* v7_ConnectionGeometry, ::Ifc4::IfcPhysicalOrVirtualEnum::Value v8_PhysicalOrVirtualBoundary, ::Ifc4::IfcInternalOrExternalEnum::Value v9_InternalOrExternalBoundary, ::Ifc4::IfcRelSpaceBoundary1stLevel* v10_ParentBoundary);
    typedef IfcTemplatedEntityList< IfcRelSpaceBoundary1stLevel > list;
};
class IFC_PARSE_API IfcRelSpaceBoundary2ndLevel : public IfcRelSpaceBoundary1stLevel {
public:
    bool hasCorrespondingBoundary() const;
    ::Ifc4::IfcRelSpaceBoundary2ndLevel* CorrespondingBoundary() const;
    void setCorrespondingBoundary(::Ifc4::IfcRelSpaceBoundary2ndLevel* v);
        IfcTemplatedEntityList< IfcRelSpaceBoundary2ndLevel >::ptr Corresponds() const; // INVERSE IfcRelSpaceBoundary2ndLevel::CorrespondingBoundary
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelSpaceBoundary2ndLevel (IfcEntityInstanceData* e);
    IfcRelSpaceBoundary2ndLevel (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4::IfcSpaceBoundarySelect* v5_RelatingSpace, ::Ifc4::IfcElement* v6_RelatedBuildingElement, ::Ifc4::IfcConnectionGeometry* v7_ConnectionGeometry, ::Ifc4::IfcPhysicalOrVirtualEnum::Value v8_PhysicalOrVirtualBoundary, ::Ifc4::IfcInternalOrExternalEnum::Value v9_InternalOrExternalBoundary, ::Ifc4::IfcRelSpaceBoundary1stLevel* v10_ParentBoundary, ::Ifc4::IfcRelSpaceBoundary2ndLevel* v11_CorrespondingBoundary);
    typedef IfcTemplatedEntityList< IfcRelSpaceBoundary2ndLevel > list;
};
class IFC_PARSE_API IfcRelVoidsElement : public IfcRelDecomposes {
public:
    ::Ifc4::IfcElement* RelatingBuildingElement() const;
    void setRelatingBuildingElement(::Ifc4::IfcElement* v);
    ::Ifc4::IfcFeatureElementSubtraction* RelatedOpeningElement() const;
    void setRelatedOpeningElement(::Ifc4::IfcFeatureElementSubtraction* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelVoidsElement (IfcEntityInstanceData* e);
    IfcRelVoidsElement (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4::IfcElement* v5_RelatingBuildingElement, ::Ifc4::IfcFeatureElementSubtraction* v6_RelatedOpeningElement);
    typedef IfcTemplatedEntityList< IfcRelVoidsElement > list;
};
class IFC_PARSE_API IfcReparametrisedCompositeCurveSegment : public IfcCompositeCurveSegment {
public:
    double ParamLength() const;
    void setParamLength(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcReparametrisedCompositeCurveSegment (IfcEntityInstanceData* e);
    IfcReparametrisedCompositeCurveSegment (::Ifc4::IfcTransitionCode::Value v1_Transition, bool v2_SameSense, ::Ifc4::IfcCurve* v3_ParentCurve, double v4_ParamLength);
    typedef IfcTemplatedEntityList< IfcReparametrisedCompositeCurveSegment > list;
};
class IFC_PARSE_API IfcResource : public IfcObject {
public:
    bool hasIdentification() const;
    std::string Identification() const;
    void setIdentification(std::string v);
    bool hasLongDescription() const;
    std::string LongDescription() const;
    void setLongDescription(std::string v);
        IfcTemplatedEntityList< IfcRelAssignsToResource >::ptr ResourceOf() const; // INVERSE IfcRelAssignsToResource::RelatingResource
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcResource (IfcEntityInstanceData* e);
    IfcResource (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription);
    typedef IfcTemplatedEntityList< IfcResource > list;
};
class IFC_PARSE_API IfcRevolvedAreaSolid : public IfcSweptAreaSolid {
public:
    ::Ifc4::IfcAxis1Placement* Axis() const;
    void setAxis(::Ifc4::IfcAxis1Placement* v);
    double Angle() const;
    void setAngle(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRevolvedAreaSolid (IfcEntityInstanceData* e);
    IfcRevolvedAreaSolid (::Ifc4::IfcProfileDef* v1_SweptArea, ::Ifc4::IfcAxis2Placement3D* v2_Position, ::Ifc4::IfcAxis1Placement* v3_Axis, double v4_Angle);
    typedef IfcTemplatedEntityList< IfcRevolvedAreaSolid > list;
};
class IFC_PARSE_API IfcRevolvedAreaSolidTapered : public IfcRevolvedAreaSolid {
public:
    ::Ifc4::IfcProfileDef* EndSweptArea() const;
    void setEndSweptArea(::Ifc4::IfcProfileDef* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRevolvedAreaSolidTapered (IfcEntityInstanceData* e);
    IfcRevolvedAreaSolidTapered (::Ifc4::IfcProfileDef* v1_SweptArea, ::Ifc4::IfcAxis2Placement3D* v2_Position, ::Ifc4::IfcAxis1Placement* v3_Axis, double v4_Angle, ::Ifc4::IfcProfileDef* v5_EndSweptArea);
    typedef IfcTemplatedEntityList< IfcRevolvedAreaSolidTapered > list;
};
class IFC_PARSE_API IfcRightCircularCone : public IfcCsgPrimitive3D {
public:
    double Height() const;
    void setHeight(double v);
    double BottomRadius() const;
    void setBottomRadius(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRightCircularCone (IfcEntityInstanceData* e);
    IfcRightCircularCone (::Ifc4::IfcAxis2Placement3D* v1_Position, double v2_Height, double v3_BottomRadius);
    typedef IfcTemplatedEntityList< IfcRightCircularCone > list;
};
class IFC_PARSE_API IfcRightCircularCylinder : public IfcCsgPrimitive3D {
public:
    double Height() const;
    void setHeight(double v);
    double Radius() const;
    void setRadius(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRightCircularCylinder (IfcEntityInstanceData* e);
    IfcRightCircularCylinder (::Ifc4::IfcAxis2Placement3D* v1_Position, double v2_Height, double v3_Radius);
    typedef IfcTemplatedEntityList< IfcRightCircularCylinder > list;
};
class IFC_PARSE_API IfcSimplePropertyTemplate : public IfcPropertyTemplate {
public:
    bool hasTemplateType() const;
    ::Ifc4::IfcSimplePropertyTemplateTypeEnum::Value TemplateType() const;
    void setTemplateType(::Ifc4::IfcSimplePropertyTemplateTypeEnum::Value v);
    bool hasPrimaryMeasureType() const;
    std::string PrimaryMeasureType() const;
    void setPrimaryMeasureType(std::string v);
    bool hasSecondaryMeasureType() const;
    std::string SecondaryMeasureType() const;
    void setSecondaryMeasureType(std::string v);
    bool hasEnumerators() const;
    ::Ifc4::IfcPropertyEnumeration* Enumerators() const;
    void setEnumerators(::Ifc4::IfcPropertyEnumeration* v);
    bool hasPrimaryUnit() const;
    ::Ifc4::IfcUnit* PrimaryUnit() const;
    void setPrimaryUnit(::Ifc4::IfcUnit* v);
    bool hasSecondaryUnit() const;
    ::Ifc4::IfcUnit* SecondaryUnit() const;
    void setSecondaryUnit(::Ifc4::IfcUnit* v);
    bool hasExpression() const;
    std::string Expression() const;
    void setExpression(std::string v);
    bool hasAccessState() const;
    ::Ifc4::IfcStateEnum::Value AccessState() const;
    void setAccessState(::Ifc4::IfcStateEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSimplePropertyTemplate (IfcEntityInstanceData* e);
    IfcSimplePropertyTemplate (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< ::Ifc4::IfcSimplePropertyTemplateTypeEnum::Value > v5_TemplateType, boost::optional< std::string > v6_PrimaryMeasureType, boost::optional< std::string > v7_SecondaryMeasureType, ::Ifc4::IfcPropertyEnumeration* v8_Enumerators, ::Ifc4::IfcUnit* v9_PrimaryUnit, ::Ifc4::IfcUnit* v10_SecondaryUnit, boost::optional< std::string > v11_Expression, boost::optional< ::Ifc4::IfcStateEnum::Value > v12_AccessState);
    typedef IfcTemplatedEntityList< IfcSimplePropertyTemplate > list;
};
class IFC_PARSE_API IfcSpatialElement : public IfcProduct {
public:
    bool hasLongName() const;
    std::string LongName() const;
    void setLongName(std::string v);
        IfcTemplatedEntityList< IfcRelContainedInSpatialStructure >::ptr ContainsElements() const; // INVERSE IfcRelContainedInSpatialStructure::RelatingStructure
    IfcTemplatedEntityList< IfcRelServicesBuildings >::ptr ServicedBySystems() const; // INVERSE IfcRelServicesBuildings::RelatedBuildings
    IfcTemplatedEntityList< IfcRelReferencedInSpatialStructure >::ptr ReferencesElements() const; // INVERSE IfcRelReferencedInSpatialStructure::RelatingStructure
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSpatialElement (IfcEntityInstanceData* e);
    IfcSpatialElement (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName);
    typedef IfcTemplatedEntityList< IfcSpatialElement > list;
};
class IFC_PARSE_API IfcSpatialElementType : public IfcTypeProduct {
public:
    bool hasElementType() const;
    std::string ElementType() const;
    void setElementType(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSpatialElementType (IfcEntityInstanceData* e);
    IfcSpatialElementType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcSpatialElementType > list;
};
class IFC_PARSE_API IfcSpatialStructureElement : public IfcSpatialElement {
public:
    bool hasCompositionType() const;
    ::Ifc4::IfcElementCompositionEnum::Value CompositionType() const;
    void setCompositionType(::Ifc4::IfcElementCompositionEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSpatialStructureElement (IfcEntityInstanceData* e);
    IfcSpatialStructureElement (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4::IfcElementCompositionEnum::Value > v9_CompositionType);
    typedef IfcTemplatedEntityList< IfcSpatialStructureElement > list;
};
class IFC_PARSE_API IfcSpatialStructureElementType : public IfcSpatialElementType {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSpatialStructureElementType (IfcEntityInstanceData* e);
    IfcSpatialStructureElementType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcSpatialStructureElementType > list;
};
class IFC_PARSE_API IfcSpatialZone : public IfcSpatialElement {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcSpatialZoneTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcSpatialZoneTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSpatialZone (IfcEntityInstanceData* e);
    IfcSpatialZone (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4::IfcSpatialZoneTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcSpatialZone > list;
};
class IFC_PARSE_API IfcSpatialZoneType : public IfcSpatialElementType {
public:
    ::Ifc4::IfcSpatialZoneTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcSpatialZoneTypeEnum::Value v);
    bool hasLongName() const;
    std::string LongName() const;
    void setLongName(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSpatialZoneType (IfcEntityInstanceData* e);
    IfcSpatialZoneType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcSpatialZoneTypeEnum::Value v10_PredefinedType, boost::optional< std::string > v11_LongName);
    typedef IfcTemplatedEntityList< IfcSpatialZoneType > list;
};
class IFC_PARSE_API IfcSphere : public IfcCsgPrimitive3D {
public:
    double Radius() const;
    void setRadius(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSphere (IfcEntityInstanceData* e);
    IfcSphere (::Ifc4::IfcAxis2Placement3D* v1_Position, double v2_Radius);
    typedef IfcTemplatedEntityList< IfcSphere > list;
};

class IFC_PARSE_API IfcSphericalSurface : public IfcElementarySurface {
public:
    double Radius() const;
    void setRadius(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSphericalSurface (IfcEntityInstanceData* e);
    IfcSphericalSurface (::Ifc4::IfcAxis2Placement3D* v1_Position, double v2_Radius);
    typedef IfcTemplatedEntityList< IfcSphericalSurface > list;
};
class IFC_PARSE_API IfcStructuralActivity : public IfcProduct {
public:
    ::Ifc4::IfcStructuralLoad* AppliedLoad() const;
    void setAppliedLoad(::Ifc4::IfcStructuralLoad* v);
    ::Ifc4::IfcGlobalOrLocalEnum::Value GlobalOrLocal() const;
    void setGlobalOrLocal(::Ifc4::IfcGlobalOrLocalEnum::Value v);
        IfcTemplatedEntityList< IfcRelConnectsStructuralActivity >::ptr AssignedToStructuralItem() const; // INVERSE IfcRelConnectsStructuralActivity::RelatedStructuralActivity
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralActivity (IfcEntityInstanceData* e);
    IfcStructuralActivity (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, ::Ifc4::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal);
    typedef IfcTemplatedEntityList< IfcStructuralActivity > list;
};
class IFC_PARSE_API IfcStructuralItem : public IfcProduct {
public:
        IfcTemplatedEntityList< IfcRelConnectsStructuralActivity >::ptr AssignedStructuralActivity() const; // INVERSE IfcRelConnectsStructuralActivity::RelatingElement
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralItem (IfcEntityInstanceData* e);
    IfcStructuralItem (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation);
    typedef IfcTemplatedEntityList< IfcStructuralItem > list;
};
class IFC_PARSE_API IfcStructuralMember : public IfcStructuralItem {
public:
        IfcTemplatedEntityList< IfcRelConnectsStructuralMember >::ptr ConnectedBy() const; // INVERSE IfcRelConnectsStructuralMember::RelatingStructuralMember
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralMember (IfcEntityInstanceData* e);
    IfcStructuralMember (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation);
    typedef IfcTemplatedEntityList< IfcStructuralMember > list;
};
class IFC_PARSE_API IfcStructuralReaction : public IfcStructuralActivity {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralReaction (IfcEntityInstanceData* e);
    IfcStructuralReaction (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, ::Ifc4::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal);
    typedef IfcTemplatedEntityList< IfcStructuralReaction > list;
};
class IFC_PARSE_API IfcStructuralSurfaceMember : public IfcStructuralMember {
public:
    ::Ifc4::IfcStructuralSurfaceMemberTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcStructuralSurfaceMemberTypeEnum::Value v);
    bool hasThickness() const;
    double Thickness() const;
    void setThickness(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralSurfaceMember (IfcEntityInstanceData* e);
    IfcStructuralSurfaceMember (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, ::Ifc4::IfcStructuralSurfaceMemberTypeEnum::Value v8_PredefinedType, boost::optional< double > v9_Thickness);
    typedef IfcTemplatedEntityList< IfcStructuralSurfaceMember > list;
};
class IFC_PARSE_API IfcStructuralSurfaceMemberVarying : public IfcStructuralSurfaceMember {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralSurfaceMemberVarying (IfcEntityInstanceData* e);
    IfcStructuralSurfaceMemberVarying (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, ::Ifc4::IfcStructuralSurfaceMemberTypeEnum::Value v8_PredefinedType, boost::optional< double > v9_Thickness);
    typedef IfcTemplatedEntityList< IfcStructuralSurfaceMemberVarying > list;
};
class IFC_PARSE_API IfcStructuralSurfaceReaction : public IfcStructuralReaction {
public:
    ::Ifc4::IfcStructuralSurfaceActivityTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcStructuralSurfaceActivityTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralSurfaceReaction (IfcEntityInstanceData* e);
    IfcStructuralSurfaceReaction (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, ::Ifc4::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, ::Ifc4::IfcStructuralSurfaceActivityTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcStructuralSurfaceReaction > list;
};
class IFC_PARSE_API IfcSubContractResourceType : public IfcConstructionResourceType {
public:
    ::Ifc4::IfcSubContractResourceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcSubContractResourceTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSubContractResourceType (IfcEntityInstanceData* e);
    IfcSubContractResourceType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcAppliedValue >::ptr > v10_BaseCosts, ::Ifc4::IfcPhysicalQuantity* v11_BaseQuantity, ::Ifc4::IfcSubContractResourceTypeEnum::Value v12_PredefinedType);
    typedef IfcTemplatedEntityList< IfcSubContractResourceType > list;
};

class IFC_PARSE_API IfcSurfaceCurve : public IfcCurve {
public:
    ::Ifc4::IfcCurve* Curve3D() const;
    void setCurve3D(::Ifc4::IfcCurve* v);
    IfcTemplatedEntityList< ::Ifc4::IfcPcurve >::ptr AssociatedGeometry() const;
    void setAssociatedGeometry(IfcTemplatedEntityList< ::Ifc4::IfcPcurve >::ptr v);
    ::Ifc4::IfcPreferredSurfaceCurveRepresentation::Value MasterRepresentation() const;
    void setMasterRepresentation(::Ifc4::IfcPreferredSurfaceCurveRepresentation::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSurfaceCurve (IfcEntityInstanceData* e);
    IfcSurfaceCurve (::Ifc4::IfcCurve* v1_Curve3D, IfcTemplatedEntityList< ::Ifc4::IfcPcurve >::ptr v2_AssociatedGeometry, ::Ifc4::IfcPreferredSurfaceCurveRepresentation::Value v3_MasterRepresentation);
    typedef IfcTemplatedEntityList< IfcSurfaceCurve > list;
};
class IFC_PARSE_API IfcSurfaceCurveSweptAreaSolid : public IfcSweptAreaSolid {
public:
    ::Ifc4::IfcCurve* Directrix() const;
    void setDirectrix(::Ifc4::IfcCurve* v);
    bool hasStartParam() const;
    double StartParam() const;
    void setStartParam(double v);
    bool hasEndParam() const;
    double EndParam() const;
    void setEndParam(double v);
    ::Ifc4::IfcSurface* ReferenceSurface() const;
    void setReferenceSurface(::Ifc4::IfcSurface* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSurfaceCurveSweptAreaSolid (IfcEntityInstanceData* e);
    IfcSurfaceCurveSweptAreaSolid (::Ifc4::IfcProfileDef* v1_SweptArea, ::Ifc4::IfcAxis2Placement3D* v2_Position, ::Ifc4::IfcCurve* v3_Directrix, boost::optional< double > v4_StartParam, boost::optional< double > v5_EndParam, ::Ifc4::IfcSurface* v6_ReferenceSurface);
    typedef IfcTemplatedEntityList< IfcSurfaceCurveSweptAreaSolid > list;
};
class IFC_PARSE_API IfcSurfaceOfLinearExtrusion : public IfcSweptSurface {
public:
    ::Ifc4::IfcDirection* ExtrudedDirection() const;
    void setExtrudedDirection(::Ifc4::IfcDirection* v);
    double Depth() const;
    void setDepth(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSurfaceOfLinearExtrusion (IfcEntityInstanceData* e);
    IfcSurfaceOfLinearExtrusion (::Ifc4::IfcProfileDef* v1_SweptCurve, ::Ifc4::IfcAxis2Placement3D* v2_Position, ::Ifc4::IfcDirection* v3_ExtrudedDirection, double v4_Depth);
    typedef IfcTemplatedEntityList< IfcSurfaceOfLinearExtrusion > list;
};
class IFC_PARSE_API IfcSurfaceOfRevolution : public IfcSweptSurface {
public:
    ::Ifc4::IfcAxis1Placement* AxisPosition() const;
    void setAxisPosition(::Ifc4::IfcAxis1Placement* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSurfaceOfRevolution (IfcEntityInstanceData* e);
    IfcSurfaceOfRevolution (::Ifc4::IfcProfileDef* v1_SweptCurve, ::Ifc4::IfcAxis2Placement3D* v2_Position, ::Ifc4::IfcAxis1Placement* v3_AxisPosition);
    typedef IfcTemplatedEntityList< IfcSurfaceOfRevolution > list;
};
class IFC_PARSE_API IfcSystemFurnitureElementType : public IfcFurnishingElementType {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcSystemFurnitureElementTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcSystemFurnitureElementTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSystemFurnitureElementType (IfcEntityInstanceData* e);
    IfcSystemFurnitureElementType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, boost::optional< ::Ifc4::IfcSystemFurnitureElementTypeEnum::Value > v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcSystemFurnitureElementType > list;
};
class IFC_PARSE_API IfcTask : public IfcProcess {
public:
    bool hasStatus() const;
    std::string Status() const;
    void setStatus(std::string v);
    bool hasWorkMethod() const;
    std::string WorkMethod() const;
    void setWorkMethod(std::string v);
    bool IsMilestone() const;
    void setIsMilestone(bool v);
    bool hasPriority() const;
    int Priority() const;
    void setPriority(int v);
    bool hasTaskTime() const;
    ::Ifc4::IfcTaskTime* TaskTime() const;
    void setTaskTime(::Ifc4::IfcTaskTime* v);
    bool hasPredefinedType() const;
    ::Ifc4::IfcTaskTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcTaskTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTask (IfcEntityInstanceData* e);
    IfcTask (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, boost::optional< std::string > v8_Status, boost::optional< std::string > v9_WorkMethod, bool v10_IsMilestone, boost::optional< int > v11_Priority, ::Ifc4::IfcTaskTime* v12_TaskTime, boost::optional< ::Ifc4::IfcTaskTypeEnum::Value > v13_PredefinedType);
    typedef IfcTemplatedEntityList< IfcTask > list;
};
class IFC_PARSE_API IfcTaskType : public IfcTypeProcess {
public:
    ::Ifc4::IfcTaskTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcTaskTypeEnum::Value v);
    bool hasWorkMethod() const;
    std::string WorkMethod() const;
    void setWorkMethod(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTaskType (IfcEntityInstanceData* e);
    IfcTaskType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ProcessType, ::Ifc4::IfcTaskTypeEnum::Value v10_PredefinedType, boost::optional< std::string > v11_WorkMethod);
    typedef IfcTemplatedEntityList< IfcTaskType > list;
};

class IFC_PARSE_API IfcTessellatedFaceSet : public IfcTessellatedItem {
public:
    ::Ifc4::IfcCartesianPointList3D* Coordinates() const;
    void setCoordinates(::Ifc4::IfcCartesianPointList3D* v);
        IfcTemplatedEntityList< IfcIndexedColourMap >::ptr HasColours() const; // INVERSE IfcIndexedColourMap::MappedTo
    IfcTemplatedEntityList< IfcIndexedTextureMap >::ptr HasTextures() const; // INVERSE IfcIndexedTextureMap::MappedTo
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTessellatedFaceSet (IfcEntityInstanceData* e);
    IfcTessellatedFaceSet (::Ifc4::IfcCartesianPointList3D* v1_Coordinates);
    typedef IfcTemplatedEntityList< IfcTessellatedFaceSet > list;
};

class IFC_PARSE_API IfcToroidalSurface : public IfcElementarySurface {
public:
    double MajorRadius() const;
    void setMajorRadius(double v);
    double MinorRadius() const;
    void setMinorRadius(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcToroidalSurface (IfcEntityInstanceData* e);
    IfcToroidalSurface (::Ifc4::IfcAxis2Placement3D* v1_Position, double v2_MajorRadius, double v3_MinorRadius);
    typedef IfcTemplatedEntityList< IfcToroidalSurface > list;
};
class IFC_PARSE_API IfcTransportElementType : public IfcElementType {
public:
    ::Ifc4::IfcTransportElementTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcTransportElementTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTransportElementType (IfcEntityInstanceData* e);
    IfcTransportElementType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcTransportElementTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcTransportElementType > list;
};

class IFC_PARSE_API IfcTriangulatedFaceSet : public IfcTessellatedFaceSet {
public:
    bool hasNormals() const;
    std::vector< std::vector< double > > Normals() const;
    void setNormals(std::vector< std::vector< double > > v);
    bool hasClosed() const;
    bool Closed() const;
    void setClosed(bool v);
    std::vector< std::vector< int > > CoordIndex() const;
    void setCoordIndex(std::vector< std::vector< int > > v);
    bool hasPnIndex() const;
    std::vector< int > /*[1:?]*/ PnIndex() const;
    void setPnIndex(std::vector< int > /*[1:?]*/ v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTriangulatedFaceSet (IfcEntityInstanceData* e);
    IfcTriangulatedFaceSet (::Ifc4::IfcCartesianPointList3D* v1_Coordinates, boost::optional< std::vector< std::vector< double > > > v2_Normals, boost::optional< bool > v3_Closed, std::vector< std::vector< int > > v4_CoordIndex, boost::optional< std::vector< int > /*[1:?]*/ > v5_PnIndex);
    typedef IfcTemplatedEntityList< IfcTriangulatedFaceSet > list;
};
class IFC_PARSE_API IfcWindowLiningProperties : public IfcPreDefinedPropertySet {
public:
    bool hasLiningDepth() const;
    double LiningDepth() const;
    void setLiningDepth(double v);
    bool hasLiningThickness() const;
    double LiningThickness() const;
    void setLiningThickness(double v);
    bool hasTransomThickness() const;
    double TransomThickness() const;
    void setTransomThickness(double v);
    bool hasMullionThickness() const;
    double MullionThickness() const;
    void setMullionThickness(double v);
    bool hasFirstTransomOffset() const;
    double FirstTransomOffset() const;
    void setFirstTransomOffset(double v);
    bool hasSecondTransomOffset() const;
    double SecondTransomOffset() const;
    void setSecondTransomOffset(double v);
    bool hasFirstMullionOffset() const;
    double FirstMullionOffset() const;
    void setFirstMullionOffset(double v);
    bool hasSecondMullionOffset() const;
    double SecondMullionOffset() const;
    void setSecondMullionOffset(double v);
    bool hasShapeAspectStyle() const;
    ::Ifc4::IfcShapeAspect* ShapeAspectStyle() const;
    void setShapeAspectStyle(::Ifc4::IfcShapeAspect* v);
    bool hasLiningOffset() const;
    double LiningOffset() const;
    void setLiningOffset(double v);
    bool hasLiningToPanelOffsetX() const;
    double LiningToPanelOffsetX() const;
    void setLiningToPanelOffsetX(double v);
    bool hasLiningToPanelOffsetY() const;
    double LiningToPanelOffsetY() const;
    void setLiningToPanelOffsetY(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcWindowLiningProperties (IfcEntityInstanceData* e);
    IfcWindowLiningProperties (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< double > v5_LiningDepth, boost::optional< double > v6_LiningThickness, boost::optional< double > v7_TransomThickness, boost::optional< double > v8_MullionThickness, boost::optional< double > v9_FirstTransomOffset, boost::optional< double > v10_SecondTransomOffset, boost::optional< double > v11_FirstMullionOffset, boost::optional< double > v12_SecondMullionOffset, ::Ifc4::IfcShapeAspect* v13_ShapeAspectStyle, boost::optional< double > v14_LiningOffset, boost::optional< double > v15_LiningToPanelOffsetX, boost::optional< double > v16_LiningToPanelOffsetY);
    typedef IfcTemplatedEntityList< IfcWindowLiningProperties > list;
};
class IFC_PARSE_API IfcWindowPanelProperties : public IfcPreDefinedPropertySet {
public:
    ::Ifc4::IfcWindowPanelOperationEnum::Value OperationType() const;
    void setOperationType(::Ifc4::IfcWindowPanelOperationEnum::Value v);
    ::Ifc4::IfcWindowPanelPositionEnum::Value PanelPosition() const;
    void setPanelPosition(::Ifc4::IfcWindowPanelPositionEnum::Value v);
    bool hasFrameDepth() const;
    double FrameDepth() const;
    void setFrameDepth(double v);
    bool hasFrameThickness() const;
    double FrameThickness() const;
    void setFrameThickness(double v);
    bool hasShapeAspectStyle() const;
    ::Ifc4::IfcShapeAspect* ShapeAspectStyle() const;
    void setShapeAspectStyle(::Ifc4::IfcShapeAspect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcWindowPanelProperties (IfcEntityInstanceData* e);
    IfcWindowPanelProperties (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4::IfcWindowPanelOperationEnum::Value v5_OperationType, ::Ifc4::IfcWindowPanelPositionEnum::Value v6_PanelPosition, boost::optional< double > v7_FrameDepth, boost::optional< double > v8_FrameThickness, ::Ifc4::IfcShapeAspect* v9_ShapeAspectStyle);
    typedef IfcTemplatedEntityList< IfcWindowPanelProperties > list;
};
class IFC_PARSE_API IfcActor : public IfcObject {
public:
    ::Ifc4::IfcActorSelect* TheActor() const;
    void setTheActor(::Ifc4::IfcActorSelect* v);
        IfcTemplatedEntityList< IfcRelAssignsToActor >::ptr IsActingUpon() const; // INVERSE IfcRelAssignsToActor::RelatingActor
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcActor (IfcEntityInstanceData* e);
    IfcActor (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcActorSelect* v6_TheActor);
    typedef IfcTemplatedEntityList< IfcActor > list;
};
class IFC_PARSE_API IfcAdvancedBrep : public IfcManifoldSolidBrep {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAdvancedBrep (IfcEntityInstanceData* e);
    IfcAdvancedBrep (::Ifc4::IfcClosedShell* v1_Outer);
    typedef IfcTemplatedEntityList< IfcAdvancedBrep > list;
};
class IFC_PARSE_API IfcAdvancedBrepWithVoids : public IfcAdvancedBrep {
public:
    IfcTemplatedEntityList< ::Ifc4::IfcClosedShell >::ptr Voids() const;
    void setVoids(IfcTemplatedEntityList< ::Ifc4::IfcClosedShell >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAdvancedBrepWithVoids (IfcEntityInstanceData* e);
    IfcAdvancedBrepWithVoids (::Ifc4::IfcClosedShell* v1_Outer, IfcTemplatedEntityList< ::Ifc4::IfcClosedShell >::ptr v2_Voids);
    typedef IfcTemplatedEntityList< IfcAdvancedBrepWithVoids > list;
};
class IFC_PARSE_API IfcAnnotation : public IfcProduct {
public:
        IfcTemplatedEntityList< IfcRelContainedInSpatialStructure >::ptr ContainedInStructure() const; // INVERSE IfcRelContainedInSpatialStructure::RelatedElements
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAnnotation (IfcEntityInstanceData* e);
    IfcAnnotation (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation);
    typedef IfcTemplatedEntityList< IfcAnnotation > list;
};
class IFC_PARSE_API IfcBSplineSurface : public IfcBoundedSurface {
public:
    int UDegree() const;
    void setUDegree(int v);
    int VDegree() const;
    void setVDegree(int v);
    IfcTemplatedEntityListList< ::Ifc4::IfcCartesianPoint >::ptr ControlPointsList() const;
    void setControlPointsList(IfcTemplatedEntityListList< ::Ifc4::IfcCartesianPoint >::ptr v);
    ::Ifc4::IfcBSplineSurfaceForm::Value SurfaceForm() const;
    void setSurfaceForm(::Ifc4::IfcBSplineSurfaceForm::Value v);
    bool UClosed() const;
    void setUClosed(bool v);
    bool VClosed() const;
    void setVClosed(bool v);
    bool SelfIntersect() const;
    void setSelfIntersect(bool v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBSplineSurface (IfcEntityInstanceData* e);
    IfcBSplineSurface (int v1_UDegree, int v2_VDegree, IfcTemplatedEntityListList< ::Ifc4::IfcCartesianPoint >::ptr v3_ControlPointsList, ::Ifc4::IfcBSplineSurfaceForm::Value v4_SurfaceForm, bool v5_UClosed, bool v6_VClosed, bool v7_SelfIntersect);
    typedef IfcTemplatedEntityList< IfcBSplineSurface > list;
};
class IFC_PARSE_API IfcBSplineSurfaceWithKnots : public IfcBSplineSurface {
public:
    std::vector< int > /*[2:?]*/ UMultiplicities() const;
    void setUMultiplicities(std::vector< int > /*[2:?]*/ v);
    std::vector< int > /*[2:?]*/ VMultiplicities() const;
    void setVMultiplicities(std::vector< int > /*[2:?]*/ v);
    std::vector< double > /*[2:?]*/ UKnots() const;
    void setUKnots(std::vector< double > /*[2:?]*/ v);
    std::vector< double > /*[2:?]*/ VKnots() const;
    void setVKnots(std::vector< double > /*[2:?]*/ v);
    ::Ifc4::IfcKnotType::Value KnotSpec() const;
    void setKnotSpec(::Ifc4::IfcKnotType::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBSplineSurfaceWithKnots (IfcEntityInstanceData* e);
    IfcBSplineSurfaceWithKnots (int v1_UDegree, int v2_VDegree, IfcTemplatedEntityListList< ::Ifc4::IfcCartesianPoint >::ptr v3_ControlPointsList, ::Ifc4::IfcBSplineSurfaceForm::Value v4_SurfaceForm, bool v5_UClosed, bool v6_VClosed, bool v7_SelfIntersect, std::vector< int > /*[2:?]*/ v8_UMultiplicities, std::vector< int > /*[2:?]*/ v9_VMultiplicities, std::vector< double > /*[2:?]*/ v10_UKnots, std::vector< double > /*[2:?]*/ v11_VKnots, ::Ifc4::IfcKnotType::Value v12_KnotSpec);
    typedef IfcTemplatedEntityList< IfcBSplineSurfaceWithKnots > list;
};
class IFC_PARSE_API IfcBlock : public IfcCsgPrimitive3D {
public:
    double XLength() const;
    void setXLength(double v);
    double YLength() const;
    void setYLength(double v);
    double ZLength() const;
    void setZLength(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBlock (IfcEntityInstanceData* e);
    IfcBlock (::Ifc4::IfcAxis2Placement3D* v1_Position, double v2_XLength, double v3_YLength, double v4_ZLength);
    typedef IfcTemplatedEntityList< IfcBlock > list;
};
class IFC_PARSE_API IfcBooleanClippingResult : public IfcBooleanResult {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBooleanClippingResult (IfcEntityInstanceData* e);
    IfcBooleanClippingResult (::Ifc4::IfcBooleanOperator::Value v1_Operator, ::Ifc4::IfcBooleanOperand* v2_FirstOperand, ::Ifc4::IfcBooleanOperand* v3_SecondOperand);
    typedef IfcTemplatedEntityList< IfcBooleanClippingResult > list;
};
class IFC_PARSE_API IfcBoundedCurve : public IfcCurve {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBoundedCurve (IfcEntityInstanceData* e);
    IfcBoundedCurve ();
    typedef IfcTemplatedEntityList< IfcBoundedCurve > list;
};
class IFC_PARSE_API IfcBuilding : public IfcSpatialStructureElement {
public:
    bool hasElevationOfRefHeight() const;
    double ElevationOfRefHeight() const;
    void setElevationOfRefHeight(double v);
    bool hasElevationOfTerrain() const;
    double ElevationOfTerrain() const;
    void setElevationOfTerrain(double v);
    bool hasBuildingAddress() const;
    ::Ifc4::IfcPostalAddress* BuildingAddress() const;
    void setBuildingAddress(::Ifc4::IfcPostalAddress* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBuilding (IfcEntityInstanceData* e);
    IfcBuilding (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4::IfcElementCompositionEnum::Value > v9_CompositionType, boost::optional< double > v10_ElevationOfRefHeight, boost::optional< double > v11_ElevationOfTerrain, ::Ifc4::IfcPostalAddress* v12_BuildingAddress);
    typedef IfcTemplatedEntityList< IfcBuilding > list;
};
class IFC_PARSE_API IfcBuildingElementType : public IfcElementType {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBuildingElementType (IfcEntityInstanceData* e);
    IfcBuildingElementType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcBuildingElementType > list;
};
class IFC_PARSE_API IfcBuildingStorey : public IfcSpatialStructureElement {
public:
    bool hasElevation() const;
    double Elevation() const;
    void setElevation(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBuildingStorey (IfcEntityInstanceData* e);
    IfcBuildingStorey (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4::IfcElementCompositionEnum::Value > v9_CompositionType, boost::optional< double > v10_Elevation);
    typedef IfcTemplatedEntityList< IfcBuildingStorey > list;
};
class IFC_PARSE_API IfcChimneyType : public IfcBuildingElementType {
public:
    ::Ifc4::IfcChimneyTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcChimneyTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcChimneyType (IfcEntityInstanceData* e);
    IfcChimneyType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcChimneyTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcChimneyType > list;
};
class IFC_PARSE_API IfcCircleHollowProfileDef : public IfcCircleProfileDef {
public:
    double WallThickness() const;
    void setWallThickness(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCircleHollowProfileDef (IfcEntityInstanceData* e);
    IfcCircleHollowProfileDef (::Ifc4::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4::IfcAxis2Placement2D* v3_Position, double v4_Radius, double v5_WallThickness);
    typedef IfcTemplatedEntityList< IfcCircleHollowProfileDef > list;
};

class IFC_PARSE_API IfcCivilElementType : public IfcElementType {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCivilElementType (IfcEntityInstanceData* e);
    IfcCivilElementType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcCivilElementType > list;
};
class IFC_PARSE_API IfcColumnType : public IfcBuildingElementType {
public:
    ::Ifc4::IfcColumnTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcColumnTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcColumnType (IfcEntityInstanceData* e);
    IfcColumnType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcColumnTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcColumnType > list;
};
class IFC_PARSE_API IfcComplexPropertyTemplate : public IfcPropertyTemplate {
public:
    bool hasUsageName() const;
    std::string UsageName() const;
    void setUsageName(std::string v);
    bool hasTemplateType() const;
    ::Ifc4::IfcComplexPropertyTemplateTypeEnum::Value TemplateType() const;
    void setTemplateType(::Ifc4::IfcComplexPropertyTemplateTypeEnum::Value v);
    bool hasHasPropertyTemplates() const;
    IfcTemplatedEntityList< ::Ifc4::IfcPropertyTemplate >::ptr HasPropertyTemplates() const;
    void setHasPropertyTemplates(IfcTemplatedEntityList< ::Ifc4::IfcPropertyTemplate >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcComplexPropertyTemplate (IfcEntityInstanceData* e);
    IfcComplexPropertyTemplate (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_UsageName, boost::optional< ::Ifc4::IfcComplexPropertyTemplateTypeEnum::Value > v6_TemplateType, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertyTemplate >::ptr > v7_HasPropertyTemplates);
    typedef IfcTemplatedEntityList< IfcComplexPropertyTemplate > list;
};
class IFC_PARSE_API IfcCompositeCurve : public IfcBoundedCurve {
public:
    IfcTemplatedEntityList< ::Ifc4::IfcCompositeCurveSegment >::ptr Segments() const;
    void setSegments(IfcTemplatedEntityList< ::Ifc4::IfcCompositeCurveSegment >::ptr v);
    bool SelfIntersect() const;
    void setSelfIntersect(bool v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCompositeCurve (IfcEntityInstanceData* e);
    IfcCompositeCurve (IfcTemplatedEntityList< ::Ifc4::IfcCompositeCurveSegment >::ptr v1_Segments, bool v2_SelfIntersect);
    typedef IfcTemplatedEntityList< IfcCompositeCurve > list;
};
class IFC_PARSE_API IfcCompositeCurveOnSurface : public IfcCompositeCurve {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCompositeCurveOnSurface (IfcEntityInstanceData* e);
    IfcCompositeCurveOnSurface (IfcTemplatedEntityList< ::Ifc4::IfcCompositeCurveSegment >::ptr v1_Segments, bool v2_SelfIntersect);
    typedef IfcTemplatedEntityList< IfcCompositeCurveOnSurface > list;
};
class IFC_PARSE_API IfcConic : public IfcCurve {
public:
    ::Ifc4::IfcAxis2Placement* Position() const;
    void setPosition(::Ifc4::IfcAxis2Placement* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcConic (IfcEntityInstanceData* e);
    IfcConic (::Ifc4::IfcAxis2Placement* v1_Position);
    typedef IfcTemplatedEntityList< IfcConic > list;
};
class IFC_PARSE_API IfcConstructionEquipmentResourceType : public IfcConstructionResourceType {
public:
    ::Ifc4::IfcConstructionEquipmentResourceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcConstructionEquipmentResourceTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcConstructionEquipmentResourceType (IfcEntityInstanceData* e);
    IfcConstructionEquipmentResourceType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcAppliedValue >::ptr > v10_BaseCosts, ::Ifc4::IfcPhysicalQuantity* v11_BaseQuantity, ::Ifc4::IfcConstructionEquipmentResourceTypeEnum::Value v12_PredefinedType);
    typedef IfcTemplatedEntityList< IfcConstructionEquipmentResourceType > list;
};
class IFC_PARSE_API IfcConstructionMaterialResourceType : public IfcConstructionResourceType {
public:
    ::Ifc4::IfcConstructionMaterialResourceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcConstructionMaterialResourceTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcConstructionMaterialResourceType (IfcEntityInstanceData* e);
    IfcConstructionMaterialResourceType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcAppliedValue >::ptr > v10_BaseCosts, ::Ifc4::IfcPhysicalQuantity* v11_BaseQuantity, ::Ifc4::IfcConstructionMaterialResourceTypeEnum::Value v12_PredefinedType);
    typedef IfcTemplatedEntityList< IfcConstructionMaterialResourceType > list;
};
class IFC_PARSE_API IfcConstructionProductResourceType : public IfcConstructionResourceType {
public:
    ::Ifc4::IfcConstructionProductResourceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcConstructionProductResourceTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcConstructionProductResourceType (IfcEntityInstanceData* e);
    IfcConstructionProductResourceType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcAppliedValue >::ptr > v10_BaseCosts, ::Ifc4::IfcPhysicalQuantity* v11_BaseQuantity, ::Ifc4::IfcConstructionProductResourceTypeEnum::Value v12_PredefinedType);
    typedef IfcTemplatedEntityList< IfcConstructionProductResourceType > list;
};
class IFC_PARSE_API IfcConstructionResource : public IfcResource {
public:
    bool hasUsage() const;
    ::Ifc4::IfcResourceTime* Usage() const;
    void setUsage(::Ifc4::IfcResourceTime* v);
    bool hasBaseCosts() const;
    IfcTemplatedEntityList< ::Ifc4::IfcAppliedValue >::ptr BaseCosts() const;
    void setBaseCosts(IfcTemplatedEntityList< ::Ifc4::IfcAppliedValue >::ptr v);
    bool hasBaseQuantity() const;
    ::Ifc4::IfcPhysicalQuantity* BaseQuantity() const;
    void setBaseQuantity(::Ifc4::IfcPhysicalQuantity* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcConstructionResource (IfcEntityInstanceData* e);
    IfcConstructionResource (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, ::Ifc4::IfcResourceTime* v8_Usage, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcAppliedValue >::ptr > v9_BaseCosts, ::Ifc4::IfcPhysicalQuantity* v10_BaseQuantity);
    typedef IfcTemplatedEntityList< IfcConstructionResource > list;
};
class IFC_PARSE_API IfcControl : public IfcObject {
public:
    bool hasIdentification() const;
    std::string Identification() const;
    void setIdentification(std::string v);
        IfcTemplatedEntityList< IfcRelAssignsToControl >::ptr Controls() const; // INVERSE IfcRelAssignsToControl::RelatingControl
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcControl (IfcEntityInstanceData* e);
    IfcControl (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification);
    typedef IfcTemplatedEntityList< IfcControl > list;
};
class IFC_PARSE_API IfcCostItem : public IfcControl {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcCostItemTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcCostItemTypeEnum::Value v);
    bool hasCostValues() const;
    IfcTemplatedEntityList< ::Ifc4::IfcCostValue >::ptr CostValues() const;
    void setCostValues(IfcTemplatedEntityList< ::Ifc4::IfcCostValue >::ptr v);
    bool hasCostQuantities() const;
    IfcTemplatedEntityList< ::Ifc4::IfcPhysicalQuantity >::ptr CostQuantities() const;
    void setCostQuantities(IfcTemplatedEntityList< ::Ifc4::IfcPhysicalQuantity >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCostItem (IfcEntityInstanceData* e);
    IfcCostItem (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< ::Ifc4::IfcCostItemTypeEnum::Value > v7_PredefinedType, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcCostValue >::ptr > v8_CostValues, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPhysicalQuantity >::ptr > v9_CostQuantities);
    typedef IfcTemplatedEntityList< IfcCostItem > list;
};
class IFC_PARSE_API IfcCostSchedule : public IfcControl {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcCostScheduleTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcCostScheduleTypeEnum::Value v);
    bool hasStatus() const;
    std::string Status() const;
    void setStatus(std::string v);
    bool hasSubmittedOn() const;
    std::string SubmittedOn() const;
    void setSubmittedOn(std::string v);
    bool hasUpdateDate() const;
    std::string UpdateDate() const;
    void setUpdateDate(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCostSchedule (IfcEntityInstanceData* e);
    IfcCostSchedule (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< ::Ifc4::IfcCostScheduleTypeEnum::Value > v7_PredefinedType, boost::optional< std::string > v8_Status, boost::optional< std::string > v9_SubmittedOn, boost::optional< std::string > v10_UpdateDate);
    typedef IfcTemplatedEntityList< IfcCostSchedule > list;
};
class IFC_PARSE_API IfcCoveringType : public IfcBuildingElementType {
public:
    ::Ifc4::IfcCoveringTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcCoveringTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCoveringType (IfcEntityInstanceData* e);
    IfcCoveringType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcCoveringTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCoveringType > list;
};
class IFC_PARSE_API IfcCrewResource : public IfcConstructionResource {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcCrewResourceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcCrewResourceTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCrewResource (IfcEntityInstanceData* e);
    IfcCrewResource (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, ::Ifc4::IfcResourceTime* v8_Usage, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcAppliedValue >::ptr > v9_BaseCosts, ::Ifc4::IfcPhysicalQuantity* v10_BaseQuantity, boost::optional< ::Ifc4::IfcCrewResourceTypeEnum::Value > v11_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCrewResource > list;
};
class IFC_PARSE_API IfcCurtainWallType : public IfcBuildingElementType {
public:
    ::Ifc4::IfcCurtainWallTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcCurtainWallTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCurtainWallType (IfcEntityInstanceData* e);
    IfcCurtainWallType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcCurtainWallTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCurtainWallType > list;
};
class IFC_PARSE_API IfcCylindricalSurface : public IfcElementarySurface {
public:
    double Radius() const;
    void setRadius(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCylindricalSurface (IfcEntityInstanceData* e);
    IfcCylindricalSurface (::Ifc4::IfcAxis2Placement3D* v1_Position, double v2_Radius);
    typedef IfcTemplatedEntityList< IfcCylindricalSurface > list;
};
class IFC_PARSE_API IfcDistributionElementType : public IfcElementType {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDistributionElementType (IfcEntityInstanceData* e);
    IfcDistributionElementType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcDistributionElementType > list;
};
class IFC_PARSE_API IfcDistributionFlowElementType : public IfcDistributionElementType {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDistributionFlowElementType (IfcEntityInstanceData* e);
    IfcDistributionFlowElementType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcDistributionFlowElementType > list;
};
class IFC_PARSE_API IfcDoorLiningProperties : public IfcPreDefinedPropertySet {
public:
    bool hasLiningDepth() const;
    double LiningDepth() const;
    void setLiningDepth(double v);
    bool hasLiningThickness() const;
    double LiningThickness() const;
    void setLiningThickness(double v);
    bool hasThresholdDepth() const;
    double ThresholdDepth() const;
    void setThresholdDepth(double v);
    bool hasThresholdThickness() const;
    double ThresholdThickness() const;
    void setThresholdThickness(double v);
    bool hasTransomThickness() const;
    double TransomThickness() const;
    void setTransomThickness(double v);
    bool hasTransomOffset() const;
    double TransomOffset() const;
    void setTransomOffset(double v);
    bool hasLiningOffset() const;
    double LiningOffset() const;
    void setLiningOffset(double v);
    bool hasThresholdOffset() const;
    double ThresholdOffset() const;
    void setThresholdOffset(double v);
    bool hasCasingThickness() const;
    double CasingThickness() const;
    void setCasingThickness(double v);
    bool hasCasingDepth() const;
    double CasingDepth() const;
    void setCasingDepth(double v);
    bool hasShapeAspectStyle() const;
    ::Ifc4::IfcShapeAspect* ShapeAspectStyle() const;
    void setShapeAspectStyle(::Ifc4::IfcShapeAspect* v);
    bool hasLiningToPanelOffsetX() const;
    double LiningToPanelOffsetX() const;
    void setLiningToPanelOffsetX(double v);
    bool hasLiningToPanelOffsetY() const;
    double LiningToPanelOffsetY() const;
    void setLiningToPanelOffsetY(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDoorLiningProperties (IfcEntityInstanceData* e);
    IfcDoorLiningProperties (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< double > v5_LiningDepth, boost::optional< double > v6_LiningThickness, boost::optional< double > v7_ThresholdDepth, boost::optional< double > v8_ThresholdThickness, boost::optional< double > v9_TransomThickness, boost::optional< double > v10_TransomOffset, boost::optional< double > v11_LiningOffset, boost::optional< double > v12_ThresholdOffset, boost::optional< double > v13_CasingThickness, boost::optional< double > v14_CasingDepth, ::Ifc4::IfcShapeAspect* v15_ShapeAspectStyle, boost::optional< double > v16_LiningToPanelOffsetX, boost::optional< double > v17_LiningToPanelOffsetY);
    typedef IfcTemplatedEntityList< IfcDoorLiningProperties > list;
};
class IFC_PARSE_API IfcDoorPanelProperties : public IfcPreDefinedPropertySet {
public:
    bool hasPanelDepth() const;
    double PanelDepth() const;
    void setPanelDepth(double v);
    ::Ifc4::IfcDoorPanelOperationEnum::Value PanelOperation() const;
    void setPanelOperation(::Ifc4::IfcDoorPanelOperationEnum::Value v);
    bool hasPanelWidth() const;
    double PanelWidth() const;
    void setPanelWidth(double v);
    ::Ifc4::IfcDoorPanelPositionEnum::Value PanelPosition() const;
    void setPanelPosition(::Ifc4::IfcDoorPanelPositionEnum::Value v);
    bool hasShapeAspectStyle() const;
    ::Ifc4::IfcShapeAspect* ShapeAspectStyle() const;
    void setShapeAspectStyle(::Ifc4::IfcShapeAspect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDoorPanelProperties (IfcEntityInstanceData* e);
    IfcDoorPanelProperties (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< double > v5_PanelDepth, ::Ifc4::IfcDoorPanelOperationEnum::Value v6_PanelOperation, boost::optional< double > v7_PanelWidth, ::Ifc4::IfcDoorPanelPositionEnum::Value v8_PanelPosition, ::Ifc4::IfcShapeAspect* v9_ShapeAspectStyle);
    typedef IfcTemplatedEntityList< IfcDoorPanelProperties > list;
};
class IFC_PARSE_API IfcDoorType : public IfcBuildingElementType {
public:
    ::Ifc4::IfcDoorTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcDoorTypeEnum::Value v);
    ::Ifc4::IfcDoorTypeOperationEnum::Value OperationType() const;
    void setOperationType(::Ifc4::IfcDoorTypeOperationEnum::Value v);
    bool hasParameterTakesPrecedence() const;
    bool ParameterTakesPrecedence() const;
    void setParameterTakesPrecedence(bool v);
    bool hasUserDefinedOperationType() const;
    std::string UserDefinedOperationType() const;
    void setUserDefinedOperationType(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDoorType (IfcEntityInstanceData* e);
    IfcDoorType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcDoorTypeEnum::Value v10_PredefinedType, ::Ifc4::IfcDoorTypeOperationEnum::Value v11_OperationType, boost::optional< bool > v12_ParameterTakesPrecedence, boost::optional< std::string > v13_UserDefinedOperationType);
    typedef IfcTemplatedEntityList< IfcDoorType > list;
};
class IFC_PARSE_API IfcDraughtingPreDefinedColour : public IfcPreDefinedColour {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDraughtingPreDefinedColour (IfcEntityInstanceData* e);
    IfcDraughtingPreDefinedColour (std::string v1_Name);
    typedef IfcTemplatedEntityList< IfcDraughtingPreDefinedColour > list;
};
class IFC_PARSE_API IfcDraughtingPreDefinedCurveFont : public IfcPreDefinedCurveFont {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDraughtingPreDefinedCurveFont (IfcEntityInstanceData* e);
    IfcDraughtingPreDefinedCurveFont (std::string v1_Name);
    typedef IfcTemplatedEntityList< IfcDraughtingPreDefinedCurveFont > list;
};
class IFC_PARSE_API IfcElement : public IfcProduct {
public:
    bool hasTag() const;
    std::string Tag() const;
    void setTag(std::string v);
        IfcTemplatedEntityList< IfcRelFillsElement >::ptr FillsVoids() const; // INVERSE IfcRelFillsElement::RelatedBuildingElement
    IfcTemplatedEntityList< IfcRelConnectsElements >::ptr ConnectedTo() const; // INVERSE IfcRelConnectsElements::RelatingElement
    IfcTemplatedEntityList< IfcRelInterferesElements >::ptr IsInterferedByElements() const; // INVERSE IfcRelInterferesElements::RelatedElement
    IfcTemplatedEntityList< IfcRelInterferesElements >::ptr InterferesElements() const; // INVERSE IfcRelInterferesElements::RelatingElement
    IfcTemplatedEntityList< IfcRelProjectsElement >::ptr HasProjections() const; // INVERSE IfcRelProjectsElement::RelatingElement
    IfcTemplatedEntityList< IfcRelReferencedInSpatialStructure >::ptr ReferencedInStructures() const; // INVERSE IfcRelReferencedInSpatialStructure::RelatedElements
    IfcTemplatedEntityList< IfcRelVoidsElement >::ptr HasOpenings() const; // INVERSE IfcRelVoidsElement::RelatingBuildingElement
    IfcTemplatedEntityList< IfcRelConnectsWithRealizingElements >::ptr IsConnectionRealization() const; // INVERSE IfcRelConnectsWithRealizingElements::RealizingElements
    IfcTemplatedEntityList< IfcRelSpaceBoundary >::ptr ProvidesBoundaries() const; // INVERSE IfcRelSpaceBoundary::RelatedBuildingElement
    IfcTemplatedEntityList< IfcRelConnectsElements >::ptr ConnectedFrom() const; // INVERSE IfcRelConnectsElements::RelatedElement
    IfcTemplatedEntityList< IfcRelContainedInSpatialStructure >::ptr ContainedInStructure() const; // INVERSE IfcRelContainedInSpatialStructure::RelatedElements
    IfcTemplatedEntityList< IfcRelCoversBldgElements >::ptr HasCoverings() const; // INVERSE IfcRelCoversBldgElements::RelatingBuildingElement
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcElement (IfcEntityInstanceData* e);
    IfcElement (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcElement > list;
};
class IFC_PARSE_API IfcElementAssembly : public IfcElement {
public:
    bool hasAssemblyPlace() const;
    ::Ifc4::IfcAssemblyPlaceEnum::Value AssemblyPlace() const;
    void setAssemblyPlace(::Ifc4::IfcAssemblyPlaceEnum::Value v);
    bool hasPredefinedType() const;
    ::Ifc4::IfcElementAssemblyTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcElementAssemblyTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcElementAssembly (IfcEntityInstanceData* e);
    IfcElementAssembly (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcAssemblyPlaceEnum::Value > v9_AssemblyPlace, boost::optional< ::Ifc4::IfcElementAssemblyTypeEnum::Value > v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcElementAssembly > list;
};
class IFC_PARSE_API IfcElementAssemblyType : public IfcElementType {
public:
    ::Ifc4::IfcElementAssemblyTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcElementAssemblyTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcElementAssemblyType (IfcEntityInstanceData* e);
    IfcElementAssemblyType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcElementAssemblyTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcElementAssemblyType > list;
};
class IFC_PARSE_API IfcElementComponent : public IfcElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcElementComponent (IfcEntityInstanceData* e);
    IfcElementComponent (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcElementComponent > list;
};
class IFC_PARSE_API IfcElementComponentType : public IfcElementType {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcElementComponentType (IfcEntityInstanceData* e);
    IfcElementComponentType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcElementComponentType > list;
};
class IFC_PARSE_API IfcEllipse : public IfcConic {
public:
    double SemiAxis1() const;
    void setSemiAxis1(double v);
    double SemiAxis2() const;
    void setSemiAxis2(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcEllipse (IfcEntityInstanceData* e);
    IfcEllipse (::Ifc4::IfcAxis2Placement* v1_Position, double v2_SemiAxis1, double v3_SemiAxis2);
    typedef IfcTemplatedEntityList< IfcEllipse > list;
};
class IFC_PARSE_API IfcEnergyConversionDeviceType : public IfcDistributionFlowElementType {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcEnergyConversionDeviceType (IfcEntityInstanceData* e);
    IfcEnergyConversionDeviceType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcEnergyConversionDeviceType > list;
};
class IFC_PARSE_API IfcEngineType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc4::IfcEngineTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcEngineTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcEngineType (IfcEntityInstanceData* e);
    IfcEngineType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcEngineTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcEngineType > list;
};
class IFC_PARSE_API IfcEvaporativeCoolerType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc4::IfcEvaporativeCoolerTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcEvaporativeCoolerTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcEvaporativeCoolerType (IfcEntityInstanceData* e);
    IfcEvaporativeCoolerType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcEvaporativeCoolerTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcEvaporativeCoolerType > list;
};
class IFC_PARSE_API IfcEvaporatorType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc4::IfcEvaporatorTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcEvaporatorTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcEvaporatorType (IfcEntityInstanceData* e);
    IfcEvaporatorType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcEvaporatorTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcEvaporatorType > list;
};
class IFC_PARSE_API IfcEvent : public IfcProcess {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcEventTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcEventTypeEnum::Value v);
    bool hasEventTriggerType() const;
    ::Ifc4::IfcEventTriggerTypeEnum::Value EventTriggerType() const;
    void setEventTriggerType(::Ifc4::IfcEventTriggerTypeEnum::Value v);
    bool hasUserDefinedEventTriggerType() const;
    std::string UserDefinedEventTriggerType() const;
    void setUserDefinedEventTriggerType(std::string v);
    bool hasEventOccurenceTime() const;
    ::Ifc4::IfcEventTime* EventOccurenceTime() const;
    void setEventOccurenceTime(::Ifc4::IfcEventTime* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcEvent (IfcEntityInstanceData* e);
    IfcEvent (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, boost::optional< ::Ifc4::IfcEventTypeEnum::Value > v8_PredefinedType, boost::optional< ::Ifc4::IfcEventTriggerTypeEnum::Value > v9_EventTriggerType, boost::optional< std::string > v10_UserDefinedEventTriggerType, ::Ifc4::IfcEventTime* v11_EventOccurenceTime);
    typedef IfcTemplatedEntityList< IfcEvent > list;
};
class IFC_PARSE_API IfcExternalSpatialStructureElement : public IfcSpatialElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcExternalSpatialStructureElement (IfcEntityInstanceData* e);
    IfcExternalSpatialStructureElement (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName);
    typedef IfcTemplatedEntityList< IfcExternalSpatialStructureElement > list;
};
class IFC_PARSE_API IfcFacetedBrep : public IfcManifoldSolidBrep {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFacetedBrep (IfcEntityInstanceData* e);
    IfcFacetedBrep (::Ifc4::IfcClosedShell* v1_Outer);
    typedef IfcTemplatedEntityList< IfcFacetedBrep > list;
};
class IFC_PARSE_API IfcFacetedBrepWithVoids : public IfcFacetedBrep {
public:
    IfcTemplatedEntityList< ::Ifc4::IfcClosedShell >::ptr Voids() const;
    void setVoids(IfcTemplatedEntityList< ::Ifc4::IfcClosedShell >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFacetedBrepWithVoids (IfcEntityInstanceData* e);
    IfcFacetedBrepWithVoids (::Ifc4::IfcClosedShell* v1_Outer, IfcTemplatedEntityList< ::Ifc4::IfcClosedShell >::ptr v2_Voids);
    typedef IfcTemplatedEntityList< IfcFacetedBrepWithVoids > list;
};
class IFC_PARSE_API IfcFastener : public IfcElementComponent {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcFastenerTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcFastenerTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFastener (IfcEntityInstanceData* e);
    IfcFastener (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcFastenerTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcFastener > list;
};
class IFC_PARSE_API IfcFastenerType : public IfcElementComponentType {
public:
    ::Ifc4::IfcFastenerTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcFastenerTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFastenerType (IfcEntityInstanceData* e);
    IfcFastenerType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcFastenerTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcFastenerType > list;
};
class IFC_PARSE_API IfcFeatureElement : public IfcElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFeatureElement (IfcEntityInstanceData* e);
    IfcFeatureElement (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcFeatureElement > list;
};
class IFC_PARSE_API IfcFeatureElementAddition : public IfcFeatureElement {
public:
        IfcTemplatedEntityList< IfcRelProjectsElement >::ptr ProjectsElements() const; // INVERSE IfcRelProjectsElement::RelatedFeatureElement
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFeatureElementAddition (IfcEntityInstanceData* e);
    IfcFeatureElementAddition (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcFeatureElementAddition > list;
};
class IFC_PARSE_API IfcFeatureElementSubtraction : public IfcFeatureElement {
public:
        IfcTemplatedEntityList< IfcRelVoidsElement >::ptr VoidsElements() const; // INVERSE IfcRelVoidsElement::RelatedOpeningElement
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFeatureElementSubtraction (IfcEntityInstanceData* e);
    IfcFeatureElementSubtraction (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcFeatureElementSubtraction > list;
};
class IFC_PARSE_API IfcFlowControllerType : public IfcDistributionFlowElementType {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFlowControllerType (IfcEntityInstanceData* e);
    IfcFlowControllerType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcFlowControllerType > list;
};
class IFC_PARSE_API IfcFlowFittingType : public IfcDistributionFlowElementType {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFlowFittingType (IfcEntityInstanceData* e);
    IfcFlowFittingType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcFlowFittingType > list;
};
class IFC_PARSE_API IfcFlowMeterType : public IfcFlowControllerType {
public:
    ::Ifc4::IfcFlowMeterTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcFlowMeterTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFlowMeterType (IfcEntityInstanceData* e);
    IfcFlowMeterType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcFlowMeterTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcFlowMeterType > list;
};
class IFC_PARSE_API IfcFlowMovingDeviceType : public IfcDistributionFlowElementType {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFlowMovingDeviceType (IfcEntityInstanceData* e);
    IfcFlowMovingDeviceType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcFlowMovingDeviceType > list;
};
class IFC_PARSE_API IfcFlowSegmentType : public IfcDistributionFlowElementType {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFlowSegmentType (IfcEntityInstanceData* e);
    IfcFlowSegmentType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcFlowSegmentType > list;
};
class IFC_PARSE_API IfcFlowStorageDeviceType : public IfcDistributionFlowElementType {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFlowStorageDeviceType (IfcEntityInstanceData* e);
    IfcFlowStorageDeviceType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcFlowStorageDeviceType > list;
};
class IFC_PARSE_API IfcFlowTerminalType : public IfcDistributionFlowElementType {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFlowTerminalType (IfcEntityInstanceData* e);
    IfcFlowTerminalType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcFlowTerminalType > list;
};
class IFC_PARSE_API IfcFlowTreatmentDeviceType : public IfcDistributionFlowElementType {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFlowTreatmentDeviceType (IfcEntityInstanceData* e);
    IfcFlowTreatmentDeviceType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcFlowTreatmentDeviceType > list;
};
class IFC_PARSE_API IfcFootingType : public IfcBuildingElementType {
public:
    ::Ifc4::IfcFootingTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcFootingTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFootingType (IfcEntityInstanceData* e);
    IfcFootingType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcFootingTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcFootingType > list;
};
class IFC_PARSE_API IfcFurnishingElement : public IfcElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFurnishingElement (IfcEntityInstanceData* e);
    IfcFurnishingElement (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcFurnishingElement > list;
};
class IFC_PARSE_API IfcFurniture : public IfcFurnishingElement {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcFurnitureTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcFurnitureTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFurniture (IfcEntityInstanceData* e);
    IfcFurniture (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcFurnitureTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcFurniture > list;
};
class IFC_PARSE_API IfcGeographicElement : public IfcElement {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcGeographicElementTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcGeographicElementTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcGeographicElement (IfcEntityInstanceData* e);
    IfcGeographicElement (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcGeographicElementTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcGeographicElement > list;
};
class IFC_PARSE_API IfcGrid : public IfcProduct {
public:
    IfcTemplatedEntityList< ::Ifc4::IfcGridAxis >::ptr UAxes() const;
    void setUAxes(IfcTemplatedEntityList< ::Ifc4::IfcGridAxis >::ptr v);
    IfcTemplatedEntityList< ::Ifc4::IfcGridAxis >::ptr VAxes() const;
    void setVAxes(IfcTemplatedEntityList< ::Ifc4::IfcGridAxis >::ptr v);
    bool hasWAxes() const;
    IfcTemplatedEntityList< ::Ifc4::IfcGridAxis >::ptr WAxes() const;
    void setWAxes(IfcTemplatedEntityList< ::Ifc4::IfcGridAxis >::ptr v);
    bool hasPredefinedType() const;
    ::Ifc4::IfcGridTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcGridTypeEnum::Value v);
        IfcTemplatedEntityList< IfcRelContainedInSpatialStructure >::ptr ContainedInStructure() const; // INVERSE IfcRelContainedInSpatialStructure::RelatedElements
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcGrid (IfcEntityInstanceData* e);
    IfcGrid (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, IfcTemplatedEntityList< ::Ifc4::IfcGridAxis >::ptr v8_UAxes, IfcTemplatedEntityList< ::Ifc4::IfcGridAxis >::ptr v9_VAxes, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcGridAxis >::ptr > v10_WAxes, boost::optional< ::Ifc4::IfcGridTypeEnum::Value > v11_PredefinedType);
    typedef IfcTemplatedEntityList< IfcGrid > list;
};
class IFC_PARSE_API IfcGroup : public IfcObject {
public:
        IfcTemplatedEntityList< IfcRelAssignsToGroup >::ptr IsGroupedBy() const; // INVERSE IfcRelAssignsToGroup::RelatingGroup
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcGroup (IfcEntityInstanceData* e);
    IfcGroup (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType);
    typedef IfcTemplatedEntityList< IfcGroup > list;
};
class IFC_PARSE_API IfcHeatExchangerType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc4::IfcHeatExchangerTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcHeatExchangerTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcHeatExchangerType (IfcEntityInstanceData* e);
    IfcHeatExchangerType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcHeatExchangerTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcHeatExchangerType > list;
};
class IFC_PARSE_API IfcHumidifierType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc4::IfcHumidifierTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcHumidifierTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcHumidifierType (IfcEntityInstanceData* e);
    IfcHumidifierType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcHumidifierTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcHumidifierType > list;
};

class IFC_PARSE_API IfcIndexedPolyCurve : public IfcBoundedCurve {
public:
    ::Ifc4::IfcCartesianPointList* Points() const;
    void setPoints(::Ifc4::IfcCartesianPointList* v);
    bool hasSegments() const;
    IfcEntityList::ptr Segments() const;
    void setSegments(IfcEntityList::ptr v);
    bool hasSelfIntersect() const;
    bool SelfIntersect() const;
    void setSelfIntersect(bool v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcIndexedPolyCurve (IfcEntityInstanceData* e);
    IfcIndexedPolyCurve (::Ifc4::IfcCartesianPointList* v1_Points, boost::optional< IfcEntityList::ptr > v2_Segments, boost::optional< bool > v3_SelfIntersect);
    typedef IfcTemplatedEntityList< IfcIndexedPolyCurve > list;
};
class IFC_PARSE_API IfcInterceptorType : public IfcFlowTreatmentDeviceType {
public:
    ::Ifc4::IfcInterceptorTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcInterceptorTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcInterceptorType (IfcEntityInstanceData* e);
    IfcInterceptorType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcInterceptorTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcInterceptorType > list;
};

class IFC_PARSE_API IfcIntersectionCurve : public IfcSurfaceCurve {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcIntersectionCurve (IfcEntityInstanceData* e);
    IfcIntersectionCurve (::Ifc4::IfcCurve* v1_Curve3D, IfcTemplatedEntityList< ::Ifc4::IfcPcurve >::ptr v2_AssociatedGeometry, ::Ifc4::IfcPreferredSurfaceCurveRepresentation::Value v3_MasterRepresentation);
    typedef IfcTemplatedEntityList< IfcIntersectionCurve > list;
};
class IFC_PARSE_API IfcInventory : public IfcGroup {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcInventoryTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcInventoryTypeEnum::Value v);
    bool hasJurisdiction() const;
    ::Ifc4::IfcActorSelect* Jurisdiction() const;
    void setJurisdiction(::Ifc4::IfcActorSelect* v);
    bool hasResponsiblePersons() const;
    IfcTemplatedEntityList< ::Ifc4::IfcPerson >::ptr ResponsiblePersons() const;
    void setResponsiblePersons(IfcTemplatedEntityList< ::Ifc4::IfcPerson >::ptr v);
    bool hasLastUpdateDate() const;
    std::string LastUpdateDate() const;
    void setLastUpdateDate(std::string v);
    bool hasCurrentValue() const;
    ::Ifc4::IfcCostValue* CurrentValue() const;
    void setCurrentValue(::Ifc4::IfcCostValue* v);
    bool hasOriginalValue() const;
    ::Ifc4::IfcCostValue* OriginalValue() const;
    void setOriginalValue(::Ifc4::IfcCostValue* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcInventory (IfcEntityInstanceData* e);
    IfcInventory (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< ::Ifc4::IfcInventoryTypeEnum::Value > v6_PredefinedType, ::Ifc4::IfcActorSelect* v7_Jurisdiction, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPerson >::ptr > v8_ResponsiblePersons, boost::optional< std::string > v9_LastUpdateDate, ::Ifc4::IfcCostValue* v10_CurrentValue, ::Ifc4::IfcCostValue* v11_OriginalValue);
    typedef IfcTemplatedEntityList< IfcInventory > list;
};
class IFC_PARSE_API IfcJunctionBoxType : public IfcFlowFittingType {
public:
    ::Ifc4::IfcJunctionBoxTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcJunctionBoxTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcJunctionBoxType (IfcEntityInstanceData* e);
    IfcJunctionBoxType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcJunctionBoxTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcJunctionBoxType > list;
};
class IFC_PARSE_API IfcLaborResource : public IfcConstructionResource {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcLaborResourceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcLaborResourceTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLaborResource (IfcEntityInstanceData* e);
    IfcLaborResource (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, ::Ifc4::IfcResourceTime* v8_Usage, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcAppliedValue >::ptr > v9_BaseCosts, ::Ifc4::IfcPhysicalQuantity* v10_BaseQuantity, boost::optional< ::Ifc4::IfcLaborResourceTypeEnum::Value > v11_PredefinedType);
    typedef IfcTemplatedEntityList< IfcLaborResource > list;
};
class IFC_PARSE_API IfcLampType : public IfcFlowTerminalType {
public:
    ::Ifc4::IfcLampTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcLampTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLampType (IfcEntityInstanceData* e);
    IfcLampType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcLampTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcLampType > list;
};
class IFC_PARSE_API IfcLightFixtureType : public IfcFlowTerminalType {
public:
    ::Ifc4::IfcLightFixtureTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcLightFixtureTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLightFixtureType (IfcEntityInstanceData* e);
    IfcLightFixtureType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcLightFixtureTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcLightFixtureType > list;
};
class IFC_PARSE_API IfcMechanicalFastener : public IfcElementComponent {
public:
    bool hasNominalDiameter() const;
    double NominalDiameter() const;
    void setNominalDiameter(double v);
    bool hasNominalLength() const;
    double NominalLength() const;
    void setNominalLength(double v);
    bool hasPredefinedType() const;
    ::Ifc4::IfcMechanicalFastenerTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcMechanicalFastenerTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMechanicalFastener (IfcEntityInstanceData* e);
    IfcMechanicalFastener (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< double > v9_NominalDiameter, boost::optional< double > v10_NominalLength, boost::optional< ::Ifc4::IfcMechanicalFastenerTypeEnum::Value > v11_PredefinedType);
    typedef IfcTemplatedEntityList< IfcMechanicalFastener > list;
};
class IFC_PARSE_API IfcMechanicalFastenerType : public IfcElementComponentType {
public:
    ::Ifc4::IfcMechanicalFastenerTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcMechanicalFastenerTypeEnum::Value v);
    bool hasNominalDiameter() const;
    double NominalDiameter() const;
    void setNominalDiameter(double v);
    bool hasNominalLength() const;
    double NominalLength() const;
    void setNominalLength(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMechanicalFastenerType (IfcEntityInstanceData* e);
    IfcMechanicalFastenerType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcMechanicalFastenerTypeEnum::Value v10_PredefinedType, boost::optional< double > v11_NominalDiameter, boost::optional< double > v12_NominalLength);
    typedef IfcTemplatedEntityList< IfcMechanicalFastenerType > list;
};
class IFC_PARSE_API IfcMedicalDeviceType : public IfcFlowTerminalType {
public:
    ::Ifc4::IfcMedicalDeviceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcMedicalDeviceTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMedicalDeviceType (IfcEntityInstanceData* e);
    IfcMedicalDeviceType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcMedicalDeviceTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcMedicalDeviceType > list;
};
class IFC_PARSE_API IfcMemberType : public IfcBuildingElementType {
public:
    ::Ifc4::IfcMemberTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcMemberTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMemberType (IfcEntityInstanceData* e);
    IfcMemberType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcMemberTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcMemberType > list;
};
class IFC_PARSE_API IfcMotorConnectionType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc4::IfcMotorConnectionTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcMotorConnectionTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMotorConnectionType (IfcEntityInstanceData* e);
    IfcMotorConnectionType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcMotorConnectionTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcMotorConnectionType > list;
};
class IFC_PARSE_API IfcOccupant : public IfcActor {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcOccupantTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcOccupantTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcOccupant (IfcEntityInstanceData* e);
    IfcOccupant (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcActorSelect* v6_TheActor, boost::optional< ::Ifc4::IfcOccupantTypeEnum::Value > v7_PredefinedType);
    typedef IfcTemplatedEntityList< IfcOccupant > list;
};
class IFC_PARSE_API IfcOpeningElement : public IfcFeatureElementSubtraction {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcOpeningElementTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcOpeningElementTypeEnum::Value v);
        IfcTemplatedEntityList< IfcRelFillsElement >::ptr HasFillings() const; // INVERSE IfcRelFillsElement::RelatingOpeningElement
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcOpeningElement (IfcEntityInstanceData* e);
    IfcOpeningElement (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcOpeningElementTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcOpeningElement > list;
};
class IFC_PARSE_API IfcOpeningStandardCase : public IfcOpeningElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcOpeningStandardCase (IfcEntityInstanceData* e);
    IfcOpeningStandardCase (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcOpeningElementTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcOpeningStandardCase > list;
};
class IFC_PARSE_API IfcOutletType : public IfcFlowTerminalType {
public:
    ::Ifc4::IfcOutletTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcOutletTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcOutletType (IfcEntityInstanceData* e);
    IfcOutletType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcOutletTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcOutletType > list;
};
class IFC_PARSE_API IfcPerformanceHistory : public IfcControl {
public:
    std::string LifeCyclePhase() const;
    void setLifeCyclePhase(std::string v);
    bool hasPredefinedType() const;
    ::Ifc4::IfcPerformanceHistoryTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcPerformanceHistoryTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPerformanceHistory (IfcEntityInstanceData* e);
    IfcPerformanceHistory (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, std::string v7_LifeCyclePhase, boost::optional< ::Ifc4::IfcPerformanceHistoryTypeEnum::Value > v8_PredefinedType);
    typedef IfcTemplatedEntityList< IfcPerformanceHistory > list;
};
class IFC_PARSE_API IfcPermeableCoveringProperties : public IfcPreDefinedPropertySet {
public:
    ::Ifc4::IfcPermeableCoveringOperationEnum::Value OperationType() const;
    void setOperationType(::Ifc4::IfcPermeableCoveringOperationEnum::Value v);
    ::Ifc4::IfcWindowPanelPositionEnum::Value PanelPosition() const;
    void setPanelPosition(::Ifc4::IfcWindowPanelPositionEnum::Value v);
    bool hasFrameDepth() const;
    double FrameDepth() const;
    void setFrameDepth(double v);
    bool hasFrameThickness() const;
    double FrameThickness() const;
    void setFrameThickness(double v);
    bool hasShapeAspectStyle() const;
    ::Ifc4::IfcShapeAspect* ShapeAspectStyle() const;
    void setShapeAspectStyle(::Ifc4::IfcShapeAspect* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPermeableCoveringProperties (IfcEntityInstanceData* e);
    IfcPermeableCoveringProperties (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4::IfcPermeableCoveringOperationEnum::Value v5_OperationType, ::Ifc4::IfcWindowPanelPositionEnum::Value v6_PanelPosition, boost::optional< double > v7_FrameDepth, boost::optional< double > v8_FrameThickness, ::Ifc4::IfcShapeAspect* v9_ShapeAspectStyle);
    typedef IfcTemplatedEntityList< IfcPermeableCoveringProperties > list;
};
class IFC_PARSE_API IfcPermit : public IfcControl {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcPermitTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcPermitTypeEnum::Value v);
    bool hasStatus() const;
    std::string Status() const;
    void setStatus(std::string v);
    bool hasLongDescription() const;
    std::string LongDescription() const;
    void setLongDescription(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPermit (IfcEntityInstanceData* e);
    IfcPermit (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< ::Ifc4::IfcPermitTypeEnum::Value > v7_PredefinedType, boost::optional< std::string > v8_Status, boost::optional< std::string > v9_LongDescription);
    typedef IfcTemplatedEntityList< IfcPermit > list;
};
class IFC_PARSE_API IfcPileType : public IfcBuildingElementType {
public:
    ::Ifc4::IfcPileTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcPileTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPileType (IfcEntityInstanceData* e);
    IfcPileType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcPileTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcPileType > list;
};
class IFC_PARSE_API IfcPipeFittingType : public IfcFlowFittingType {
public:
    ::Ifc4::IfcPipeFittingTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcPipeFittingTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPipeFittingType (IfcEntityInstanceData* e);
    IfcPipeFittingType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcPipeFittingTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcPipeFittingType > list;
};
class IFC_PARSE_API IfcPipeSegmentType : public IfcFlowSegmentType {
public:
    ::Ifc4::IfcPipeSegmentTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcPipeSegmentTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPipeSegmentType (IfcEntityInstanceData* e);
    IfcPipeSegmentType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcPipeSegmentTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcPipeSegmentType > list;
};
class IFC_PARSE_API IfcPlateType : public IfcBuildingElementType {
public:
    ::Ifc4::IfcPlateTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcPlateTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPlateType (IfcEntityInstanceData* e);
    IfcPlateType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcPlateTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcPlateType > list;
};

class IFC_PARSE_API IfcPolygonalFaceSet : public IfcTessellatedFaceSet {
public:
    bool hasClosed() const;
    bool Closed() const;
    void setClosed(bool v);
    IfcTemplatedEntityList< ::Ifc4::IfcIndexedPolygonalFace >::ptr Faces() const;
    void setFaces(IfcTemplatedEntityList< ::Ifc4::IfcIndexedPolygonalFace >::ptr v);
    bool hasPnIndex() const;
    std::vector< int > /*[1:?]*/ PnIndex() const;
    void setPnIndex(std::vector< int > /*[1:?]*/ v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPolygonalFaceSet (IfcEntityInstanceData* e);
    IfcPolygonalFaceSet (::Ifc4::IfcCartesianPointList3D* v1_Coordinates, boost::optional< bool > v2_Closed, IfcTemplatedEntityList< ::Ifc4::IfcIndexedPolygonalFace >::ptr v3_Faces, boost::optional< std::vector< int > /*[1:?]*/ > v4_PnIndex);
    typedef IfcTemplatedEntityList< IfcPolygonalFaceSet > list;
};
class IFC_PARSE_API IfcPolyline : public IfcBoundedCurve {
public:
    IfcTemplatedEntityList< ::Ifc4::IfcCartesianPoint >::ptr Points() const;
    void setPoints(IfcTemplatedEntityList< ::Ifc4::IfcCartesianPoint >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPolyline (IfcEntityInstanceData* e);
    IfcPolyline (IfcTemplatedEntityList< ::Ifc4::IfcCartesianPoint >::ptr v1_Points);
    typedef IfcTemplatedEntityList< IfcPolyline > list;
};
class IFC_PARSE_API IfcPort : public IfcProduct {
public:
        IfcTemplatedEntityList< IfcRelConnectsPortToElement >::ptr ContainedIn() const; // INVERSE IfcRelConnectsPortToElement::RelatingPort
    IfcTemplatedEntityList< IfcRelConnectsPorts >::ptr ConnectedFrom() const; // INVERSE IfcRelConnectsPorts::RelatedPort
    IfcTemplatedEntityList< IfcRelConnectsPorts >::ptr ConnectedTo() const; // INVERSE IfcRelConnectsPorts::RelatingPort
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPort (IfcEntityInstanceData* e);
    IfcPort (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation);
    typedef IfcTemplatedEntityList< IfcPort > list;
};
class IFC_PARSE_API IfcProcedure : public IfcProcess {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcProcedureTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcProcedureTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcProcedure (IfcEntityInstanceData* e);
    IfcProcedure (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, boost::optional< ::Ifc4::IfcProcedureTypeEnum::Value > v8_PredefinedType);
    typedef IfcTemplatedEntityList< IfcProcedure > list;
};
class IFC_PARSE_API IfcProjectOrder : public IfcControl {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcProjectOrderTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcProjectOrderTypeEnum::Value v);
    bool hasStatus() const;
    std::string Status() const;
    void setStatus(std::string v);
    bool hasLongDescription() const;
    std::string LongDescription() const;
    void setLongDescription(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcProjectOrder (IfcEntityInstanceData* e);
    IfcProjectOrder (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< ::Ifc4::IfcProjectOrderTypeEnum::Value > v7_PredefinedType, boost::optional< std::string > v8_Status, boost::optional< std::string > v9_LongDescription);
    typedef IfcTemplatedEntityList< IfcProjectOrder > list;
};
class IFC_PARSE_API IfcProjectionElement : public IfcFeatureElementAddition {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcProjectionElementTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcProjectionElementTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcProjectionElement (IfcEntityInstanceData* e);
    IfcProjectionElement (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcProjectionElementTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcProjectionElement > list;
};
class IFC_PARSE_API IfcProtectiveDeviceType : public IfcFlowControllerType {
public:
    ::Ifc4::IfcProtectiveDeviceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcProtectiveDeviceTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcProtectiveDeviceType (IfcEntityInstanceData* e);
    IfcProtectiveDeviceType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcProtectiveDeviceTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcProtectiveDeviceType > list;
};
class IFC_PARSE_API IfcPumpType : public IfcFlowMovingDeviceType {
public:
    ::Ifc4::IfcPumpTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcPumpTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPumpType (IfcEntityInstanceData* e);
    IfcPumpType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcPumpTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcPumpType > list;
};
class IFC_PARSE_API IfcRailingType : public IfcBuildingElementType {
public:
    ::Ifc4::IfcRailingTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcRailingTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRailingType (IfcEntityInstanceData* e);
    IfcRailingType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcRailingTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcRailingType > list;
};
class IFC_PARSE_API IfcRampFlightType : public IfcBuildingElementType {
public:
    ::Ifc4::IfcRampFlightTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcRampFlightTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRampFlightType (IfcEntityInstanceData* e);
    IfcRampFlightType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcRampFlightTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcRampFlightType > list;
};
class IFC_PARSE_API IfcRampType : public IfcBuildingElementType {
public:
    ::Ifc4::IfcRampTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcRampTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRampType (IfcEntityInstanceData* e);
    IfcRampType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcRampTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcRampType > list;
};
class IFC_PARSE_API IfcRationalBSplineSurfaceWithKnots : public IfcBSplineSurfaceWithKnots {
public:
    std::vector< std::vector< double > > WeightsData() const;
    void setWeightsData(std::vector< std::vector< double > > v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRationalBSplineSurfaceWithKnots (IfcEntityInstanceData* e);
    IfcRationalBSplineSurfaceWithKnots (int v1_UDegree, int v2_VDegree, IfcTemplatedEntityListList< ::Ifc4::IfcCartesianPoint >::ptr v3_ControlPointsList, ::Ifc4::IfcBSplineSurfaceForm::Value v4_SurfaceForm, bool v5_UClosed, bool v6_VClosed, bool v7_SelfIntersect, std::vector< int > /*[2:?]*/ v8_UMultiplicities, std::vector< int > /*[2:?]*/ v9_VMultiplicities, std::vector< double > /*[2:?]*/ v10_UKnots, std::vector< double > /*[2:?]*/ v11_VKnots, ::Ifc4::IfcKnotType::Value v12_KnotSpec, std::vector< std::vector< double > > v13_WeightsData);
    typedef IfcTemplatedEntityList< IfcRationalBSplineSurfaceWithKnots > list;
};
class IFC_PARSE_API IfcReinforcingElement : public IfcElementComponent {
public:
    bool hasSteelGrade() const;
    std::string SteelGrade() const;
    void setSteelGrade(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcReinforcingElement (IfcEntityInstanceData* e);
    IfcReinforcingElement (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade);
    typedef IfcTemplatedEntityList< IfcReinforcingElement > list;
};
class IFC_PARSE_API IfcReinforcingElementType : public IfcElementComponentType {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcReinforcingElementType (IfcEntityInstanceData* e);
    IfcReinforcingElementType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcReinforcingElementType > list;
};
class IFC_PARSE_API IfcReinforcingMesh : public IfcReinforcingElement {
public:
    bool hasMeshLength() const;
    double MeshLength() const;
    void setMeshLength(double v);
    bool hasMeshWidth() const;
    double MeshWidth() const;
    void setMeshWidth(double v);
    bool hasLongitudinalBarNominalDiameter() const;
    double LongitudinalBarNominalDiameter() const;
    void setLongitudinalBarNominalDiameter(double v);
    bool hasTransverseBarNominalDiameter() const;
    double TransverseBarNominalDiameter() const;
    void setTransverseBarNominalDiameter(double v);
    bool hasLongitudinalBarCrossSectionArea() const;
    double LongitudinalBarCrossSectionArea() const;
    void setLongitudinalBarCrossSectionArea(double v);
    bool hasTransverseBarCrossSectionArea() const;
    double TransverseBarCrossSectionArea() const;
    void setTransverseBarCrossSectionArea(double v);
    bool hasLongitudinalBarSpacing() const;
    double LongitudinalBarSpacing() const;
    void setLongitudinalBarSpacing(double v);
    bool hasTransverseBarSpacing() const;
    double TransverseBarSpacing() const;
    void setTransverseBarSpacing(double v);
    bool hasPredefinedType() const;
    ::Ifc4::IfcReinforcingMeshTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcReinforcingMeshTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcReinforcingMesh (IfcEntityInstanceData* e);
    IfcReinforcingMesh (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade, boost::optional< double > v10_MeshLength, boost::optional< double > v11_MeshWidth, boost::optional< double > v12_LongitudinalBarNominalDiameter, boost::optional< double > v13_TransverseBarNominalDiameter, boost::optional< double > v14_LongitudinalBarCrossSectionArea, boost::optional< double > v15_TransverseBarCrossSectionArea, boost::optional< double > v16_LongitudinalBarSpacing, boost::optional< double > v17_TransverseBarSpacing, boost::optional< ::Ifc4::IfcReinforcingMeshTypeEnum::Value > v18_PredefinedType);
    typedef IfcTemplatedEntityList< IfcReinforcingMesh > list;
};
class IFC_PARSE_API IfcReinforcingMeshType : public IfcReinforcingElementType {
public:
    ::Ifc4::IfcReinforcingMeshTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcReinforcingMeshTypeEnum::Value v);
    bool hasMeshLength() const;
    double MeshLength() const;
    void setMeshLength(double v);
    bool hasMeshWidth() const;
    double MeshWidth() const;
    void setMeshWidth(double v);
    bool hasLongitudinalBarNominalDiameter() const;
    double LongitudinalBarNominalDiameter() const;
    void setLongitudinalBarNominalDiameter(double v);
    bool hasTransverseBarNominalDiameter() const;
    double TransverseBarNominalDiameter() const;
    void setTransverseBarNominalDiameter(double v);
    bool hasLongitudinalBarCrossSectionArea() const;
    double LongitudinalBarCrossSectionArea() const;
    void setLongitudinalBarCrossSectionArea(double v);
    bool hasTransverseBarCrossSectionArea() const;
    double TransverseBarCrossSectionArea() const;
    void setTransverseBarCrossSectionArea(double v);
    bool hasLongitudinalBarSpacing() const;
    double LongitudinalBarSpacing() const;
    void setLongitudinalBarSpacing(double v);
    bool hasTransverseBarSpacing() const;
    double TransverseBarSpacing() const;
    void setTransverseBarSpacing(double v);
    bool hasBendingShapeCode() const;
    std::string BendingShapeCode() const;
    void setBendingShapeCode(std::string v);
    bool hasBendingParameters() const;
    IfcEntityList::ptr BendingParameters() const;
    void setBendingParameters(IfcEntityList::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcReinforcingMeshType (IfcEntityInstanceData* e);
    IfcReinforcingMeshType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcReinforcingMeshTypeEnum::Value v10_PredefinedType, boost::optional< double > v11_MeshLength, boost::optional< double > v12_MeshWidth, boost::optional< double > v13_LongitudinalBarNominalDiameter, boost::optional< double > v14_TransverseBarNominalDiameter, boost::optional< double > v15_LongitudinalBarCrossSectionArea, boost::optional< double > v16_TransverseBarCrossSectionArea, boost::optional< double > v17_LongitudinalBarSpacing, boost::optional< double > v18_TransverseBarSpacing, boost::optional< std::string > v19_BendingShapeCode, boost::optional< IfcEntityList::ptr > v20_BendingParameters);
    typedef IfcTemplatedEntityList< IfcReinforcingMeshType > list;
};
class IFC_PARSE_API IfcRelAggregates : public IfcRelDecomposes {
public:
    ::Ifc4::IfcObjectDefinition* RelatingObject() const;
    void setRelatingObject(::Ifc4::IfcObjectDefinition* v);
    IfcTemplatedEntityList< ::Ifc4::IfcObjectDefinition >::ptr RelatedObjects() const;
    void setRelatedObjects(IfcTemplatedEntityList< ::Ifc4::IfcObjectDefinition >::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRelAggregates (IfcEntityInstanceData* e);
    IfcRelAggregates (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4::IfcObjectDefinition* v5_RelatingObject, IfcTemplatedEntityList< ::Ifc4::IfcObjectDefinition >::ptr v6_RelatedObjects);
    typedef IfcTemplatedEntityList< IfcRelAggregates > list;
};
class IFC_PARSE_API IfcRoofType : public IfcBuildingElementType {
public:
    ::Ifc4::IfcRoofTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcRoofTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRoofType (IfcEntityInstanceData* e);
    IfcRoofType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcRoofTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcRoofType > list;
};
class IFC_PARSE_API IfcSanitaryTerminalType : public IfcFlowTerminalType {
public:
    ::Ifc4::IfcSanitaryTerminalTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcSanitaryTerminalTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSanitaryTerminalType (IfcEntityInstanceData* e);
    IfcSanitaryTerminalType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcSanitaryTerminalTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcSanitaryTerminalType > list;
};

class IFC_PARSE_API IfcSeamCurve : public IfcSurfaceCurve {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSeamCurve (IfcEntityInstanceData* e);
    IfcSeamCurve (::Ifc4::IfcCurve* v1_Curve3D, IfcTemplatedEntityList< ::Ifc4::IfcPcurve >::ptr v2_AssociatedGeometry, ::Ifc4::IfcPreferredSurfaceCurveRepresentation::Value v3_MasterRepresentation);
    typedef IfcTemplatedEntityList< IfcSeamCurve > list;
};
class IFC_PARSE_API IfcShadingDeviceType : public IfcBuildingElementType {
public:
    ::Ifc4::IfcShadingDeviceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcShadingDeviceTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcShadingDeviceType (IfcEntityInstanceData* e);
    IfcShadingDeviceType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcShadingDeviceTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcShadingDeviceType > list;
};
class IFC_PARSE_API IfcSite : public IfcSpatialStructureElement {
public:
    bool hasRefLatitude() const;
    std::vector< int > /*[3:4]*/ RefLatitude() const;
    void setRefLatitude(std::vector< int > /*[3:4]*/ v);
    bool hasRefLongitude() const;
    std::vector< int > /*[3:4]*/ RefLongitude() const;
    void setRefLongitude(std::vector< int > /*[3:4]*/ v);
    bool hasRefElevation() const;
    double RefElevation() const;
    void setRefElevation(double v);
    bool hasLandTitleNumber() const;
    std::string LandTitleNumber() const;
    void setLandTitleNumber(std::string v);
    bool hasSiteAddress() const;
    ::Ifc4::IfcPostalAddress* SiteAddress() const;
    void setSiteAddress(::Ifc4::IfcPostalAddress* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSite (IfcEntityInstanceData* e);
    IfcSite (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4::IfcElementCompositionEnum::Value > v9_CompositionType, boost::optional< std::vector< int > /*[3:4]*/ > v10_RefLatitude, boost::optional< std::vector< int > /*[3:4]*/ > v11_RefLongitude, boost::optional< double > v12_RefElevation, boost::optional< std::string > v13_LandTitleNumber, ::Ifc4::IfcPostalAddress* v14_SiteAddress);
    typedef IfcTemplatedEntityList< IfcSite > list;
};
class IFC_PARSE_API IfcSlabType : public IfcBuildingElementType {
public:
    ::Ifc4::IfcSlabTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcSlabTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSlabType (IfcEntityInstanceData* e);
    IfcSlabType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcSlabTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcSlabType > list;
};
class IFC_PARSE_API IfcSolarDeviceType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc4::IfcSolarDeviceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcSolarDeviceTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSolarDeviceType (IfcEntityInstanceData* e);
    IfcSolarDeviceType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcSolarDeviceTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcSolarDeviceType > list;
};
class IFC_PARSE_API IfcSpace : public IfcSpatialStructureElement {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcSpaceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcSpaceTypeEnum::Value v);
    bool hasElevationWithFlooring() const;
    double ElevationWithFlooring() const;
    void setElevationWithFlooring(double v);
        IfcTemplatedEntityList< IfcRelCoversSpaces >::ptr HasCoverings() const; // INVERSE IfcRelCoversSpaces::RelatingSpace
    IfcTemplatedEntityList< IfcRelSpaceBoundary >::ptr BoundedBy() const; // INVERSE IfcRelSpaceBoundary::RelatingSpace
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSpace (IfcEntityInstanceData* e);
    IfcSpace (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4::IfcElementCompositionEnum::Value > v9_CompositionType, boost::optional< ::Ifc4::IfcSpaceTypeEnum::Value > v10_PredefinedType, boost::optional< double > v11_ElevationWithFlooring);
    typedef IfcTemplatedEntityList< IfcSpace > list;
};
class IFC_PARSE_API IfcSpaceHeaterType : public IfcFlowTerminalType {
public:
    ::Ifc4::IfcSpaceHeaterTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcSpaceHeaterTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSpaceHeaterType (IfcEntityInstanceData* e);
    IfcSpaceHeaterType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcSpaceHeaterTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcSpaceHeaterType > list;
};
class IFC_PARSE_API IfcSpaceType : public IfcSpatialStructureElementType {
public:
    ::Ifc4::IfcSpaceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcSpaceTypeEnum::Value v);
    bool hasLongName() const;
    std::string LongName() const;
    void setLongName(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSpaceType (IfcEntityInstanceData* e);
    IfcSpaceType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcSpaceTypeEnum::Value v10_PredefinedType, boost::optional< std::string > v11_LongName);
    typedef IfcTemplatedEntityList< IfcSpaceType > list;
};
class IFC_PARSE_API IfcStackTerminalType : public IfcFlowTerminalType {
public:
    ::Ifc4::IfcStackTerminalTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcStackTerminalTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStackTerminalType (IfcEntityInstanceData* e);
    IfcStackTerminalType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcStackTerminalTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcStackTerminalType > list;
};
class IFC_PARSE_API IfcStairFlightType : public IfcBuildingElementType {
public:
    ::Ifc4::IfcStairFlightTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcStairFlightTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStairFlightType (IfcEntityInstanceData* e);
    IfcStairFlightType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcStairFlightTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcStairFlightType > list;
};
class IFC_PARSE_API IfcStairType : public IfcBuildingElementType {
public:
    ::Ifc4::IfcStairTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcStairTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStairType (IfcEntityInstanceData* e);
    IfcStairType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcStairTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcStairType > list;
};
class IFC_PARSE_API IfcStructuralAction : public IfcStructuralActivity {
public:
    bool hasDestabilizingLoad() const;
    bool DestabilizingLoad() const;
    void setDestabilizingLoad(bool v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralAction (IfcEntityInstanceData* e);
    IfcStructuralAction (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, ::Ifc4::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, boost::optional< bool > v10_DestabilizingLoad);
    typedef IfcTemplatedEntityList< IfcStructuralAction > list;
};
class IFC_PARSE_API IfcStructuralConnection : public IfcStructuralItem {
public:
    bool hasAppliedCondition() const;
    ::Ifc4::IfcBoundaryCondition* AppliedCondition() const;
    void setAppliedCondition(::Ifc4::IfcBoundaryCondition* v);
        IfcTemplatedEntityList< IfcRelConnectsStructuralMember >::ptr ConnectsStructuralMembers() const; // INVERSE IfcRelConnectsStructuralMember::RelatedStructuralConnection
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralConnection (IfcEntityInstanceData* e);
    IfcStructuralConnection (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, ::Ifc4::IfcBoundaryCondition* v8_AppliedCondition);
    typedef IfcTemplatedEntityList< IfcStructuralConnection > list;
};
class IFC_PARSE_API IfcStructuralCurveAction : public IfcStructuralAction {
public:
    bool hasProjectedOrTrue() const;
    ::Ifc4::IfcProjectedOrTrueLengthEnum::Value ProjectedOrTrue() const;
    void setProjectedOrTrue(::Ifc4::IfcProjectedOrTrueLengthEnum::Value v);
    ::Ifc4::IfcStructuralCurveActivityTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcStructuralCurveActivityTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralCurveAction (IfcEntityInstanceData* e);
    IfcStructuralCurveAction (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, ::Ifc4::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, boost::optional< bool > v10_DestabilizingLoad, boost::optional< ::Ifc4::IfcProjectedOrTrueLengthEnum::Value > v11_ProjectedOrTrue, ::Ifc4::IfcStructuralCurveActivityTypeEnum::Value v12_PredefinedType);
    typedef IfcTemplatedEntityList< IfcStructuralCurveAction > list;
};
class IFC_PARSE_API IfcStructuralCurveConnection : public IfcStructuralConnection {
public:
    ::Ifc4::IfcDirection* Axis() const;
    void setAxis(::Ifc4::IfcDirection* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralCurveConnection (IfcEntityInstanceData* e);
    IfcStructuralCurveConnection (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, ::Ifc4::IfcBoundaryCondition* v8_AppliedCondition, ::Ifc4::IfcDirection* v9_Axis);
    typedef IfcTemplatedEntityList< IfcStructuralCurveConnection > list;
};
class IFC_PARSE_API IfcStructuralCurveMember : public IfcStructuralMember {
public:
    ::Ifc4::IfcStructuralCurveMemberTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcStructuralCurveMemberTypeEnum::Value v);
    ::Ifc4::IfcDirection* Axis() const;
    void setAxis(::Ifc4::IfcDirection* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralCurveMember (IfcEntityInstanceData* e);
    IfcStructuralCurveMember (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, ::Ifc4::IfcStructuralCurveMemberTypeEnum::Value v8_PredefinedType, ::Ifc4::IfcDirection* v9_Axis);
    typedef IfcTemplatedEntityList< IfcStructuralCurveMember > list;
};
class IFC_PARSE_API IfcStructuralCurveMemberVarying : public IfcStructuralCurveMember {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralCurveMemberVarying (IfcEntityInstanceData* e);
    IfcStructuralCurveMemberVarying (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, ::Ifc4::IfcStructuralCurveMemberTypeEnum::Value v8_PredefinedType, ::Ifc4::IfcDirection* v9_Axis);
    typedef IfcTemplatedEntityList< IfcStructuralCurveMemberVarying > list;
};
class IFC_PARSE_API IfcStructuralCurveReaction : public IfcStructuralReaction {
public:
    ::Ifc4::IfcStructuralCurveActivityTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcStructuralCurveActivityTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralCurveReaction (IfcEntityInstanceData* e);
    IfcStructuralCurveReaction (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, ::Ifc4::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, ::Ifc4::IfcStructuralCurveActivityTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcStructuralCurveReaction > list;
};
class IFC_PARSE_API IfcStructuralLinearAction : public IfcStructuralCurveAction {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralLinearAction (IfcEntityInstanceData* e);
    IfcStructuralLinearAction (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, ::Ifc4::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, boost::optional< bool > v10_DestabilizingLoad, boost::optional< ::Ifc4::IfcProjectedOrTrueLengthEnum::Value > v11_ProjectedOrTrue, ::Ifc4::IfcStructuralCurveActivityTypeEnum::Value v12_PredefinedType);
    typedef IfcTemplatedEntityList< IfcStructuralLinearAction > list;
};
class IFC_PARSE_API IfcStructuralLoadGroup : public IfcGroup {
public:
    ::Ifc4::IfcLoadGroupTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcLoadGroupTypeEnum::Value v);
    ::Ifc4::IfcActionTypeEnum::Value ActionType() const;
    void setActionType(::Ifc4::IfcActionTypeEnum::Value v);
    ::Ifc4::IfcActionSourceTypeEnum::Value ActionSource() const;
    void setActionSource(::Ifc4::IfcActionSourceTypeEnum::Value v);
    bool hasCoefficient() const;
    double Coefficient() const;
    void setCoefficient(double v);
    bool hasPurpose() const;
    std::string Purpose() const;
    void setPurpose(std::string v);
        IfcTemplatedEntityList< IfcStructuralResultGroup >::ptr SourceOfResultGroup() const; // INVERSE IfcStructuralResultGroup::ResultForLoadGroup
    IfcTemplatedEntityList< IfcStructuralAnalysisModel >::ptr LoadGroupFor() const; // INVERSE IfcStructuralAnalysisModel::LoadedBy
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralLoadGroup (IfcEntityInstanceData* e);
    IfcStructuralLoadGroup (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcLoadGroupTypeEnum::Value v6_PredefinedType, ::Ifc4::IfcActionTypeEnum::Value v7_ActionType, ::Ifc4::IfcActionSourceTypeEnum::Value v8_ActionSource, boost::optional< double > v9_Coefficient, boost::optional< std::string > v10_Purpose);
    typedef IfcTemplatedEntityList< IfcStructuralLoadGroup > list;
};
class IFC_PARSE_API IfcStructuralPointAction : public IfcStructuralAction {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralPointAction (IfcEntityInstanceData* e);
    IfcStructuralPointAction (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, ::Ifc4::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, boost::optional< bool > v10_DestabilizingLoad);
    typedef IfcTemplatedEntityList< IfcStructuralPointAction > list;
};
class IFC_PARSE_API IfcStructuralPointConnection : public IfcStructuralConnection {
public:
    bool hasConditionCoordinateSystem() const;
    ::Ifc4::IfcAxis2Placement3D* ConditionCoordinateSystem() const;
    void setConditionCoordinateSystem(::Ifc4::IfcAxis2Placement3D* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralPointConnection (IfcEntityInstanceData* e);
    IfcStructuralPointConnection (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, ::Ifc4::IfcBoundaryCondition* v8_AppliedCondition, ::Ifc4::IfcAxis2Placement3D* v9_ConditionCoordinateSystem);
    typedef IfcTemplatedEntityList< IfcStructuralPointConnection > list;
};
class IFC_PARSE_API IfcStructuralPointReaction : public IfcStructuralReaction {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralPointReaction (IfcEntityInstanceData* e);
    IfcStructuralPointReaction (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, ::Ifc4::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal);
    typedef IfcTemplatedEntityList< IfcStructuralPointReaction > list;
};
class IFC_PARSE_API IfcStructuralResultGroup : public IfcGroup {
public:
    ::Ifc4::IfcAnalysisTheoryTypeEnum::Value TheoryType() const;
    void setTheoryType(::Ifc4::IfcAnalysisTheoryTypeEnum::Value v);
    bool hasResultForLoadGroup() const;
    ::Ifc4::IfcStructuralLoadGroup* ResultForLoadGroup() const;
    void setResultForLoadGroup(::Ifc4::IfcStructuralLoadGroup* v);
    bool IsLinear() const;
    void setIsLinear(bool v);
        IfcTemplatedEntityList< IfcStructuralAnalysisModel >::ptr ResultGroupFor() const; // INVERSE IfcStructuralAnalysisModel::HasResults
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralResultGroup (IfcEntityInstanceData* e);
    IfcStructuralResultGroup (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcAnalysisTheoryTypeEnum::Value v6_TheoryType, ::Ifc4::IfcStructuralLoadGroup* v7_ResultForLoadGroup, bool v8_IsLinear);
    typedef IfcTemplatedEntityList< IfcStructuralResultGroup > list;
};
class IFC_PARSE_API IfcStructuralSurfaceAction : public IfcStructuralAction {
public:
    bool hasProjectedOrTrue() const;
    ::Ifc4::IfcProjectedOrTrueLengthEnum::Value ProjectedOrTrue() const;
    void setProjectedOrTrue(::Ifc4::IfcProjectedOrTrueLengthEnum::Value v);
    ::Ifc4::IfcStructuralSurfaceActivityTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcStructuralSurfaceActivityTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralSurfaceAction (IfcEntityInstanceData* e);
    IfcStructuralSurfaceAction (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, ::Ifc4::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, boost::optional< bool > v10_DestabilizingLoad, boost::optional< ::Ifc4::IfcProjectedOrTrueLengthEnum::Value > v11_ProjectedOrTrue, ::Ifc4::IfcStructuralSurfaceActivityTypeEnum::Value v12_PredefinedType);
    typedef IfcTemplatedEntityList< IfcStructuralSurfaceAction > list;
};
class IFC_PARSE_API IfcStructuralSurfaceConnection : public IfcStructuralConnection {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralSurfaceConnection (IfcEntityInstanceData* e);
    IfcStructuralSurfaceConnection (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, ::Ifc4::IfcBoundaryCondition* v8_AppliedCondition);
    typedef IfcTemplatedEntityList< IfcStructuralSurfaceConnection > list;
};
class IFC_PARSE_API IfcSubContractResource : public IfcConstructionResource {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcSubContractResourceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcSubContractResourceTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSubContractResource (IfcEntityInstanceData* e);
    IfcSubContractResource (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, ::Ifc4::IfcResourceTime* v8_Usage, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcAppliedValue >::ptr > v9_BaseCosts, ::Ifc4::IfcPhysicalQuantity* v10_BaseQuantity, boost::optional< ::Ifc4::IfcSubContractResourceTypeEnum::Value > v11_PredefinedType);
    typedef IfcTemplatedEntityList< IfcSubContractResource > list;
};
class IFC_PARSE_API IfcSurfaceFeature : public IfcFeatureElement {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcSurfaceFeatureTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcSurfaceFeatureTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSurfaceFeature (IfcEntityInstanceData* e);
    IfcSurfaceFeature (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcSurfaceFeatureTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcSurfaceFeature > list;
};
class IFC_PARSE_API IfcSwitchingDeviceType : public IfcFlowControllerType {
public:
    ::Ifc4::IfcSwitchingDeviceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcSwitchingDeviceTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSwitchingDeviceType (IfcEntityInstanceData* e);
    IfcSwitchingDeviceType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcSwitchingDeviceTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcSwitchingDeviceType > list;
};
class IFC_PARSE_API IfcSystem : public IfcGroup {
public:
        IfcTemplatedEntityList< IfcRelServicesBuildings >::ptr ServicesBuildings() const; // INVERSE IfcRelServicesBuildings::RelatingSystem
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSystem (IfcEntityInstanceData* e);
    IfcSystem (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType);
    typedef IfcTemplatedEntityList< IfcSystem > list;
};
class IFC_PARSE_API IfcSystemFurnitureElement : public IfcFurnishingElement {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcSystemFurnitureElementTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcSystemFurnitureElementTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSystemFurnitureElement (IfcEntityInstanceData* e);
    IfcSystemFurnitureElement (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcSystemFurnitureElementTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcSystemFurnitureElement > list;
};
class IFC_PARSE_API IfcTankType : public IfcFlowStorageDeviceType {
public:
    ::Ifc4::IfcTankTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcTankTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTankType (IfcEntityInstanceData* e);
    IfcTankType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcTankTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcTankType > list;
};

class IFC_PARSE_API IfcTendon : public IfcReinforcingElement {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcTendonTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcTendonTypeEnum::Value v);
    bool hasNominalDiameter() const;
    double NominalDiameter() const;
    void setNominalDiameter(double v);
    bool hasCrossSectionArea() const;
    double CrossSectionArea() const;
    void setCrossSectionArea(double v);
    bool hasTensionForce() const;
    double TensionForce() const;
    void setTensionForce(double v);
    bool hasPreStress() const;
    double PreStress() const;
    void setPreStress(double v);
    bool hasFrictionCoefficient() const;
    double FrictionCoefficient() const;
    void setFrictionCoefficient(double v);
    bool hasAnchorageSlip() const;
    double AnchorageSlip() const;
    void setAnchorageSlip(double v);
    bool hasMinCurvatureRadius() const;
    double MinCurvatureRadius() const;
    void setMinCurvatureRadius(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTendon (IfcEntityInstanceData* e);
    IfcTendon (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade, boost::optional< ::Ifc4::IfcTendonTypeEnum::Value > v10_PredefinedType, boost::optional< double > v11_NominalDiameter, boost::optional< double > v12_CrossSectionArea, boost::optional< double > v13_TensionForce, boost::optional< double > v14_PreStress, boost::optional< double > v15_FrictionCoefficient, boost::optional< double > v16_AnchorageSlip, boost::optional< double > v17_MinCurvatureRadius);
    typedef IfcTemplatedEntityList< IfcTendon > list;
};

class IFC_PARSE_API IfcTendonAnchor : public IfcReinforcingElement {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcTendonAnchorTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcTendonAnchorTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTendonAnchor (IfcEntityInstanceData* e);
    IfcTendonAnchor (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade, boost::optional< ::Ifc4::IfcTendonAnchorTypeEnum::Value > v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcTendonAnchor > list;
};

class IFC_PARSE_API IfcTendonAnchorType : public IfcReinforcingElementType {
public:
    ::Ifc4::IfcTendonAnchorTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcTendonAnchorTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTendonAnchorType (IfcEntityInstanceData* e);
    IfcTendonAnchorType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcTendonAnchorTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcTendonAnchorType > list;
};

class IFC_PARSE_API IfcTendonType : public IfcReinforcingElementType {
public:
    ::Ifc4::IfcTendonTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcTendonTypeEnum::Value v);
    bool hasNominalDiameter() const;
    double NominalDiameter() const;
    void setNominalDiameter(double v);
    bool hasCrossSectionArea() const;
    double CrossSectionArea() const;
    void setCrossSectionArea(double v);
    bool hasSheathDiameter() const;
    double SheathDiameter() const;
    void setSheathDiameter(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTendonType (IfcEntityInstanceData* e);
    IfcTendonType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcTendonTypeEnum::Value v10_PredefinedType, boost::optional< double > v11_NominalDiameter, boost::optional< double > v12_CrossSectionArea, boost::optional< double > v13_SheathDiameter);
    typedef IfcTemplatedEntityList< IfcTendonType > list;
};
class IFC_PARSE_API IfcTransformerType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc4::IfcTransformerTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcTransformerTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTransformerType (IfcEntityInstanceData* e);
    IfcTransformerType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcTransformerTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcTransformerType > list;
};
class IFC_PARSE_API IfcTransportElement : public IfcElement {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcTransportElementTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcTransportElementTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTransportElement (IfcEntityInstanceData* e);
    IfcTransportElement (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcTransportElementTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcTransportElement > list;
};
class IFC_PARSE_API IfcTrimmedCurve : public IfcBoundedCurve {
public:
    ::Ifc4::IfcCurve* BasisCurve() const;
    void setBasisCurve(::Ifc4::IfcCurve* v);
    IfcEntityList::ptr Trim1() const;
    void setTrim1(IfcEntityList::ptr v);
    IfcEntityList::ptr Trim2() const;
    void setTrim2(IfcEntityList::ptr v);
    bool SenseAgreement() const;
    void setSenseAgreement(bool v);
    ::Ifc4::IfcTrimmingPreference::Value MasterRepresentation() const;
    void setMasterRepresentation(::Ifc4::IfcTrimmingPreference::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTrimmedCurve (IfcEntityInstanceData* e);
    IfcTrimmedCurve (::Ifc4::IfcCurve* v1_BasisCurve, IfcEntityList::ptr v2_Trim1, IfcEntityList::ptr v3_Trim2, bool v4_SenseAgreement, ::Ifc4::IfcTrimmingPreference::Value v5_MasterRepresentation);
    typedef IfcTemplatedEntityList< IfcTrimmedCurve > list;
};
class IFC_PARSE_API IfcTubeBundleType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc4::IfcTubeBundleTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcTubeBundleTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTubeBundleType (IfcEntityInstanceData* e);
    IfcTubeBundleType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcTubeBundleTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcTubeBundleType > list;
};
class IFC_PARSE_API IfcUnitaryEquipmentType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc4::IfcUnitaryEquipmentTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcUnitaryEquipmentTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcUnitaryEquipmentType (IfcEntityInstanceData* e);
    IfcUnitaryEquipmentType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcUnitaryEquipmentTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcUnitaryEquipmentType > list;
};
class IFC_PARSE_API IfcValveType : public IfcFlowControllerType {
public:
    ::Ifc4::IfcValveTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcValveTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcValveType (IfcEntityInstanceData* e);
    IfcValveType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcValveTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcValveType > list;
};
class IFC_PARSE_API IfcVibrationIsolator : public IfcElementComponent {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcVibrationIsolatorTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcVibrationIsolatorTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcVibrationIsolator (IfcEntityInstanceData* e);
    IfcVibrationIsolator (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcVibrationIsolatorTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcVibrationIsolator > list;
};
class IFC_PARSE_API IfcVibrationIsolatorType : public IfcElementComponentType {
public:
    ::Ifc4::IfcVibrationIsolatorTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcVibrationIsolatorTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcVibrationIsolatorType (IfcEntityInstanceData* e);
    IfcVibrationIsolatorType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcVibrationIsolatorTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcVibrationIsolatorType > list;
};
class IFC_PARSE_API IfcVirtualElement : public IfcElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcVirtualElement (IfcEntityInstanceData* e);
    IfcVirtualElement (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcVirtualElement > list;
};
class IFC_PARSE_API IfcVoidingFeature : public IfcFeatureElementSubtraction {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcVoidingFeatureTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcVoidingFeatureTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcVoidingFeature (IfcEntityInstanceData* e);
    IfcVoidingFeature (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcVoidingFeatureTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcVoidingFeature > list;
};
class IFC_PARSE_API IfcWallType : public IfcBuildingElementType {
public:
    ::Ifc4::IfcWallTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcWallTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcWallType (IfcEntityInstanceData* e);
    IfcWallType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcWallTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcWallType > list;
};
class IFC_PARSE_API IfcWasteTerminalType : public IfcFlowTerminalType {
public:
    ::Ifc4::IfcWasteTerminalTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcWasteTerminalTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcWasteTerminalType (IfcEntityInstanceData* e);
    IfcWasteTerminalType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcWasteTerminalTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcWasteTerminalType > list;
};
class IFC_PARSE_API IfcWindowType : public IfcBuildingElementType {
public:
    ::Ifc4::IfcWindowTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcWindowTypeEnum::Value v);
    ::Ifc4::IfcWindowTypePartitioningEnum::Value PartitioningType() const;
    void setPartitioningType(::Ifc4::IfcWindowTypePartitioningEnum::Value v);
    bool hasParameterTakesPrecedence() const;
    bool ParameterTakesPrecedence() const;
    void setParameterTakesPrecedence(bool v);
    bool hasUserDefinedPartitioningType() const;
    std::string UserDefinedPartitioningType() const;
    void setUserDefinedPartitioningType(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcWindowType (IfcEntityInstanceData* e);
    IfcWindowType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcWindowTypeEnum::Value v10_PredefinedType, ::Ifc4::IfcWindowTypePartitioningEnum::Value v11_PartitioningType, boost::optional< bool > v12_ParameterTakesPrecedence, boost::optional< std::string > v13_UserDefinedPartitioningType);
    typedef IfcTemplatedEntityList< IfcWindowType > list;
};
class IFC_PARSE_API IfcWorkCalendar : public IfcControl {
public:
    bool hasWorkingTimes() const;
    IfcTemplatedEntityList< ::Ifc4::IfcWorkTime >::ptr WorkingTimes() const;
    void setWorkingTimes(IfcTemplatedEntityList< ::Ifc4::IfcWorkTime >::ptr v);
    bool hasExceptionTimes() const;
    IfcTemplatedEntityList< ::Ifc4::IfcWorkTime >::ptr ExceptionTimes() const;
    void setExceptionTimes(IfcTemplatedEntityList< ::Ifc4::IfcWorkTime >::ptr v);
    bool hasPredefinedType() const;
    ::Ifc4::IfcWorkCalendarTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcWorkCalendarTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcWorkCalendar (IfcEntityInstanceData* e);
    IfcWorkCalendar (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcWorkTime >::ptr > v7_WorkingTimes, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcWorkTime >::ptr > v8_ExceptionTimes, boost::optional< ::Ifc4::IfcWorkCalendarTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcWorkCalendar > list;
};
class IFC_PARSE_API IfcWorkControl : public IfcControl {
public:
    std::string CreationDate() const;
    void setCreationDate(std::string v);
    bool hasCreators() const;
    IfcTemplatedEntityList< ::Ifc4::IfcPerson >::ptr Creators() const;
    void setCreators(IfcTemplatedEntityList< ::Ifc4::IfcPerson >::ptr v);
    bool hasPurpose() const;
    std::string Purpose() const;
    void setPurpose(std::string v);
    bool hasDuration() const;
    std::string Duration() const;
    void setDuration(std::string v);
    bool hasTotalFloat() const;
    std::string TotalFloat() const;
    void setTotalFloat(std::string v);
    std::string StartTime() const;
    void setStartTime(std::string v);
    bool hasFinishTime() const;
    std::string FinishTime() const;
    void setFinishTime(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcWorkControl (IfcEntityInstanceData* e);
    IfcWorkControl (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, std::string v7_CreationDate, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPerson >::ptr > v8_Creators, boost::optional< std::string > v9_Purpose, boost::optional< std::string > v10_Duration, boost::optional< std::string > v11_TotalFloat, std::string v12_StartTime, boost::optional< std::string > v13_FinishTime);
    typedef IfcTemplatedEntityList< IfcWorkControl > list;
};
class IFC_PARSE_API IfcWorkPlan : public IfcWorkControl {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcWorkPlanTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcWorkPlanTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcWorkPlan (IfcEntityInstanceData* e);
    IfcWorkPlan (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, std::string v7_CreationDate, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPerson >::ptr > v8_Creators, boost::optional< std::string > v9_Purpose, boost::optional< std::string > v10_Duration, boost::optional< std::string > v11_TotalFloat, std::string v12_StartTime, boost::optional< std::string > v13_FinishTime, boost::optional< ::Ifc4::IfcWorkPlanTypeEnum::Value > v14_PredefinedType);
    typedef IfcTemplatedEntityList< IfcWorkPlan > list;
};
class IFC_PARSE_API IfcWorkSchedule : public IfcWorkControl {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcWorkScheduleTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcWorkScheduleTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcWorkSchedule (IfcEntityInstanceData* e);
    IfcWorkSchedule (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, std::string v7_CreationDate, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPerson >::ptr > v8_Creators, boost::optional< std::string > v9_Purpose, boost::optional< std::string > v10_Duration, boost::optional< std::string > v11_TotalFloat, std::string v12_StartTime, boost::optional< std::string > v13_FinishTime, boost::optional< ::Ifc4::IfcWorkScheduleTypeEnum::Value > v14_PredefinedType);
    typedef IfcTemplatedEntityList< IfcWorkSchedule > list;
};
class IFC_PARSE_API IfcZone : public IfcSystem {
public:
    bool hasLongName() const;
    std::string LongName() const;
    void setLongName(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcZone (IfcEntityInstanceData* e);
    IfcZone (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_LongName);
    typedef IfcTemplatedEntityList< IfcZone > list;
};
class IFC_PARSE_API IfcActionRequest : public IfcControl {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcActionRequestTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcActionRequestTypeEnum::Value v);
    bool hasStatus() const;
    std::string Status() const;
    void setStatus(std::string v);
    bool hasLongDescription() const;
    std::string LongDescription() const;
    void setLongDescription(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcActionRequest (IfcEntityInstanceData* e);
    IfcActionRequest (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< ::Ifc4::IfcActionRequestTypeEnum::Value > v7_PredefinedType, boost::optional< std::string > v8_Status, boost::optional< std::string > v9_LongDescription);
    typedef IfcTemplatedEntityList< IfcActionRequest > list;
};
class IFC_PARSE_API IfcAirTerminalBoxType : public IfcFlowControllerType {
public:
    ::Ifc4::IfcAirTerminalBoxTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcAirTerminalBoxTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAirTerminalBoxType (IfcEntityInstanceData* e);
    IfcAirTerminalBoxType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcAirTerminalBoxTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcAirTerminalBoxType > list;
};
class IFC_PARSE_API IfcAirTerminalType : public IfcFlowTerminalType {
public:
    ::Ifc4::IfcAirTerminalTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcAirTerminalTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAirTerminalType (IfcEntityInstanceData* e);
    IfcAirTerminalType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcAirTerminalTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcAirTerminalType > list;
};
class IFC_PARSE_API IfcAirToAirHeatRecoveryType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc4::IfcAirToAirHeatRecoveryTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcAirToAirHeatRecoveryTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAirToAirHeatRecoveryType (IfcEntityInstanceData* e);
    IfcAirToAirHeatRecoveryType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcAirToAirHeatRecoveryTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcAirToAirHeatRecoveryType > list;
};
class IFC_PARSE_API IfcAsset : public IfcGroup {
public:
    bool hasIdentification() const;
    std::string Identification() const;
    void setIdentification(std::string v);
    bool hasOriginalValue() const;
    ::Ifc4::IfcCostValue* OriginalValue() const;
    void setOriginalValue(::Ifc4::IfcCostValue* v);
    bool hasCurrentValue() const;
    ::Ifc4::IfcCostValue* CurrentValue() const;
    void setCurrentValue(::Ifc4::IfcCostValue* v);
    bool hasTotalReplacementCost() const;
    ::Ifc4::IfcCostValue* TotalReplacementCost() const;
    void setTotalReplacementCost(::Ifc4::IfcCostValue* v);
    bool hasOwner() const;
    ::Ifc4::IfcActorSelect* Owner() const;
    void setOwner(::Ifc4::IfcActorSelect* v);
    bool hasUser() const;
    ::Ifc4::IfcActorSelect* User() const;
    void setUser(::Ifc4::IfcActorSelect* v);
    bool hasResponsiblePerson() const;
    ::Ifc4::IfcPerson* ResponsiblePerson() const;
    void setResponsiblePerson(::Ifc4::IfcPerson* v);
    bool hasIncorporationDate() const;
    std::string IncorporationDate() const;
    void setIncorporationDate(std::string v);
    bool hasDepreciatedValue() const;
    ::Ifc4::IfcCostValue* DepreciatedValue() const;
    void setDepreciatedValue(::Ifc4::IfcCostValue* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAsset (IfcEntityInstanceData* e);
    IfcAsset (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, ::Ifc4::IfcCostValue* v7_OriginalValue, ::Ifc4::IfcCostValue* v8_CurrentValue, ::Ifc4::IfcCostValue* v9_TotalReplacementCost, ::Ifc4::IfcActorSelect* v10_Owner, ::Ifc4::IfcActorSelect* v11_User, ::Ifc4::IfcPerson* v12_ResponsiblePerson, boost::optional< std::string > v13_IncorporationDate, ::Ifc4::IfcCostValue* v14_DepreciatedValue);
    typedef IfcTemplatedEntityList< IfcAsset > list;
};
class IFC_PARSE_API IfcAudioVisualApplianceType : public IfcFlowTerminalType {
public:
    ::Ifc4::IfcAudioVisualApplianceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcAudioVisualApplianceTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAudioVisualApplianceType (IfcEntityInstanceData* e);
    IfcAudioVisualApplianceType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcAudioVisualApplianceTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcAudioVisualApplianceType > list;
};
class IFC_PARSE_API IfcBSplineCurve : public IfcBoundedCurve {
public:
    int Degree() const;
    void setDegree(int v);
    IfcTemplatedEntityList< ::Ifc4::IfcCartesianPoint >::ptr ControlPointsList() const;
    void setControlPointsList(IfcTemplatedEntityList< ::Ifc4::IfcCartesianPoint >::ptr v);
    ::Ifc4::IfcBSplineCurveForm::Value CurveForm() const;
    void setCurveForm(::Ifc4::IfcBSplineCurveForm::Value v);
    bool ClosedCurve() const;
    void setClosedCurve(bool v);
    bool SelfIntersect() const;
    void setSelfIntersect(bool v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBSplineCurve (IfcEntityInstanceData* e);
    IfcBSplineCurve (int v1_Degree, IfcTemplatedEntityList< ::Ifc4::IfcCartesianPoint >::ptr v2_ControlPointsList, ::Ifc4::IfcBSplineCurveForm::Value v3_CurveForm, bool v4_ClosedCurve, bool v5_SelfIntersect);
    typedef IfcTemplatedEntityList< IfcBSplineCurve > list;
};
class IFC_PARSE_API IfcBSplineCurveWithKnots : public IfcBSplineCurve {
public:
    std::vector< int > /*[2:?]*/ KnotMultiplicities() const;
    void setKnotMultiplicities(std::vector< int > /*[2:?]*/ v);
    std::vector< double > /*[2:?]*/ Knots() const;
    void setKnots(std::vector< double > /*[2:?]*/ v);
    ::Ifc4::IfcKnotType::Value KnotSpec() const;
    void setKnotSpec(::Ifc4::IfcKnotType::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBSplineCurveWithKnots (IfcEntityInstanceData* e);
    IfcBSplineCurveWithKnots (int v1_Degree, IfcTemplatedEntityList< ::Ifc4::IfcCartesianPoint >::ptr v2_ControlPointsList, ::Ifc4::IfcBSplineCurveForm::Value v3_CurveForm, bool v4_ClosedCurve, bool v5_SelfIntersect, std::vector< int > /*[2:?]*/ v6_KnotMultiplicities, std::vector< double > /*[2:?]*/ v7_Knots, ::Ifc4::IfcKnotType::Value v8_KnotSpec);
    typedef IfcTemplatedEntityList< IfcBSplineCurveWithKnots > list;
};
class IFC_PARSE_API IfcBeamType : public IfcBuildingElementType {
public:
    ::Ifc4::IfcBeamTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcBeamTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBeamType (IfcEntityInstanceData* e);
    IfcBeamType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcBeamTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcBeamType > list;
};
class IFC_PARSE_API IfcBoilerType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc4::IfcBoilerTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcBoilerTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBoilerType (IfcEntityInstanceData* e);
    IfcBoilerType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcBoilerTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcBoilerType > list;
};
class IFC_PARSE_API IfcBoundaryCurve : public IfcCompositeCurveOnSurface {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBoundaryCurve (IfcEntityInstanceData* e);
    IfcBoundaryCurve (IfcTemplatedEntityList< ::Ifc4::IfcCompositeCurveSegment >::ptr v1_Segments, bool v2_SelfIntersect);
    typedef IfcTemplatedEntityList< IfcBoundaryCurve > list;
};
class IFC_PARSE_API IfcBuildingElement : public IfcElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBuildingElement (IfcEntityInstanceData* e);
    IfcBuildingElement (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcBuildingElement > list;
};
class IFC_PARSE_API IfcBuildingElementPart : public IfcElementComponent {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcBuildingElementPartTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcBuildingElementPartTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBuildingElementPart (IfcEntityInstanceData* e);
    IfcBuildingElementPart (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcBuildingElementPartTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcBuildingElementPart > list;
};
class IFC_PARSE_API IfcBuildingElementPartType : public IfcElementComponentType {
public:
    ::Ifc4::IfcBuildingElementPartTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcBuildingElementPartTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBuildingElementPartType (IfcEntityInstanceData* e);
    IfcBuildingElementPartType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcBuildingElementPartTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcBuildingElementPartType > list;
};
class IFC_PARSE_API IfcBuildingElementProxy : public IfcBuildingElement {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcBuildingElementProxyTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcBuildingElementProxyTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBuildingElementProxy (IfcEntityInstanceData* e);
    IfcBuildingElementProxy (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcBuildingElementProxyTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcBuildingElementProxy > list;
};
class IFC_PARSE_API IfcBuildingElementProxyType : public IfcBuildingElementType {
public:
    ::Ifc4::IfcBuildingElementProxyTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcBuildingElementProxyTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBuildingElementProxyType (IfcEntityInstanceData* e);
    IfcBuildingElementProxyType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcBuildingElementProxyTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcBuildingElementProxyType > list;
};
class IFC_PARSE_API IfcBuildingSystem : public IfcSystem {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcBuildingSystemTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcBuildingSystemTypeEnum::Value v);
    bool hasLongName() const;
    std::string LongName() const;
    void setLongName(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBuildingSystem (IfcEntityInstanceData* e);
    IfcBuildingSystem (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< ::Ifc4::IfcBuildingSystemTypeEnum::Value > v6_PredefinedType, boost::optional< std::string > v7_LongName);
    typedef IfcTemplatedEntityList< IfcBuildingSystem > list;
};
class IFC_PARSE_API IfcBurnerType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc4::IfcBurnerTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcBurnerTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBurnerType (IfcEntityInstanceData* e);
    IfcBurnerType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcBurnerTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcBurnerType > list;
};
class IFC_PARSE_API IfcCableCarrierFittingType : public IfcFlowFittingType {
public:
    ::Ifc4::IfcCableCarrierFittingTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcCableCarrierFittingTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCableCarrierFittingType (IfcEntityInstanceData* e);
    IfcCableCarrierFittingType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcCableCarrierFittingTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCableCarrierFittingType > list;
};
class IFC_PARSE_API IfcCableCarrierSegmentType : public IfcFlowSegmentType {
public:
    ::Ifc4::IfcCableCarrierSegmentTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcCableCarrierSegmentTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCableCarrierSegmentType (IfcEntityInstanceData* e);
    IfcCableCarrierSegmentType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcCableCarrierSegmentTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCableCarrierSegmentType > list;
};
class IFC_PARSE_API IfcCableFittingType : public IfcFlowFittingType {
public:
    ::Ifc4::IfcCableFittingTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcCableFittingTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCableFittingType (IfcEntityInstanceData* e);
    IfcCableFittingType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcCableFittingTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCableFittingType > list;
};
class IFC_PARSE_API IfcCableSegmentType : public IfcFlowSegmentType {
public:
    ::Ifc4::IfcCableSegmentTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcCableSegmentTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCableSegmentType (IfcEntityInstanceData* e);
    IfcCableSegmentType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcCableSegmentTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCableSegmentType > list;
};
class IFC_PARSE_API IfcChillerType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc4::IfcChillerTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcChillerTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcChillerType (IfcEntityInstanceData* e);
    IfcChillerType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcChillerTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcChillerType > list;
};
class IFC_PARSE_API IfcChimney : public IfcBuildingElement {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcChimneyTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcChimneyTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcChimney (IfcEntityInstanceData* e);
    IfcChimney (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcChimneyTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcChimney > list;
};
class IFC_PARSE_API IfcCircle : public IfcConic {
public:
    double Radius() const;
    void setRadius(double v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCircle (IfcEntityInstanceData* e);
    IfcCircle (::Ifc4::IfcAxis2Placement* v1_Position, double v2_Radius);
    typedef IfcTemplatedEntityList< IfcCircle > list;
};

class IFC_PARSE_API IfcCivilElement : public IfcElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCivilElement (IfcEntityInstanceData* e);
    IfcCivilElement (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcCivilElement > list;
};
class IFC_PARSE_API IfcCoilType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc4::IfcCoilTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcCoilTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCoilType (IfcEntityInstanceData* e);
    IfcCoilType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcCoilTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCoilType > list;
};
class IFC_PARSE_API IfcColumn : public IfcBuildingElement {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcColumnTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcColumnTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcColumn (IfcEntityInstanceData* e);
    IfcColumn (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcColumnTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcColumn > list;
};
class IFC_PARSE_API IfcColumnStandardCase : public IfcColumn {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcColumnStandardCase (IfcEntityInstanceData* e);
    IfcColumnStandardCase (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcColumnTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcColumnStandardCase > list;
};
class IFC_PARSE_API IfcCommunicationsApplianceType : public IfcFlowTerminalType {
public:
    ::Ifc4::IfcCommunicationsApplianceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcCommunicationsApplianceTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCommunicationsApplianceType (IfcEntityInstanceData* e);
    IfcCommunicationsApplianceType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcCommunicationsApplianceTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCommunicationsApplianceType > list;
};
class IFC_PARSE_API IfcCompressorType : public IfcFlowMovingDeviceType {
public:
    ::Ifc4::IfcCompressorTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcCompressorTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCompressorType (IfcEntityInstanceData* e);
    IfcCompressorType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcCompressorTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCompressorType > list;
};
class IFC_PARSE_API IfcCondenserType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc4::IfcCondenserTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcCondenserTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCondenserType (IfcEntityInstanceData* e);
    IfcCondenserType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcCondenserTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCondenserType > list;
};
class IFC_PARSE_API IfcConstructionEquipmentResource : public IfcConstructionResource {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcConstructionEquipmentResourceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcConstructionEquipmentResourceTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcConstructionEquipmentResource (IfcEntityInstanceData* e);
    IfcConstructionEquipmentResource (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, ::Ifc4::IfcResourceTime* v8_Usage, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcAppliedValue >::ptr > v9_BaseCosts, ::Ifc4::IfcPhysicalQuantity* v10_BaseQuantity, boost::optional< ::Ifc4::IfcConstructionEquipmentResourceTypeEnum::Value > v11_PredefinedType);
    typedef IfcTemplatedEntityList< IfcConstructionEquipmentResource > list;
};
class IFC_PARSE_API IfcConstructionMaterialResource : public IfcConstructionResource {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcConstructionMaterialResourceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcConstructionMaterialResourceTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcConstructionMaterialResource (IfcEntityInstanceData* e);
    IfcConstructionMaterialResource (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, ::Ifc4::IfcResourceTime* v8_Usage, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcAppliedValue >::ptr > v9_BaseCosts, ::Ifc4::IfcPhysicalQuantity* v10_BaseQuantity, boost::optional< ::Ifc4::IfcConstructionMaterialResourceTypeEnum::Value > v11_PredefinedType);
    typedef IfcTemplatedEntityList< IfcConstructionMaterialResource > list;
};
class IFC_PARSE_API IfcConstructionProductResource : public IfcConstructionResource {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcConstructionProductResourceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcConstructionProductResourceTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcConstructionProductResource (IfcEntityInstanceData* e);
    IfcConstructionProductResource (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, ::Ifc4::IfcResourceTime* v8_Usage, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcAppliedValue >::ptr > v9_BaseCosts, ::Ifc4::IfcPhysicalQuantity* v10_BaseQuantity, boost::optional< ::Ifc4::IfcConstructionProductResourceTypeEnum::Value > v11_PredefinedType);
    typedef IfcTemplatedEntityList< IfcConstructionProductResource > list;
};
class IFC_PARSE_API IfcCooledBeamType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc4::IfcCooledBeamTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcCooledBeamTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCooledBeamType (IfcEntityInstanceData* e);
    IfcCooledBeamType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcCooledBeamTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCooledBeamType > list;
};
class IFC_PARSE_API IfcCoolingTowerType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc4::IfcCoolingTowerTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcCoolingTowerTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCoolingTowerType (IfcEntityInstanceData* e);
    IfcCoolingTowerType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcCoolingTowerTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCoolingTowerType > list;
};
class IFC_PARSE_API IfcCovering : public IfcBuildingElement {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcCoveringTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcCoveringTypeEnum::Value v);
        IfcTemplatedEntityList< IfcRelCoversSpaces >::ptr CoversSpaces() const; // INVERSE IfcRelCoversSpaces::RelatedCoverings
    IfcTemplatedEntityList< IfcRelCoversBldgElements >::ptr CoversElements() const; // INVERSE IfcRelCoversBldgElements::RelatedCoverings
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCovering (IfcEntityInstanceData* e);
    IfcCovering (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcCoveringTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCovering > list;
};
class IFC_PARSE_API IfcCurtainWall : public IfcBuildingElement {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcCurtainWallTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcCurtainWallTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCurtainWall (IfcEntityInstanceData* e);
    IfcCurtainWall (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcCurtainWallTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCurtainWall > list;
};
class IFC_PARSE_API IfcDamperType : public IfcFlowControllerType {
public:
    ::Ifc4::IfcDamperTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcDamperTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDamperType (IfcEntityInstanceData* e);
    IfcDamperType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcDamperTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcDamperType > list;
};
class IFC_PARSE_API IfcDiscreteAccessory : public IfcElementComponent {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcDiscreteAccessoryTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcDiscreteAccessoryTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDiscreteAccessory (IfcEntityInstanceData* e);
    IfcDiscreteAccessory (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcDiscreteAccessoryTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcDiscreteAccessory > list;
};
class IFC_PARSE_API IfcDiscreteAccessoryType : public IfcElementComponentType {
public:
    ::Ifc4::IfcDiscreteAccessoryTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcDiscreteAccessoryTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDiscreteAccessoryType (IfcEntityInstanceData* e);
    IfcDiscreteAccessoryType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcDiscreteAccessoryTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcDiscreteAccessoryType > list;
};
class IFC_PARSE_API IfcDistributionChamberElementType : public IfcDistributionFlowElementType {
public:
    ::Ifc4::IfcDistributionChamberElementTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcDistributionChamberElementTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDistributionChamberElementType (IfcEntityInstanceData* e);
    IfcDistributionChamberElementType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcDistributionChamberElementTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcDistributionChamberElementType > list;
};
class IFC_PARSE_API IfcDistributionControlElementType : public IfcDistributionElementType {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDistributionControlElementType (IfcEntityInstanceData* e);
    IfcDistributionControlElementType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType);
    typedef IfcTemplatedEntityList< IfcDistributionControlElementType > list;
};
class IFC_PARSE_API IfcDistributionElement : public IfcElement {
public:
        IfcTemplatedEntityList< IfcRelConnectsPortToElement >::ptr HasPorts() const; // INVERSE IfcRelConnectsPortToElement::RelatedElement
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDistributionElement (IfcEntityInstanceData* e);
    IfcDistributionElement (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcDistributionElement > list;
};
class IFC_PARSE_API IfcDistributionFlowElement : public IfcDistributionElement {
public:
        IfcTemplatedEntityList< IfcRelFlowControlElements >::ptr HasControlElements() const; // INVERSE IfcRelFlowControlElements::RelatingFlowElement
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDistributionFlowElement (IfcEntityInstanceData* e);
    IfcDistributionFlowElement (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcDistributionFlowElement > list;
};
class IFC_PARSE_API IfcDistributionPort : public IfcPort {
public:
    bool hasFlowDirection() const;
    ::Ifc4::IfcFlowDirectionEnum::Value FlowDirection() const;
    void setFlowDirection(::Ifc4::IfcFlowDirectionEnum::Value v);
    bool hasPredefinedType() const;
    ::Ifc4::IfcDistributionPortTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcDistributionPortTypeEnum::Value v);
    bool hasSystemType() const;
    ::Ifc4::IfcDistributionSystemEnum::Value SystemType() const;
    void setSystemType(::Ifc4::IfcDistributionSystemEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDistributionPort (IfcEntityInstanceData* e);
    IfcDistributionPort (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< ::Ifc4::IfcFlowDirectionEnum::Value > v8_FlowDirection, boost::optional< ::Ifc4::IfcDistributionPortTypeEnum::Value > v9_PredefinedType, boost::optional< ::Ifc4::IfcDistributionSystemEnum::Value > v10_SystemType);
    typedef IfcTemplatedEntityList< IfcDistributionPort > list;
};
class IFC_PARSE_API IfcDistributionSystem : public IfcSystem {
public:
    bool hasLongName() const;
    std::string LongName() const;
    void setLongName(std::string v);
    bool hasPredefinedType() const;
    ::Ifc4::IfcDistributionSystemEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcDistributionSystemEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDistributionSystem (IfcEntityInstanceData* e);
    IfcDistributionSystem (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_LongName, boost::optional< ::Ifc4::IfcDistributionSystemEnum::Value > v7_PredefinedType);
    typedef IfcTemplatedEntityList< IfcDistributionSystem > list;
};
class IFC_PARSE_API IfcDoor : public IfcBuildingElement {
public:
    bool hasOverallHeight() const;
    double OverallHeight() const;
    void setOverallHeight(double v);
    bool hasOverallWidth() const;
    double OverallWidth() const;
    void setOverallWidth(double v);
    bool hasPredefinedType() const;
    ::Ifc4::IfcDoorTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcDoorTypeEnum::Value v);
    bool hasOperationType() const;
    ::Ifc4::IfcDoorTypeOperationEnum::Value OperationType() const;
    void setOperationType(::Ifc4::IfcDoorTypeOperationEnum::Value v);
    bool hasUserDefinedOperationType() const;
    std::string UserDefinedOperationType() const;
    void setUserDefinedOperationType(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDoor (IfcEntityInstanceData* e);
    IfcDoor (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< double > v9_OverallHeight, boost::optional< double > v10_OverallWidth, boost::optional< ::Ifc4::IfcDoorTypeEnum::Value > v11_PredefinedType, boost::optional< ::Ifc4::IfcDoorTypeOperationEnum::Value > v12_OperationType, boost::optional< std::string > v13_UserDefinedOperationType);
    typedef IfcTemplatedEntityList< IfcDoor > list;
};
class IFC_PARSE_API IfcDoorStandardCase : public IfcDoor {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDoorStandardCase (IfcEntityInstanceData* e);
    IfcDoorStandardCase (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< double > v9_OverallHeight, boost::optional< double > v10_OverallWidth, boost::optional< ::Ifc4::IfcDoorTypeEnum::Value > v11_PredefinedType, boost::optional< ::Ifc4::IfcDoorTypeOperationEnum::Value > v12_OperationType, boost::optional< std::string > v13_UserDefinedOperationType);
    typedef IfcTemplatedEntityList< IfcDoorStandardCase > list;
};
class IFC_PARSE_API IfcDuctFittingType : public IfcFlowFittingType {
public:
    ::Ifc4::IfcDuctFittingTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcDuctFittingTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDuctFittingType (IfcEntityInstanceData* e);
    IfcDuctFittingType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcDuctFittingTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcDuctFittingType > list;
};
class IFC_PARSE_API IfcDuctSegmentType : public IfcFlowSegmentType {
public:
    ::Ifc4::IfcDuctSegmentTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcDuctSegmentTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDuctSegmentType (IfcEntityInstanceData* e);
    IfcDuctSegmentType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcDuctSegmentTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcDuctSegmentType > list;
};
class IFC_PARSE_API IfcDuctSilencerType : public IfcFlowTreatmentDeviceType {
public:
    ::Ifc4::IfcDuctSilencerTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcDuctSilencerTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDuctSilencerType (IfcEntityInstanceData* e);
    IfcDuctSilencerType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcDuctSilencerTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcDuctSilencerType > list;
};
class IFC_PARSE_API IfcElectricApplianceType : public IfcFlowTerminalType {
public:
    ::Ifc4::IfcElectricApplianceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcElectricApplianceTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcElectricApplianceType (IfcEntityInstanceData* e);
    IfcElectricApplianceType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcElectricApplianceTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcElectricApplianceType > list;
};
class IFC_PARSE_API IfcElectricDistributionBoardType : public IfcFlowControllerType {
public:
    ::Ifc4::IfcElectricDistributionBoardTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcElectricDistributionBoardTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcElectricDistributionBoardType (IfcEntityInstanceData* e);
    IfcElectricDistributionBoardType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcElectricDistributionBoardTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcElectricDistributionBoardType > list;
};
class IFC_PARSE_API IfcElectricFlowStorageDeviceType : public IfcFlowStorageDeviceType {
public:
    ::Ifc4::IfcElectricFlowStorageDeviceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcElectricFlowStorageDeviceTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcElectricFlowStorageDeviceType (IfcEntityInstanceData* e);
    IfcElectricFlowStorageDeviceType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcElectricFlowStorageDeviceTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcElectricFlowStorageDeviceType > list;
};
class IFC_PARSE_API IfcElectricGeneratorType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc4::IfcElectricGeneratorTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcElectricGeneratorTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcElectricGeneratorType (IfcEntityInstanceData* e);
    IfcElectricGeneratorType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcElectricGeneratorTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcElectricGeneratorType > list;
};
class IFC_PARSE_API IfcElectricMotorType : public IfcEnergyConversionDeviceType {
public:
    ::Ifc4::IfcElectricMotorTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcElectricMotorTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcElectricMotorType (IfcEntityInstanceData* e);
    IfcElectricMotorType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcElectricMotorTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcElectricMotorType > list;
};
class IFC_PARSE_API IfcElectricTimeControlType : public IfcFlowControllerType {
public:
    ::Ifc4::IfcElectricTimeControlTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcElectricTimeControlTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcElectricTimeControlType (IfcEntityInstanceData* e);
    IfcElectricTimeControlType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcElectricTimeControlTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcElectricTimeControlType > list;
};
class IFC_PARSE_API IfcEnergyConversionDevice : public IfcDistributionFlowElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcEnergyConversionDevice (IfcEntityInstanceData* e);
    IfcEnergyConversionDevice (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcEnergyConversionDevice > list;
};
class IFC_PARSE_API IfcEngine : public IfcEnergyConversionDevice {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcEngineTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcEngineTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcEngine (IfcEntityInstanceData* e);
    IfcEngine (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcEngineTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcEngine > list;
};
class IFC_PARSE_API IfcEvaporativeCooler : public IfcEnergyConversionDevice {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcEvaporativeCoolerTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcEvaporativeCoolerTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcEvaporativeCooler (IfcEntityInstanceData* e);
    IfcEvaporativeCooler (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcEvaporativeCoolerTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcEvaporativeCooler > list;
};
class IFC_PARSE_API IfcEvaporator : public IfcEnergyConversionDevice {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcEvaporatorTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcEvaporatorTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcEvaporator (IfcEntityInstanceData* e);
    IfcEvaporator (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcEvaporatorTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcEvaporator > list;
};
class IFC_PARSE_API IfcExternalSpatialElement : public IfcExternalSpatialStructureElement {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcExternalSpatialElementTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcExternalSpatialElementTypeEnum::Value v);
        IfcTemplatedEntityList< IfcRelSpaceBoundary >::ptr BoundedBy() const; // INVERSE IfcRelSpaceBoundary::RelatingSpace
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcExternalSpatialElement (IfcEntityInstanceData* e);
    IfcExternalSpatialElement (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4::IfcExternalSpatialElementTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcExternalSpatialElement > list;
};
class IFC_PARSE_API IfcFanType : public IfcFlowMovingDeviceType {
public:
    ::Ifc4::IfcFanTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcFanTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFanType (IfcEntityInstanceData* e);
    IfcFanType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcFanTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcFanType > list;
};
class IFC_PARSE_API IfcFilterType : public IfcFlowTreatmentDeviceType {
public:
    ::Ifc4::IfcFilterTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcFilterTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFilterType (IfcEntityInstanceData* e);
    IfcFilterType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcFilterTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcFilterType > list;
};
class IFC_PARSE_API IfcFireSuppressionTerminalType : public IfcFlowTerminalType {
public:
    ::Ifc4::IfcFireSuppressionTerminalTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcFireSuppressionTerminalTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFireSuppressionTerminalType (IfcEntityInstanceData* e);
    IfcFireSuppressionTerminalType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcFireSuppressionTerminalTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcFireSuppressionTerminalType > list;
};
class IFC_PARSE_API IfcFlowController : public IfcDistributionFlowElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFlowController (IfcEntityInstanceData* e);
    IfcFlowController (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcFlowController > list;
};
class IFC_PARSE_API IfcFlowFitting : public IfcDistributionFlowElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFlowFitting (IfcEntityInstanceData* e);
    IfcFlowFitting (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcFlowFitting > list;
};
class IFC_PARSE_API IfcFlowInstrumentType : public IfcDistributionControlElementType {
public:
    ::Ifc4::IfcFlowInstrumentTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcFlowInstrumentTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFlowInstrumentType (IfcEntityInstanceData* e);
    IfcFlowInstrumentType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcFlowInstrumentTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcFlowInstrumentType > list;
};
class IFC_PARSE_API IfcFlowMeter : public IfcFlowController {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcFlowMeterTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcFlowMeterTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFlowMeter (IfcEntityInstanceData* e);
    IfcFlowMeter (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcFlowMeterTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcFlowMeter > list;
};
class IFC_PARSE_API IfcFlowMovingDevice : public IfcDistributionFlowElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFlowMovingDevice (IfcEntityInstanceData* e);
    IfcFlowMovingDevice (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcFlowMovingDevice > list;
};
class IFC_PARSE_API IfcFlowSegment : public IfcDistributionFlowElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFlowSegment (IfcEntityInstanceData* e);
    IfcFlowSegment (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcFlowSegment > list;
};
class IFC_PARSE_API IfcFlowStorageDevice : public IfcDistributionFlowElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFlowStorageDevice (IfcEntityInstanceData* e);
    IfcFlowStorageDevice (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcFlowStorageDevice > list;
};
class IFC_PARSE_API IfcFlowTerminal : public IfcDistributionFlowElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFlowTerminal (IfcEntityInstanceData* e);
    IfcFlowTerminal (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcFlowTerminal > list;
};
class IFC_PARSE_API IfcFlowTreatmentDevice : public IfcDistributionFlowElement {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFlowTreatmentDevice (IfcEntityInstanceData* e);
    IfcFlowTreatmentDevice (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcFlowTreatmentDevice > list;
};
class IFC_PARSE_API IfcFooting : public IfcBuildingElement {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcFootingTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcFootingTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFooting (IfcEntityInstanceData* e);
    IfcFooting (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcFootingTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcFooting > list;
};
class IFC_PARSE_API IfcHeatExchanger : public IfcEnergyConversionDevice {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcHeatExchangerTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcHeatExchangerTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcHeatExchanger (IfcEntityInstanceData* e);
    IfcHeatExchanger (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcHeatExchangerTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcHeatExchanger > list;
};
class IFC_PARSE_API IfcHumidifier : public IfcEnergyConversionDevice {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcHumidifierTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcHumidifierTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcHumidifier (IfcEntityInstanceData* e);
    IfcHumidifier (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcHumidifierTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcHumidifier > list;
};
class IFC_PARSE_API IfcInterceptor : public IfcFlowTreatmentDevice {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcInterceptorTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcInterceptorTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcInterceptor (IfcEntityInstanceData* e);
    IfcInterceptor (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcInterceptorTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcInterceptor > list;
};
class IFC_PARSE_API IfcJunctionBox : public IfcFlowFitting {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcJunctionBoxTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcJunctionBoxTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcJunctionBox (IfcEntityInstanceData* e);
    IfcJunctionBox (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcJunctionBoxTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcJunctionBox > list;
};
class IFC_PARSE_API IfcLamp : public IfcFlowTerminal {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcLampTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcLampTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLamp (IfcEntityInstanceData* e);
    IfcLamp (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcLampTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcLamp > list;
};
class IFC_PARSE_API IfcLightFixture : public IfcFlowTerminal {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcLightFixtureTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcLightFixtureTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcLightFixture (IfcEntityInstanceData* e);
    IfcLightFixture (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcLightFixtureTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcLightFixture > list;
};
class IFC_PARSE_API IfcMedicalDevice : public IfcFlowTerminal {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcMedicalDeviceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcMedicalDeviceTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMedicalDevice (IfcEntityInstanceData* e);
    IfcMedicalDevice (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcMedicalDeviceTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcMedicalDevice > list;
};
class IFC_PARSE_API IfcMember : public IfcBuildingElement {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcMemberTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcMemberTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMember (IfcEntityInstanceData* e);
    IfcMember (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcMemberTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcMember > list;
};
class IFC_PARSE_API IfcMemberStandardCase : public IfcMember {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMemberStandardCase (IfcEntityInstanceData* e);
    IfcMemberStandardCase (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcMemberTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcMemberStandardCase > list;
};
class IFC_PARSE_API IfcMotorConnection : public IfcEnergyConversionDevice {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcMotorConnectionTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcMotorConnectionTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcMotorConnection (IfcEntityInstanceData* e);
    IfcMotorConnection (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcMotorConnectionTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcMotorConnection > list;
};
class IFC_PARSE_API IfcOuterBoundaryCurve : public IfcBoundaryCurve {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcOuterBoundaryCurve (IfcEntityInstanceData* e);
    IfcOuterBoundaryCurve (IfcTemplatedEntityList< ::Ifc4::IfcCompositeCurveSegment >::ptr v1_Segments, bool v2_SelfIntersect);
    typedef IfcTemplatedEntityList< IfcOuterBoundaryCurve > list;
};
class IFC_PARSE_API IfcOutlet : public IfcFlowTerminal {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcOutletTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcOutletTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcOutlet (IfcEntityInstanceData* e);
    IfcOutlet (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcOutletTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcOutlet > list;
};
class IFC_PARSE_API IfcPile : public IfcBuildingElement {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcPileTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcPileTypeEnum::Value v);
    bool hasConstructionType() const;
    ::Ifc4::IfcPileConstructionEnum::Value ConstructionType() const;
    void setConstructionType(::Ifc4::IfcPileConstructionEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPile (IfcEntityInstanceData* e);
    IfcPile (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcPileTypeEnum::Value > v9_PredefinedType, boost::optional< ::Ifc4::IfcPileConstructionEnum::Value > v10_ConstructionType);
    typedef IfcTemplatedEntityList< IfcPile > list;
};
class IFC_PARSE_API IfcPipeFitting : public IfcFlowFitting {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcPipeFittingTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcPipeFittingTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPipeFitting (IfcEntityInstanceData* e);
    IfcPipeFitting (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcPipeFittingTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcPipeFitting > list;
};
class IFC_PARSE_API IfcPipeSegment : public IfcFlowSegment {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcPipeSegmentTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcPipeSegmentTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPipeSegment (IfcEntityInstanceData* e);
    IfcPipeSegment (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcPipeSegmentTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcPipeSegment > list;
};
class IFC_PARSE_API IfcPlate : public IfcBuildingElement {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcPlateTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcPlateTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPlate (IfcEntityInstanceData* e);
    IfcPlate (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcPlateTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcPlate > list;
};
class IFC_PARSE_API IfcPlateStandardCase : public IfcPlate {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPlateStandardCase (IfcEntityInstanceData* e);
    IfcPlateStandardCase (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcPlateTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcPlateStandardCase > list;
};
class IFC_PARSE_API IfcProtectiveDevice : public IfcFlowController {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcProtectiveDeviceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcProtectiveDeviceTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcProtectiveDevice (IfcEntityInstanceData* e);
    IfcProtectiveDevice (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcProtectiveDeviceTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcProtectiveDevice > list;
};
class IFC_PARSE_API IfcProtectiveDeviceTrippingUnitType : public IfcDistributionControlElementType {
public:
    ::Ifc4::IfcProtectiveDeviceTrippingUnitTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcProtectiveDeviceTrippingUnitTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcProtectiveDeviceTrippingUnitType (IfcEntityInstanceData* e);
    IfcProtectiveDeviceTrippingUnitType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcProtectiveDeviceTrippingUnitTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcProtectiveDeviceTrippingUnitType > list;
};
class IFC_PARSE_API IfcPump : public IfcFlowMovingDevice {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcPumpTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcPumpTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcPump (IfcEntityInstanceData* e);
    IfcPump (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcPumpTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcPump > list;
};
class IFC_PARSE_API IfcRailing : public IfcBuildingElement {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcRailingTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcRailingTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRailing (IfcEntityInstanceData* e);
    IfcRailing (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcRailingTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcRailing > list;
};
class IFC_PARSE_API IfcRamp : public IfcBuildingElement {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcRampTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcRampTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRamp (IfcEntityInstanceData* e);
    IfcRamp (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcRampTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcRamp > list;
};
class IFC_PARSE_API IfcRampFlight : public IfcBuildingElement {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcRampFlightTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcRampFlightTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRampFlight (IfcEntityInstanceData* e);
    IfcRampFlight (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcRampFlightTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcRampFlight > list;
};
class IFC_PARSE_API IfcRationalBSplineCurveWithKnots : public IfcBSplineCurveWithKnots {
public:
    std::vector< double > /*[2:?]*/ WeightsData() const;
    void setWeightsData(std::vector< double > /*[2:?]*/ v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRationalBSplineCurveWithKnots (IfcEntityInstanceData* e);
    IfcRationalBSplineCurveWithKnots (int v1_Degree, IfcTemplatedEntityList< ::Ifc4::IfcCartesianPoint >::ptr v2_ControlPointsList, ::Ifc4::IfcBSplineCurveForm::Value v3_CurveForm, bool v4_ClosedCurve, bool v5_SelfIntersect, std::vector< int > /*[2:?]*/ v6_KnotMultiplicities, std::vector< double > /*[2:?]*/ v7_Knots, ::Ifc4::IfcKnotType::Value v8_KnotSpec, std::vector< double > /*[2:?]*/ v9_WeightsData);
    typedef IfcTemplatedEntityList< IfcRationalBSplineCurveWithKnots > list;
};
class IFC_PARSE_API IfcReinforcingBar : public IfcReinforcingElement {
public:
    bool hasNominalDiameter() const;
    double NominalDiameter() const;
    void setNominalDiameter(double v);
    bool hasCrossSectionArea() const;
    double CrossSectionArea() const;
    void setCrossSectionArea(double v);
    bool hasBarLength() const;
    double BarLength() const;
    void setBarLength(double v);
    bool hasPredefinedType() const;
    ::Ifc4::IfcReinforcingBarTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcReinforcingBarTypeEnum::Value v);
    bool hasBarSurface() const;
    ::Ifc4::IfcReinforcingBarSurfaceEnum::Value BarSurface() const;
    void setBarSurface(::Ifc4::IfcReinforcingBarSurfaceEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcReinforcingBar (IfcEntityInstanceData* e);
    IfcReinforcingBar (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade, boost::optional< double > v10_NominalDiameter, boost::optional< double > v11_CrossSectionArea, boost::optional< double > v12_BarLength, boost::optional< ::Ifc4::IfcReinforcingBarTypeEnum::Value > v13_PredefinedType, boost::optional< ::Ifc4::IfcReinforcingBarSurfaceEnum::Value > v14_BarSurface);
    typedef IfcTemplatedEntityList< IfcReinforcingBar > list;
};
class IFC_PARSE_API IfcReinforcingBarType : public IfcReinforcingElementType {
public:
    ::Ifc4::IfcReinforcingBarTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcReinforcingBarTypeEnum::Value v);
    bool hasNominalDiameter() const;
    double NominalDiameter() const;
    void setNominalDiameter(double v);
    bool hasCrossSectionArea() const;
    double CrossSectionArea() const;
    void setCrossSectionArea(double v);
    bool hasBarLength() const;
    double BarLength() const;
    void setBarLength(double v);
    bool hasBarSurface() const;
    ::Ifc4::IfcReinforcingBarSurfaceEnum::Value BarSurface() const;
    void setBarSurface(::Ifc4::IfcReinforcingBarSurfaceEnum::Value v);
    bool hasBendingShapeCode() const;
    std::string BendingShapeCode() const;
    void setBendingShapeCode(std::string v);
    bool hasBendingParameters() const;
    IfcEntityList::ptr BendingParameters() const;
    void setBendingParameters(IfcEntityList::ptr v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcReinforcingBarType (IfcEntityInstanceData* e);
    IfcReinforcingBarType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcReinforcingBarTypeEnum::Value v10_PredefinedType, boost::optional< double > v11_NominalDiameter, boost::optional< double > v12_CrossSectionArea, boost::optional< double > v13_BarLength, boost::optional< ::Ifc4::IfcReinforcingBarSurfaceEnum::Value > v14_BarSurface, boost::optional< std::string > v15_BendingShapeCode, boost::optional< IfcEntityList::ptr > v16_BendingParameters);
    typedef IfcTemplatedEntityList< IfcReinforcingBarType > list;
};
class IFC_PARSE_API IfcRoof : public IfcBuildingElement {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcRoofTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcRoofTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcRoof (IfcEntityInstanceData* e);
    IfcRoof (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcRoofTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcRoof > list;
};
class IFC_PARSE_API IfcSanitaryTerminal : public IfcFlowTerminal {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcSanitaryTerminalTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcSanitaryTerminalTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSanitaryTerminal (IfcEntityInstanceData* e);
    IfcSanitaryTerminal (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcSanitaryTerminalTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcSanitaryTerminal > list;
};
class IFC_PARSE_API IfcSensorType : public IfcDistributionControlElementType {
public:
    ::Ifc4::IfcSensorTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcSensorTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSensorType (IfcEntityInstanceData* e);
    IfcSensorType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcSensorTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcSensorType > list;
};
class IFC_PARSE_API IfcShadingDevice : public IfcBuildingElement {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcShadingDeviceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcShadingDeviceTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcShadingDevice (IfcEntityInstanceData* e);
    IfcShadingDevice (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcShadingDeviceTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcShadingDevice > list;
};
class IFC_PARSE_API IfcSlab : public IfcBuildingElement {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcSlabTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcSlabTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSlab (IfcEntityInstanceData* e);
    IfcSlab (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcSlabTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcSlab > list;
};
class IFC_PARSE_API IfcSlabElementedCase : public IfcSlab {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSlabElementedCase (IfcEntityInstanceData* e);
    IfcSlabElementedCase (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcSlabTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcSlabElementedCase > list;
};
class IFC_PARSE_API IfcSlabStandardCase : public IfcSlab {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSlabStandardCase (IfcEntityInstanceData* e);
    IfcSlabStandardCase (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcSlabTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcSlabStandardCase > list;
};
class IFC_PARSE_API IfcSolarDevice : public IfcEnergyConversionDevice {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcSolarDeviceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcSolarDeviceTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSolarDevice (IfcEntityInstanceData* e);
    IfcSolarDevice (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcSolarDeviceTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcSolarDevice > list;
};
class IFC_PARSE_API IfcSpaceHeater : public IfcFlowTerminal {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcSpaceHeaterTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcSpaceHeaterTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSpaceHeater (IfcEntityInstanceData* e);
    IfcSpaceHeater (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcSpaceHeaterTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcSpaceHeater > list;
};
class IFC_PARSE_API IfcStackTerminal : public IfcFlowTerminal {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcStackTerminalTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcStackTerminalTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStackTerminal (IfcEntityInstanceData* e);
    IfcStackTerminal (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcStackTerminalTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcStackTerminal > list;
};
class IFC_PARSE_API IfcStair : public IfcBuildingElement {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcStairTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcStairTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStair (IfcEntityInstanceData* e);
    IfcStair (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcStairTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcStair > list;
};
class IFC_PARSE_API IfcStairFlight : public IfcBuildingElement {
public:
    bool hasNumberOfRisers() const;
    int NumberOfRisers() const;
    void setNumberOfRisers(int v);
    bool hasNumberOfTreads() const;
    int NumberOfTreads() const;
    void setNumberOfTreads(int v);
    bool hasRiserHeight() const;
    double RiserHeight() const;
    void setRiserHeight(double v);
    bool hasTreadLength() const;
    double TreadLength() const;
    void setTreadLength(double v);
    bool hasPredefinedType() const;
    ::Ifc4::IfcStairFlightTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcStairFlightTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStairFlight (IfcEntityInstanceData* e);
    IfcStairFlight (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< int > v9_NumberOfRisers, boost::optional< int > v10_NumberOfTreads, boost::optional< double > v11_RiserHeight, boost::optional< double > v12_TreadLength, boost::optional< ::Ifc4::IfcStairFlightTypeEnum::Value > v13_PredefinedType);
    typedef IfcTemplatedEntityList< IfcStairFlight > list;
};
class IFC_PARSE_API IfcStructuralAnalysisModel : public IfcSystem {
public:
    ::Ifc4::IfcAnalysisModelTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcAnalysisModelTypeEnum::Value v);
    bool hasOrientationOf2DPlane() const;
    ::Ifc4::IfcAxis2Placement3D* OrientationOf2DPlane() const;
    void setOrientationOf2DPlane(::Ifc4::IfcAxis2Placement3D* v);
    bool hasLoadedBy() const;
    IfcTemplatedEntityList< ::Ifc4::IfcStructuralLoadGroup >::ptr LoadedBy() const;
    void setLoadedBy(IfcTemplatedEntityList< ::Ifc4::IfcStructuralLoadGroup >::ptr v);
    bool hasHasResults() const;
    IfcTemplatedEntityList< ::Ifc4::IfcStructuralResultGroup >::ptr HasResults() const;
    void setHasResults(IfcTemplatedEntityList< ::Ifc4::IfcStructuralResultGroup >::ptr v);
    bool hasSharedPlacement() const;
    ::Ifc4::IfcObjectPlacement* SharedPlacement() const;
    void setSharedPlacement(::Ifc4::IfcObjectPlacement* v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralAnalysisModel (IfcEntityInstanceData* e);
    IfcStructuralAnalysisModel (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcAnalysisModelTypeEnum::Value v6_PredefinedType, ::Ifc4::IfcAxis2Placement3D* v7_OrientationOf2DPlane, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcStructuralLoadGroup >::ptr > v8_LoadedBy, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcStructuralResultGroup >::ptr > v9_HasResults, ::Ifc4::IfcObjectPlacement* v10_SharedPlacement);
    typedef IfcTemplatedEntityList< IfcStructuralAnalysisModel > list;
};
class IFC_PARSE_API IfcStructuralLoadCase : public IfcStructuralLoadGroup {
public:
    bool hasSelfWeightCoefficients() const;
    std::vector< double > /*[3:3]*/ SelfWeightCoefficients() const;
    void setSelfWeightCoefficients(std::vector< double > /*[3:3]*/ v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralLoadCase (IfcEntityInstanceData* e);
    IfcStructuralLoadCase (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcLoadGroupTypeEnum::Value v6_PredefinedType, ::Ifc4::IfcActionTypeEnum::Value v7_ActionType, ::Ifc4::IfcActionSourceTypeEnum::Value v8_ActionSource, boost::optional< double > v9_Coefficient, boost::optional< std::string > v10_Purpose, boost::optional< std::vector< double > /*[3:3]*/ > v11_SelfWeightCoefficients);
    typedef IfcTemplatedEntityList< IfcStructuralLoadCase > list;
};
class IFC_PARSE_API IfcStructuralPlanarAction : public IfcStructuralSurfaceAction {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcStructuralPlanarAction (IfcEntityInstanceData* e);
    IfcStructuralPlanarAction (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, ::Ifc4::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, boost::optional< bool > v10_DestabilizingLoad, boost::optional< ::Ifc4::IfcProjectedOrTrueLengthEnum::Value > v11_ProjectedOrTrue, ::Ifc4::IfcStructuralSurfaceActivityTypeEnum::Value v12_PredefinedType);
    typedef IfcTemplatedEntityList< IfcStructuralPlanarAction > list;
};
class IFC_PARSE_API IfcSwitchingDevice : public IfcFlowController {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcSwitchingDeviceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcSwitchingDeviceTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSwitchingDevice (IfcEntityInstanceData* e);
    IfcSwitchingDevice (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcSwitchingDeviceTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcSwitchingDevice > list;
};
class IFC_PARSE_API IfcTank : public IfcFlowStorageDevice {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcTankTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcTankTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTank (IfcEntityInstanceData* e);
    IfcTank (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcTankTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcTank > list;
};
class IFC_PARSE_API IfcTransformer : public IfcEnergyConversionDevice {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcTransformerTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcTransformerTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTransformer (IfcEntityInstanceData* e);
    IfcTransformer (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcTransformerTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcTransformer > list;
};
class IFC_PARSE_API IfcTubeBundle : public IfcEnergyConversionDevice {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcTubeBundleTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcTubeBundleTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcTubeBundle (IfcEntityInstanceData* e);
    IfcTubeBundle (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcTubeBundleTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcTubeBundle > list;
};
class IFC_PARSE_API IfcUnitaryControlElementType : public IfcDistributionControlElementType {
public:
    ::Ifc4::IfcUnitaryControlElementTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcUnitaryControlElementTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcUnitaryControlElementType (IfcEntityInstanceData* e);
    IfcUnitaryControlElementType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcUnitaryControlElementTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcUnitaryControlElementType > list;
};
class IFC_PARSE_API IfcUnitaryEquipment : public IfcEnergyConversionDevice {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcUnitaryEquipmentTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcUnitaryEquipmentTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcUnitaryEquipment (IfcEntityInstanceData* e);
    IfcUnitaryEquipment (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcUnitaryEquipmentTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcUnitaryEquipment > list;
};
class IFC_PARSE_API IfcValve : public IfcFlowController {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcValveTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcValveTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcValve (IfcEntityInstanceData* e);
    IfcValve (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcValveTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcValve > list;
};
class IFC_PARSE_API IfcWall : public IfcBuildingElement {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcWallTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcWallTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcWall (IfcEntityInstanceData* e);
    IfcWall (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcWallTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcWall > list;
};
class IFC_PARSE_API IfcWallElementedCase : public IfcWall {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcWallElementedCase (IfcEntityInstanceData* e);
    IfcWallElementedCase (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcWallTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcWallElementedCase > list;
};
class IFC_PARSE_API IfcWallStandardCase : public IfcWall {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcWallStandardCase (IfcEntityInstanceData* e);
    IfcWallStandardCase (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcWallTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcWallStandardCase > list;
};
class IFC_PARSE_API IfcWasteTerminal : public IfcFlowTerminal {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcWasteTerminalTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcWasteTerminalTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcWasteTerminal (IfcEntityInstanceData* e);
    IfcWasteTerminal (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcWasteTerminalTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcWasteTerminal > list;
};
class IFC_PARSE_API IfcWindow : public IfcBuildingElement {
public:
    bool hasOverallHeight() const;
    double OverallHeight() const;
    void setOverallHeight(double v);
    bool hasOverallWidth() const;
    double OverallWidth() const;
    void setOverallWidth(double v);
    bool hasPredefinedType() const;
    ::Ifc4::IfcWindowTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcWindowTypeEnum::Value v);
    bool hasPartitioningType() const;
    ::Ifc4::IfcWindowTypePartitioningEnum::Value PartitioningType() const;
    void setPartitioningType(::Ifc4::IfcWindowTypePartitioningEnum::Value v);
    bool hasUserDefinedPartitioningType() const;
    std::string UserDefinedPartitioningType() const;
    void setUserDefinedPartitioningType(std::string v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcWindow (IfcEntityInstanceData* e);
    IfcWindow (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< double > v9_OverallHeight, boost::optional< double > v10_OverallWidth, boost::optional< ::Ifc4::IfcWindowTypeEnum::Value > v11_PredefinedType, boost::optional< ::Ifc4::IfcWindowTypePartitioningEnum::Value > v12_PartitioningType, boost::optional< std::string > v13_UserDefinedPartitioningType);
    typedef IfcTemplatedEntityList< IfcWindow > list;
};
class IFC_PARSE_API IfcWindowStandardCase : public IfcWindow {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcWindowStandardCase (IfcEntityInstanceData* e);
    IfcWindowStandardCase (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< double > v9_OverallHeight, boost::optional< double > v10_OverallWidth, boost::optional< ::Ifc4::IfcWindowTypeEnum::Value > v11_PredefinedType, boost::optional< ::Ifc4::IfcWindowTypePartitioningEnum::Value > v12_PartitioningType, boost::optional< std::string > v13_UserDefinedPartitioningType);
    typedef IfcTemplatedEntityList< IfcWindowStandardCase > list;
};
class IFC_PARSE_API IfcActuatorType : public IfcDistributionControlElementType {
public:
    ::Ifc4::IfcActuatorTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcActuatorTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcActuatorType (IfcEntityInstanceData* e);
    IfcActuatorType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcActuatorTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcActuatorType > list;
};
class IFC_PARSE_API IfcAirTerminal : public IfcFlowTerminal {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcAirTerminalTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcAirTerminalTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAirTerminal (IfcEntityInstanceData* e);
    IfcAirTerminal (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcAirTerminalTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcAirTerminal > list;
};
class IFC_PARSE_API IfcAirTerminalBox : public IfcFlowController {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcAirTerminalBoxTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcAirTerminalBoxTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAirTerminalBox (IfcEntityInstanceData* e);
    IfcAirTerminalBox (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcAirTerminalBoxTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcAirTerminalBox > list;
};
class IFC_PARSE_API IfcAirToAirHeatRecovery : public IfcEnergyConversionDevice {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcAirToAirHeatRecoveryTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcAirToAirHeatRecoveryTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAirToAirHeatRecovery (IfcEntityInstanceData* e);
    IfcAirToAirHeatRecovery (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcAirToAirHeatRecoveryTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcAirToAirHeatRecovery > list;
};
class IFC_PARSE_API IfcAlarmType : public IfcDistributionControlElementType {
public:
    ::Ifc4::IfcAlarmTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcAlarmTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAlarmType (IfcEntityInstanceData* e);
    IfcAlarmType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcAlarmTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcAlarmType > list;
};
class IFC_PARSE_API IfcAudioVisualAppliance : public IfcFlowTerminal {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcAudioVisualApplianceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcAudioVisualApplianceTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAudioVisualAppliance (IfcEntityInstanceData* e);
    IfcAudioVisualAppliance (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcAudioVisualApplianceTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcAudioVisualAppliance > list;
};
class IFC_PARSE_API IfcBeam : public IfcBuildingElement {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcBeamTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcBeamTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBeam (IfcEntityInstanceData* e);
    IfcBeam (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcBeamTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcBeam > list;
};
class IFC_PARSE_API IfcBeamStandardCase : public IfcBeam {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBeamStandardCase (IfcEntityInstanceData* e);
    IfcBeamStandardCase (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcBeamTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcBeamStandardCase > list;
};
class IFC_PARSE_API IfcBoiler : public IfcEnergyConversionDevice {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcBoilerTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcBoilerTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBoiler (IfcEntityInstanceData* e);
    IfcBoiler (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcBoilerTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcBoiler > list;
};
class IFC_PARSE_API IfcBurner : public IfcEnergyConversionDevice {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcBurnerTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcBurnerTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcBurner (IfcEntityInstanceData* e);
    IfcBurner (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcBurnerTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcBurner > list;
};
class IFC_PARSE_API IfcCableCarrierFitting : public IfcFlowFitting {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcCableCarrierFittingTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcCableCarrierFittingTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCableCarrierFitting (IfcEntityInstanceData* e);
    IfcCableCarrierFitting (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcCableCarrierFittingTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCableCarrierFitting > list;
};
class IFC_PARSE_API IfcCableCarrierSegment : public IfcFlowSegment {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcCableCarrierSegmentTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcCableCarrierSegmentTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCableCarrierSegment (IfcEntityInstanceData* e);
    IfcCableCarrierSegment (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcCableCarrierSegmentTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCableCarrierSegment > list;
};
class IFC_PARSE_API IfcCableFitting : public IfcFlowFitting {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcCableFittingTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcCableFittingTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCableFitting (IfcEntityInstanceData* e);
    IfcCableFitting (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcCableFittingTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCableFitting > list;
};
class IFC_PARSE_API IfcCableSegment : public IfcFlowSegment {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcCableSegmentTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcCableSegmentTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCableSegment (IfcEntityInstanceData* e);
    IfcCableSegment (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcCableSegmentTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCableSegment > list;
};
class IFC_PARSE_API IfcChiller : public IfcEnergyConversionDevice {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcChillerTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcChillerTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcChiller (IfcEntityInstanceData* e);
    IfcChiller (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcChillerTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcChiller > list;
};
class IFC_PARSE_API IfcCoil : public IfcEnergyConversionDevice {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcCoilTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcCoilTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCoil (IfcEntityInstanceData* e);
    IfcCoil (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcCoilTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCoil > list;
};
class IFC_PARSE_API IfcCommunicationsAppliance : public IfcFlowTerminal {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcCommunicationsApplianceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcCommunicationsApplianceTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCommunicationsAppliance (IfcEntityInstanceData* e);
    IfcCommunicationsAppliance (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcCommunicationsApplianceTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCommunicationsAppliance > list;
};
class IFC_PARSE_API IfcCompressor : public IfcFlowMovingDevice {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcCompressorTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcCompressorTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCompressor (IfcEntityInstanceData* e);
    IfcCompressor (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcCompressorTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCompressor > list;
};
class IFC_PARSE_API IfcCondenser : public IfcEnergyConversionDevice {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcCondenserTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcCondenserTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCondenser (IfcEntityInstanceData* e);
    IfcCondenser (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcCondenserTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCondenser > list;
};
class IFC_PARSE_API IfcControllerType : public IfcDistributionControlElementType {
public:
    ::Ifc4::IfcControllerTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcControllerTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcControllerType (IfcEntityInstanceData* e);
    IfcControllerType (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< ::Ifc4::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4::IfcControllerTypeEnum::Value v10_PredefinedType);
    typedef IfcTemplatedEntityList< IfcControllerType > list;
};
class IFC_PARSE_API IfcCooledBeam : public IfcEnergyConversionDevice {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcCooledBeamTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcCooledBeamTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCooledBeam (IfcEntityInstanceData* e);
    IfcCooledBeam (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcCooledBeamTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCooledBeam > list;
};
class IFC_PARSE_API IfcCoolingTower : public IfcEnergyConversionDevice {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcCoolingTowerTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcCoolingTowerTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcCoolingTower (IfcEntityInstanceData* e);
    IfcCoolingTower (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcCoolingTowerTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcCoolingTower > list;
};
class IFC_PARSE_API IfcDamper : public IfcFlowController {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcDamperTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcDamperTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDamper (IfcEntityInstanceData* e);
    IfcDamper (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcDamperTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcDamper > list;
};
class IFC_PARSE_API IfcDistributionChamberElement : public IfcDistributionFlowElement {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcDistributionChamberElementTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcDistributionChamberElementTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDistributionChamberElement (IfcEntityInstanceData* e);
    IfcDistributionChamberElement (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcDistributionChamberElementTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcDistributionChamberElement > list;
};

class IFC_PARSE_API IfcDistributionCircuit : public IfcDistributionSystem {
public:
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDistributionCircuit (IfcEntityInstanceData* e);
    IfcDistributionCircuit (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_LongName, boost::optional< ::Ifc4::IfcDistributionSystemEnum::Value > v7_PredefinedType);
    typedef IfcTemplatedEntityList< IfcDistributionCircuit > list;
};
class IFC_PARSE_API IfcDistributionControlElement : public IfcDistributionElement {
public:
        IfcTemplatedEntityList< IfcRelFlowControlElements >::ptr AssignedToFlowElement() const; // INVERSE IfcRelFlowControlElements::RelatedControlElements
    virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDistributionControlElement (IfcEntityInstanceData* e);
    IfcDistributionControlElement (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag);
    typedef IfcTemplatedEntityList< IfcDistributionControlElement > list;
};
class IFC_PARSE_API IfcDuctFitting : public IfcFlowFitting {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcDuctFittingTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcDuctFittingTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDuctFitting (IfcEntityInstanceData* e);
    IfcDuctFitting (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcDuctFittingTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcDuctFitting > list;
};
class IFC_PARSE_API IfcDuctSegment : public IfcFlowSegment {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcDuctSegmentTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcDuctSegmentTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDuctSegment (IfcEntityInstanceData* e);
    IfcDuctSegment (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcDuctSegmentTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcDuctSegment > list;
};
class IFC_PARSE_API IfcDuctSilencer : public IfcFlowTreatmentDevice {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcDuctSilencerTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcDuctSilencerTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcDuctSilencer (IfcEntityInstanceData* e);
    IfcDuctSilencer (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcDuctSilencerTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcDuctSilencer > list;
};
class IFC_PARSE_API IfcElectricAppliance : public IfcFlowTerminal {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcElectricApplianceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcElectricApplianceTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcElectricAppliance (IfcEntityInstanceData* e);
    IfcElectricAppliance (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcElectricApplianceTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcElectricAppliance > list;
};
class IFC_PARSE_API IfcElectricDistributionBoard : public IfcFlowController {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcElectricDistributionBoardTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcElectricDistributionBoardTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcElectricDistributionBoard (IfcEntityInstanceData* e);
    IfcElectricDistributionBoard (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcElectricDistributionBoardTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcElectricDistributionBoard > list;
};
class IFC_PARSE_API IfcElectricFlowStorageDevice : public IfcFlowStorageDevice {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcElectricFlowStorageDeviceTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcElectricFlowStorageDeviceTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcElectricFlowStorageDevice (IfcEntityInstanceData* e);
    IfcElectricFlowStorageDevice (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcElectricFlowStorageDeviceTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcElectricFlowStorageDevice > list;
};
class IFC_PARSE_API IfcElectricGenerator : public IfcEnergyConversionDevice {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcElectricGeneratorTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcElectricGeneratorTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcElectricGenerator (IfcEntityInstanceData* e);
    IfcElectricGenerator (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcElectricGeneratorTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcElectricGenerator > list;
};
class IFC_PARSE_API IfcElectricMotor : public IfcEnergyConversionDevice {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcElectricMotorTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcElectricMotorTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcElectricMotor (IfcEntityInstanceData* e);
    IfcElectricMotor (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcElectricMotorTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcElectricMotor > list;
};
class IFC_PARSE_API IfcElectricTimeControl : public IfcFlowController {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcElectricTimeControlTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcElectricTimeControlTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcElectricTimeControl (IfcEntityInstanceData* e);
    IfcElectricTimeControl (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcElectricTimeControlTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcElectricTimeControl > list;
};
class IFC_PARSE_API IfcFan : public IfcFlowMovingDevice {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcFanTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcFanTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFan (IfcEntityInstanceData* e);
    IfcFan (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcFanTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcFan > list;
};
class IFC_PARSE_API IfcFilter : public IfcFlowTreatmentDevice {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcFilterTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcFilterTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFilter (IfcEntityInstanceData* e);
    IfcFilter (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcFilterTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcFilter > list;
};
class IFC_PARSE_API IfcFireSuppressionTerminal : public IfcFlowTerminal {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcFireSuppressionTerminalTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcFireSuppressionTerminalTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFireSuppressionTerminal (IfcEntityInstanceData* e);
    IfcFireSuppressionTerminal (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcFireSuppressionTerminalTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcFireSuppressionTerminal > list;
};
class IFC_PARSE_API IfcFlowInstrument : public IfcDistributionControlElement {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcFlowInstrumentTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcFlowInstrumentTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcFlowInstrument (IfcEntityInstanceData* e);
    IfcFlowInstrument (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcFlowInstrumentTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcFlowInstrument > list;
};
class IFC_PARSE_API IfcProtectiveDeviceTrippingUnit : public IfcDistributionControlElement {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcProtectiveDeviceTrippingUnitTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcProtectiveDeviceTrippingUnitTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcProtectiveDeviceTrippingUnit (IfcEntityInstanceData* e);
    IfcProtectiveDeviceTrippingUnit (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcProtectiveDeviceTrippingUnit > list;
};
class IFC_PARSE_API IfcSensor : public IfcDistributionControlElement {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcSensorTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcSensorTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcSensor (IfcEntityInstanceData* e);
    IfcSensor (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcSensorTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcSensor > list;
};
class IFC_PARSE_API IfcUnitaryControlElement : public IfcDistributionControlElement {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcUnitaryControlElementTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcUnitaryControlElementTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcUnitaryControlElement (IfcEntityInstanceData* e);
    IfcUnitaryControlElement (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcUnitaryControlElementTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcUnitaryControlElement > list;
};
class IFC_PARSE_API IfcActuator : public IfcDistributionControlElement {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcActuatorTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcActuatorTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcActuator (IfcEntityInstanceData* e);
    IfcActuator (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcActuatorTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcActuator > list;
};
class IFC_PARSE_API IfcAlarm : public IfcDistributionControlElement {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcAlarmTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcAlarmTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcAlarm (IfcEntityInstanceData* e);
    IfcAlarm (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcAlarmTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcAlarm > list;
};
class IFC_PARSE_API IfcController : public IfcDistributionControlElement {
public:
    bool hasPredefinedType() const;
    ::Ifc4::IfcControllerTypeEnum::Value PredefinedType() const;
    void setPredefinedType(::Ifc4::IfcControllerTypeEnum::Value v);
        virtual const IfcParse::entity& declaration() const;
    static const IfcParse::entity& Class();
    IfcController (IfcEntityInstanceData* e);
    IfcController (std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4::IfcControllerTypeEnum::Value > v9_PredefinedType);
    typedef IfcTemplatedEntityList< IfcController > list;
};

};

#endif